更换壁纸要用到WallpaperManager,它提供了clear()方法清除壁纸,还提供了如下方法设置系统的壁纸:
setBitmap(Bitmap bitmap):将壁纸设置为bitmap所代表的位图。
setResource(int resid):将壁纸设置为resid资源所代表的图片。
setStream(InputStream data):将壁纸设置为data数据所代表的图片。
本示例通过AlarmManager来周期性地调用某个Service,从而让系统实现定时更换壁纸的功能。代码如下:
Activity:
package com.guyun.activity;
import com.guyun.alarmchangewallpaper.R;
import com.guyun.service.ChangeWallpaperService;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class ChangeWallpaperActivity extends Activity {
//定义AlarmManager对象
private AlarmManager aManager;
private Button start,stop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start=(Button) findViewById(R.id.main_btn_start);
stop=(Button) findViewById(R.id.main_btn_stop);
//获取AlarmManager服务对象
aManager=(AlarmManager) getSystemService(Service.ALARM_SERVICE);
//指定要启动的Service组件
Intent intent=new Intent(ChangeWallpaperActivity.this,ChangeWallpaperService.class);
//创建PendingIntent对象
final PendingIntent pi=PendingIntent.getService(ChangeWallpaperActivity.this,0, intent, 0);
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.i("onClick", "进入onClick");
//设置每隔3秒执行pi代表的组件一次
aManager.setRepeating(AlarmManager.RTC_WAKEUP, 0, 3000, pi);
start.setEnabled(false);
stop.setEnabled(true);
Toast.makeText(ChangeWallpaperActivity.this, "壁纸定时更换启动成功啦", Toast.LENGTH_SHORT).show();
}
});
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
start.setEnabled(true);
stop.setEnabled(false);
//取消对pi的调度
aManager.cancel(pi);
}
});
}
}
Service:
package com.guyun.service;
import java.io.IOException;
import com.guyun.alarmchangewallpaper.R;
import android.app.Service;
import android.app.WallpaperManager;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class ChangeWallpaperService extends Service {
// 定义定时更换壁纸的资源
int[] wallpapers = new int[] { R.drawable.whatsnew_fornew_01,
R.drawable.whatsnew_fornew_02, R.drawable.whatsnew_fornew_03,
R.drawable.whatsnew_fornew_04, R.drawable.whatsnew_fornew_05 };
// 定义系统的壁纸管理服务
WallpaperManager wManager;
// 定义当前所显示的壁纸
int current = 0;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("onStartCommand", "进入onStartCommand");
// 如果到了最后一张重新开始
if (current >= wallpapers.length) {
current = 0;
}
try {
// 改变壁纸
wManager.setResource(wallpapers[current++]);
} catch (IOException e) {
e.printStackTrace();
}
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onCreate() {
super.onCreate();
Log.i("onCreate", "进入onCreate");
// 初始化WallpaperManager对象
wManager = WallpaperManager.getInstance(this);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
加上如下权限:
<uses-permission android:name="android.permission.SET_WALLPAPER" />
本程序还可以和之前做过的SD卡文件浏览器结合起来,让用户可以添加SD卡中的图片作为可供更换的壁纸图片。
分享到:
相关推荐
使用AlarmManager多次定时提醒 实现多次定时提醒的原理是: 在添加时间点后, 需要将所添加的时间点保存在文件或数据库中。
android AlarmManager 多个 定时 重复提醒,我这篇博文的源码。
app进程中,需要实现一个定时任务,只要设备处于开机状态,每隔半个小时,就需要定时向服务器上传一次位置信息,并且只要是有网络和获取到GPS信号,进程不能死,如果进程死掉了,需要自动重启。
在Android平台,如何使用AlarmManager启动广播BroeadReceiver 、服务Service 、页面Activity。
AlarmManager定时设置提醒,发送通知
由于锁屏后CPU休眠,导致心跳包线程被挂起,所以尝试使用alarmManager定时唤醒Service发送心跳包。 以下是开启alarmManager的代码 //开启轮询服务 public static void startPollingService(Context context, int...
本例子通过AlarmManager 来周期性的调用一个service,从而达到调用SD卡中图片来更换壁纸的功能,更换壁纸的API是WallpaperManager setBitmap(Bitmap bitmap):将壁纸设置bitmap所代表的位图 setResource(int resid):...
本示例通过AlarmManager 全局定时器 实现 定时更换壁纸
本文将讲解一下如何使用AlarmManager实现定时提醒功能。 闹钟配置 周期闹钟 Intent intent = new Intent(); intent.setAction(GlobalValues.TIMER_ACTION_REPEATING); PendingIntent sender = PendingIntent....
android中定时有很多种是实现,常见的Handler 与Thread的结合,handler.postDelayed ,以及要使用的AlarmManger 等都可以实现定时任务的执行,但是使用场景却大不相同,这里主要是怎么用AlarmManager实现定时任务。...
这篇文章使用AlarmManager实现了Android定时后台循环任务。使用场景:项目需要app每隔一段时间就去服务端请求一次接口,从而更新本地保存的信息。 AlarmManager简介 AlarmManager是Android中常用的一种系统级别的...
Android中使用AlarmManager设置闹钟示例代码
一个AlarmManger 多次定时提醒 代码压缩包
android安卓闹铃服务AlarmManager的使用
Andorid AlarmManager的使用,通过这个实例可以变换实现闹钟功能
使用AlarmManager,双进程守护,MarsDaemon第三方库,AppWiget保活
AlarmManager提供了访问系统闹钟的服务。它允许你安排你的应用在未来某个时间点运行。这就相当于定时任务。对于少于60s的定时任务,不推荐使用AlarmManager,可以使用更高效的的Handler来处理频发的任务。
使用AlarmManager实现Android定时任务(闹钟),解决了Android版本更新导致的定时不准确问题。Demo源码
让手机每隔5秒自动更换壁纸,AlarmManager的使用方法