1.定时更换屏幕壁纸
(1) 添加可以更换壁纸的权限
<uses-permission android:name="android.permission.SET_WALLPAPER" />
(2)服务类,用于壁纸的更换
public class ChangeService extends Service {
//定义定时更新的壁纸资源
int[] wallpapers = new int[] {
R.drawable._picture01,
R.drawable._picture02,
R.drawable._picture03,
R.drawable._picture04
};
//定义系统的壁纸管理服务
WallpaperManager wManager;
//定义当前所显示的壁纸
int current = 0;
@Override
public void onStart(Intent intent, int startId)
{
//如果到了最后一张,系统重头开始
if(current >= 4)
current = 0;
try
{
//改变壁纸
wManager.setResource(wallpapers[current++]);
}
catch(Exception e)
{
e.printStackTrace();
}
super.onStart(intent, startId);
}
//onCreate()函数只有在第一次启动服务的时候会被 调用
@Override
public void onCreate()
{
super.onCreate();
//初始化WallpaperManager
wManager = WallpaperManager.getInstance(this);
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}
(3)activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.qd.alarmmanager.MainActivity">
<Button
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始"/>
<Button
android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止"/>
</LinearLayout>
(4)实现
public class MainActivity extends AppCompatActivity {
// 定义AlarmManager对象
AlarmManager aManager;
Button start, stop;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
aManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE);
// 指定启动ChangeService组件
Intent intent = new Intent(MainActivity.this,
ChangeService.class);
// 创建PendingIntent对象
final PendingIntent pi = PendingIntent.getService(
MainActivity.this, 0, intent, 0);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// 设置每5秒执行pi代表的组件一次
aManager.setRepeating(AlarmManager.RTC_WAKEUP, 0, 5000, pi);
start.setEnabled(false);
stop.setEnabled(true);
Toast.makeText(MainActivity.this, "壁纸定时更换启动成功啦",Toast.LENGTH_LONG)
.show();
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
start.setEnabled(true);
stop.setEnabled(false);
//取消对pi的调度
aManager.cancel(pi);
}
});
}
}