`

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" />

 

  • 大小: 162.3 KB
分享到:
评论

相关推荐

    Android-将一个BroadcastReceiver转成一个Observable

    本篇文章将详细探讨如何将一个BroadcastReceiver转换为一个Observable,以便更好地融入到Kotlin的开发环境中。 首先,我们需要理解BroadcastReceiver的基本用法。BroadcastReceiver通常在AndroidManifest.xml中注册...

    BroadcastReceiver

    BroadcastReceiver是Android系统中的一个重要组件,它用于接收和响应系统或应用程序广播的意图(Intent)。在Android中,广播是系统用来在不同的应用组件之间传递消息的一种机制,无需这些组件之间有明确的依赖关系...

    broadcastReceiver

    为了应对这类需求,通常的做法是在`BroadcastReceiver`中启动一个`Service`来处理这些任务。 #### 注册与发送广播 **注册** 注册`BroadcastReceiver`可以通过动态或静态方式进行: - **动态注册**:在代码中通过...

    BroadcastReceiver 一个Android相关源程序

    BroadcastReceiver是Android系统中的一个重要组件,它用于接收和响应系统或应用程序广播的意图(Intent)。在Android中,Intent不仅用于启动活动(Activity)或者服务(Service),还常用于在应用程序之间传递消息。...

    android壁纸更换程序

    在壁纸更换应用中,我们通常会设置一个周期性的闹钟,例如每5秒钟,来启动一个IntentService或者BroadcastReceiver,这两个组件将负责更换壁纸的实际工作。 首先,我们需要在AndroidManifest.xml文件中注册...

    BroadCastReceiver

    在Android系统中,`BroadcastReceiver`(广播接收者)是一种重要的组件,用于监听并响应系统或应用程序发送的各种广播意图(Intent)。广播是Android系统中的一种全局通知机制,它允许应用程序在不相互依赖的情况下...

    android BroadcastReceiver相关测试代码

    - 定义BroadcastReceiver能够接收的广播类型,通过添加不同的action(如ACTION_BATTERY_LOW)、category(如CATEGORY_HOME)和data(如特定的URI)等来指定。 4. **自定义广播**: - 应用程序可以发送自定义广播...

    BroadcastReceiverDemo

    BroadcastReceiver在Android系统中扮演着一个至关重要的角色,它是Android应用程序与系统事件交互的主要途径。在给定的"BroadcastReceiverDemo"示例中,我们将会深入理解BroadcastReceiver的工作原理以及如何通过...

    Android \BroadCastReceiver 简介

    在 Android 系统中,`BroadcastReceiver` 是一个关键组件,它允许应用程序对外部事件进行响应,比如系统级别的事件(如电池状态变化、网络连接状态更新)或者自定义事件(例如应用间的通信)。`BroadcastReceiver` ...

    Android BroadcastReceiver

    创建一个BroadcastReceiver类,重写onReceive()方法来处理接收到的广播意图(Intent)。例如: ```java public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, ...

    BroadcastReceiver的生命周期

    在Android系统中,BroadcastReceiver是应用组件之一,用于接收并响应系统或应用程序广播事件。BroadcastReceiver的生命周期简单而高效,主要涉及两个关键阶段:注册和接收广播。 标题“BroadcastReceiver的生命周期...

    BroadcastReceiver学习(01)

    在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听并响应系统或应用程序发布的广播意图。BroadcastReceiver允许应用在不运行的情况下接收到消息,从而实现后台通信和事件处理。在这个...

    Android学习之BroadcastReceiver总结

    BroadcastReceiver在Android系统中充当一个监听器,当接收到匹配的Intent广播时,会调用其定义的onReceive()方法。BroadcastReceiver有两种注册方式:静态注册和动态注册。 1. 静态注册:在AndroidManifest.xml文件...

    《BroadcastReceiver详解》对应源码

    BroadcastReceiver在Android系统中扮演着一个至关重要的角色,它是Android应用程序间通信(IPC)的一种方式,使得应用可以在没有用户交互的情况下接收系统或其它应用发送的广播消息。在本《BroadcastReceiver详解》...

    Android的BroadcastReceiver简单示例

    本示例将详细介绍如何创建和使用一个简单的BroadcastReceiver。 首先,我们需要创建BroadcastReceiver的子类。在Android Studio中,新建一个Java类,如`MyBroadcastReceiver`,并继承自BroadcastReceiver: ```...

    BroadcastReceiver使用demo

    BroadcastReceiver是Android系统中的一个重要组件,它用于接收并响应系统或应用广播事件。在这个"BroadcastReceiver使用demo"中,我们将深入探讨BroadcastReceiver的工作原理、如何创建与注册、以及如何发送和接收...

    BroadcastReceiver介绍

    1. **有序广播(Ordered Broadcast)**:按照优先级顺序依次发送给每个注册了此广播的接收者,上一个接收者处理完毕后才会传递给下一个接收者。允许接收者拦截或终止广播。 2. **普通广播(Sticky Broadcast)**:同时...

    BroadcastReceiver的小案例

    案例中的链接指向了一个CSDN博客文章,作者通过一个简单的例子来讲解BroadcastReceiver的使用。在该例子中,可能包含创建一个BroadcastReceiver类,重写onReceive()方法来处理接收到的广播。开发者需要在onReceive()...

Global site tag (gtag.js) - Google Analytics