AlarmManager学习之定时更换壁纸

来源:互联网 发布:淘宝网上购物的步骤 编辑:程序博客网 时间:2024/06/06 02:39

本程序通过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;@Overrideprotected 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"/>

0 0
原创粉丝点击