首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

BroadcastReceiver一个礼拜每天更换不同的壁纸

2012-07-18 
BroadcastReceiver一个星期每天更换不同的壁纸添加权限?uses-permissionandroid:nameandroid.permissio

BroadcastReceiver一个星期每天更换不同的壁纸

添加权限

?

<uses-permissionandroid:name="android.permission.SET_WALLPAPER"></uses-permission>
?

三部分

1.DailyWallpaper.java

2.DailyReceiver.java(BroadcastReceiver)

3.ChangeBgImage.java

?

DailyWallpaper.java

?

public class DailyWallpaper extends Activity {private Button save;private Button cancel;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.daily_wallpaper);save = (Button) findViewById(R.id.button1);cancel = (Button) findViewById(R.id.button2);save.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {/* 取得服务启动后几天的0点0分0秒的millsTime */Calendar calendar = Calendar.getInstance();calendar.add(Calendar.DATE, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);long startTime = calendar.getTimeInMillis();/* 重复执行的间隔时间 */long repeatTime = 24 * 60 * 60 * 1000;/* 将更换桌布的排程叵丈AlarmManager中 */Intent intent = new Intent(DailyWallpaper.this,DailyReceiver.class);PendingIntent sender = PendingIntent.getBroadcast(DailyWallpaper.this, 0, intent, 0);AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);/* * setRepeating()让排程重复执行 startTime为开始执行时间 repeatTime为重复执行间隔 * AlarmManager.RTC?使服务休眠时仍然会执行 */am.setRepeating(AlarmManager.RTC, startTime, repeatTime, sender);Toast.makeText(DailyWallpaper.this, "服务已启动", Toast.LENGTH_SHORT).show();/* 启动后马勺因执行几次换桌布的程序以更换今天的桌布 */Intent intent2 = new Intent(DailyWallpaper.this , ChangeBgImage.class);startActivity(intent2);}});cancel.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {Intent intent = new Intent(DailyWallpaper.this, DailyReceiver.class);PendingIntent sender = PendingIntent.getBroadcast(DailyWallpaper.this,0, intent, 0);/* 由AlarmManager中移除排程 */AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);am.cancel(sender);/* 以Toast提示已终止 */Toast.makeText(DailyWallpaper.this, "服务已终止", Toast.LENGTH_SHORT).show();}});}

?DailyReceiver.java(BroadcastReceiver)

?

public class DailyReceiver extends BroadcastReceiver {public void onReceive(Context context, Intent intent) {Intent i = new Intent(context, ChangeBgImage.class);Bundle bundleRet = new Bundle();bundleRet.putString("STR_CALLER", "");i.putExtras(bundleRet);i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(i);}}

?ChangeBgImage.java

?

public class ChangeBgImage extends Activity {public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);/* 取得今天是星期几 */    Calendar ca=Calendar.getInstance();    int dayOfWeek=ca.get(Calendar.DAY_OF_WEEK)-1;Bitmap bitmap = null;switch(dayOfWeek){case 0:bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.b01);break;case 1:bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.b02);break;case 2:bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.b03);break;case 3:bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.b04);break;case 4:bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.b05);break;case 5:bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.b06);break;case 6:bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.b07);break;}try {super.setWallpaper(bitmap);} catch (IOException e) {e.printStackTrace();}finish();}}

manifest.xml

?

<activityandroid:name=".DailyWallpaper"android:label="@string/app_name"></activity><activityandroid:name=".ChangeBgImage"android:label="@string/app_name"></activity><receiverandroid:name=".DailyReceiver"android:process=":remote" />

?
BroadcastReceiver一个礼拜每天更换不同的壁纸

热点排行