AlarmManager学习之定时更换壁纸
2016-07-01 09:47
330 查看
本程序通过AlarmManager周期性的调用某个Service ,从而让系统定时的更换壁纸的功能.更换壁纸的API 是WallPaperManager,它提供了 clear()方法来清除壁纸.还提供了如下方法来设置系统的壁纸.
setBitmap(Bitmap bitmap): 将壁纸设置成bitmap代表的位图.
setResource(int resid): 将壁纸设置为 resid资源代表的图片.
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;
}
`
另外在 AndroidManifest.xml 中加上 权限
setBitmap(Bitmap bitmap): 将壁纸设置成bitmap代表的位图.
setResource(int resid): 将壁纸设置为 resid资源代表的图片.
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() { @Override public 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() { @Override public 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; @Override public 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; } @Override public void onCreate() { super.onCreate(); wManager = WallpaperManager.getInstance(this); } @Override public IBinder onBind(Intent intent) { return null; } }
另外在 AndroidManifest.xml 中加上 权限
<!--更换壁纸的权限--> <uses-permission android:name="android.permission.SET_WALLPAPER"/>
相关文章推荐
- C#实现位图转换成图标的方法
- C++实现位图排序实例
- C语言实现的bitmap位图代码分享
- 数据结构之位图(bitmap)详解
- 转:抗锯齿方法两种(其一:paint.setAntiAlias(ture);paint.setBitmapFilter(true))
- 位图索引 btree索引
- 位图排序算法的一个实践
- IOS处理位图
- 学习opencv——图像颜色分布直方图
- 学习opencv——sift与suft的应用
- vc 将位图多余部分变为透明
- 2.1-2.4.文件读取时间测试
- (nehe教程)不使用auxDIBImageLoad,加载bmp文件
- 双缓冲绘图
- 对图像进行FFT
- 数字图像处理,bmp位图灰度化
- 对图像进行FFT
- Android开发之网络图片查看方法BitmapFactory.decodeStream()学习01
- Bmp学习
- AS3.0视觉特效:像素风格图像切换