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

添加权限

 

<uses-permission
		android: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

 

<activity
			android:name=".DailyWallpaper"
			android:label="@string/app_name">
		</activity>

		<activity
			android:name=".ChangeBgImage"
			android:label="@string/app_name">
		</activity>

		<receiver
			android:name=".DailyReceiver"
			android:process=":remote" />

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

你可能感兴趣的:(BroadcastReceiver一个星期每天更换不同的壁纸)