本程序通过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. 非线性回归模型java_R中的非线性多元回归
  2. Java自带的线程池Executors.newFixedThreadPool
  3. 1.1.1.1校园网_还担心断网?快试试清华校园网自动连接程序
  4. 多线程编程 RW_LOCK 读写锁
  5. 聚类方法:DBSCAN算法研究
  6. tyvj1194 划分大理石
  7. web前端大作业:游戏动漫网页设计(HTML+CSS+JavaScript)
  8. 2015年-读书笔记
  9. 东南大学成贤学院计算机类怎么样,东南大学成贤学院什么专业比较好 怎么选择专业...
  10. 我们将迎来另一个 VR 寒冬吗?
  11. 【对流氓软件说ByeBye】—— 恶意软件删除工具
  12. 【正点原子I.MX6U-MINI应用篇】6、嵌入式Linux在LCD屏幕上显示字符
  13. 2017工业互联网峰会 | 天拓四方助力中国工业生产、制造业转型升级
  14. GNSS位移监测站里的RTK差分定位技术是什么?
  15. 江苏省苏州市工业园与市区医保公积金合并线上操作指南
  16. Java 面试问题总结(详细) —— MySql 模块(MySQL高级)(建议收藏)
  17. CCF 201709-2 公共钥匙盒
  18. 孙宏斌频变“脸谱” 乐视网该何去何从?
  19. [转]2004手机游戏年终点评
  20. 虚拟+现实:半实物仿真测试有效保证嵌入式系统的健壮与可靠

热门文章

  1. StringUtils. indexOf 用法
  2. 分光测色仪测量物体哪些值?测量数据怎么看?
  3. JavaScript设计模式——建造者模式
  4. Php创建文件夹mkdir,PHP mkdir创建文件夹实现方法解析
  5. C++11中的异步操作
  6. 【C/C++服务器开发】事件驱动、事件驱动架构、事件驱动编程及设计模式
  7. 多目标差分进化算法(Matlab代码实现)
  8. 我想试试一篇把svm搞的清白
  9. 【死磕Java并发】-----J.U.C之线程池:线程池的基础架构
  10. VI设计有四大重要的组成部分