本程序通过AlarmManager周期性的调用某个Service ,从而让系统定时的更换壁纸的功能.更换壁纸的API 是WallPaperManager,它提供了 clear()方法来清除壁纸.还提供了如下方法来设置系统的壁纸.

  1. setBitmap(Bitmap bitmap): 将壁纸设置成bitmap代表的位图.
  2. setResource(int resid): 将壁纸设置为 resid资源代表的图片.
  3. setStream(InputStream data): 将壁纸设置为 data数据代表的图片.

该程序界面只有两个按钮,一个用于启动定时更换壁纸,另一个按钮用于关闭定时更换壁纸.
`package com.test.alarmmanager.changewallpaper;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.test.alarmmanager.R;

/**
* 定时更换壁纸 AlarmManager
*/
public class AlarmChangeWallpaperActivity extends AppCompatActivity {
Button stop,start;

AlarmManager mManager;@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_alarm_change_wallpaper);mManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE);stop = (Button) findViewById(R.id.stop);start = (Button) findViewById(R.id.start);//指定启动的 CngeService 组件Intent intent = new Intent(this,ChangeService.class);//创建 PendingIntent 对象final PendingIntent pi = PendingIntent.getService(this, 0, intent, 0);start.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//每个3秒钟执行pi 代表的组件一次mManager.setRepeating(AlarmManager.RTC_WAKEUP, 0, 3000, pi);start.setEnabled(false);stop.setEnabled(true);Toast.makeText(AlarmChangeWallpaperActivity.this, "定时更换壁纸已启动成功", Toast.LENGTH_SHORT).show();}});stop.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {start.setEnabled(true);stop.setEnabled(false);//取消对 pi 的调度mManager.cancel(pi);}});
}

}
`

package com.test.alarmmanager.changewallpaper;import android.app.Service;
import android.app.WallpaperManager;
import android.content.Intent;
import android.os.IBinder;import com.test.alarmmanager.R;import java.io.IOException;/*** 更换壁纸的组件*/
public class ChangeService extends Service {//定义定时更换的壁纸资源int[] wallpapers = new int[]{R.mipmap.lijiang, R.mipmap.qiao, R.mipmap.shuangta, R.mipmap.shui};//定义系统更换壁纸的管理服务WallpaperManager wManager;//定义当前显示的图片int current = 0;@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {//如果到了最后一张就重新开始if (current >= 4) {current = 0;}//更换壁纸try {wManager.setResource(wallpapers[current++]);} catch (IOException e) {e.printStackTrace();}return START_STICKY;}@Overridepublic void onCreate() {super.onCreate();wManager = WallpaperManager.getInstance(this);}@Overridepublic IBinder onBind(Intent intent) {return null;}}

另外在 AndroidManifest.xml 中加上 权限
<!--更换壁纸的权限-->
<uses-permission android:name="android.permission.SET_WALLPAPER"/>

AlarmManager学习之定时更换壁纸相关推荐

  1. 使用AlarmManager定时更换壁纸

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 更换壁纸要用到WallpaperManager,它提供了clear()方法清除壁纸,还提供了如下方法设置系统的 ...

  2. 我的Android进阶之旅------gt;Android使用AlarmManager全局定时器实现定时更换壁纸

    该DEMO将会通过AlarmManager来周期的调用ChangeService,从而让系统实现定时更换壁纸的功能. 更换壁纸的API为android.app.WallpaperManager,它提供 ...

  3. 我的Android进阶之旅------Android使用AlarmManager全局定时器实现定时更换壁纸

    该DEMO将会通过AlarmManager来周期的调用ChangeService,从而让系统实现定时更换壁纸的功能. 更换壁纸的API为android.app.WallpaperManager,它提供 ...

  4. 使用AlarmManager定时更换壁纸----之二

    import java.io.IOException; import android.app.Service; import android.app.WallpaperManager; import ...

  5. Windows更换壁纸脚本 获取必应壁纸 定时更换壁纸 c#调用.ps1脚本

    想给电脑换上必应的每日壁纸,之前使用的是Bing Wallpaper软件,这个软件每日刷新只能更换为前一天的壁 纸,而且需要自启动更换壁纸,于是打算用定时计划powershell脚本完成这个工作. 1 ...

  6. Python桌面自定义---实现定时更换桌面壁纸

    Python桌面自定义---实现定时更换桌面壁纸 1 效果 2 获取大量壁纸 3 Python代码实现定时更换壁纸 1 效果   大致效果如下,设置过定时更换壁纸的应该都知道是啥场景. 2 获取大量壁 ...

  7. android 通过service 执行AlarmManager 自动更换壁纸

    自动更换壁纸是通过服务在后台进行的,所以 新建一个类继承service服务 先附上详细的解析代码: package com.example.changebz; import java.io.IOExc ...

  8. win10主题更换_利用termuxapi手机定时更换网络随机壁纸;免费申请小米收款宝

    1.再来发一个没有什么软用的教程,利用termux-api手机定时更换网络壁纸. 国产定制系统,有很多主题,更换随机壁纸也相对比较简单.但是对于原生或者类原生系统,如一加,索尼,诺基亚,pixel等等 ...

  9. Android开发之自动更换壁纸

    本程序主要实现了: 1.使用AssetManager将assets目录中的文件复制到SD卡的指定位置 2.使用AlarmManager全局定时器,周期性的启动指定组件切换壁纸 3.使用SharedPr ...

最新文章

  1. sam格式的结构和意义_BAM/SAM文件格式的一些小知识
  2. python爬虫案例-Python爬取租房数据实例,据说可以入门爬虫的小案例!
  3. 网络编程学习笔记(TCP回射服务器程序修订版)
  4. SQL server 2000建立远程连接(局域网)
  5. 游戏美术本地化技巧:不重新创作,几个简单步骤修改出一张完美的游戏配图
  6. Python in worker has different version 3.7 than that in driver 3.6
  7. 用javascript动态调整iframe高度
  8. 使用Python批量下载数据
  9. mysql -d -e_mysql常用函数
  10. 比赛打分系统的计时器数字或滚动抽签数字不显示的原因解惑
  11. LCD1602和12864显示器
  12. gst-launch-1.0
  13. 为什么我们买了股票就不涨被套,股票割肉就飞了?
  14. 用C语言实现两个整数相加(函数的方法)
  15. Mozilla Firefox 全版本下载
  16. 网络编程懒人入门(七):深入浅出,全面理解HTTP协议
  17. 网络传真和传真服务器
  18. 2016NOIP信息学竞赛普及组(北京)一等奖名单
  19. 如何使英文博客内容自动换行
  20. 计算机入门教程 office2007入门,大学计算机基础教程Office2007版.PPT

热门文章

  1. 【视频】PhotoShop专题复习教程
  2. 174267-71-1,DTPA-tetra (t-Bu ester),大环配体化合物介绍
  3. chrome浏览器打开总是自动跳转到百度(新版解决方法)
  4. CSS 样式显示为小手
  5. JavaScript 文本编码解码详解笔记
  6. Google大规模集群管理系统Borg的解读
  7. 2022.08.22 索尼外包面试
  8. 【Java技术系列】爱情36技之记忆永存
  9. python中二进制转8进制_Python-八进制、二进制互转换
  10. 前端框架Svelte放弃TypeScript,JS赢!