`

AlarmManager可定时响起的闹钟

 
阅读更多

三部分

1.MyClock.java(设置界面)

2.CallAlarm.java(BroadcastReceiver)

3.AlarmAlert.java(闹钟响应)

 

1.MyClock.java(设置界面)

 

private EditText etHour1, etMinute1, etHour2, etMinute2;
	private TextView txTime1, txTime2;
	private Button buSet1, buCancel1, buSet2, buCancel2;

	private Calendar calendar = Calendar.getInstance();

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.my_clock);

		etHour1 = (EditText) findViewById(R.id.editText1);
		etMinute1 = (EditText) findViewById(R.id.editText2);
		etHour2 = (EditText) findViewById(R.id.editText3);
		etMinute2 = (EditText) findViewById(R.id.editText4);

		txTime1 = (TextView) findViewById(R.id.textView1);
		txTime2 = (TextView) findViewById(R.id.textView2);

		buSet1 = (Button) findViewById(R.id.button1);
		buCancel1 = (Button) findViewById(R.id.button2);
		buSet2 = (Button) findViewById(R.id.button3);
		buCancel2 = (Button) findViewById(R.id.button4);

		calendar.setTimeInMillis(System.currentTimeMillis());
		etHour1.setText(calendar.get(Calendar.HOUR_OF_DAY) + "");
		etMinute1.setText(calendar.get(Calendar.MINUTE) + "");
		etHour2.setText(calendar.get(Calendar.HOUR_OF_DAY) + "");
		etMinute2.setText(calendar.get(Calendar.MINUTE) + "");

		buSet1.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				int hour = Integer.parseInt(etHour1.getText().toString());
				int minute = Integer.parseInt(etMinute1.getText().toString());
				
				calendar.set(Calendar.HOUR_OF_DAY, hour);
				calendar.set(Calendar.MINUTE, minute);
				calendar.set(Calendar.SECOND, 0);
				calendar.set(Calendar.MILLISECOND, 0);

				Intent intent = new Intent(MyClock.this, CallAlarm.class); /* 建立PendingIntent */
				//注意第二个参数为0
				PendingIntent sender = PendingIntent.getBroadcast(MyClock.this,
						0, intent, 0);
				AlarmManager am;
				am = (AlarmManager) getSystemService(ALARM_SERVICE);
				//设置单次闹钟
				am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender); /* 更新显示的设定闹钟时间 */
				String tmpS = format(hour) + ":" + format(minute);
				txTime1.setText(tmpS); /* 以Toast提示设定已完成 */
				Toast.makeText(MyClock.this, "设定闹钟时间为" + tmpS,
						Toast.LENGTH_SHORT).show();
			}

		});

		buSet2.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				int hour = Integer.parseInt(etHour2.getText().toString());
				int minute = Integer.parseInt(etMinute2.getText().toString());
				
				calendar.set(Calendar.HOUR_OF_DAY, hour);
				calendar.set(Calendar.MINUTE, minute);
				calendar.set(Calendar.SECOND, 0);
				calendar.set(Calendar.MILLISECOND, 0);

				Intent intent = new Intent(MyClock.this, CallAlarm.class); /* 建立PendingIntent */
				//注意第二个参数为1
				PendingIntent sender = PendingIntent.getBroadcast(MyClock.this,
						1, intent, 0);
				AlarmManager am;
				//设置重复闹钟
				am = (AlarmManager) getSystemService(ALARM_SERVICE);
				am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),15000, sender); /* 设定重复闹钟时间 */
				String tmpS = format(hour) + ":" + format(minute);
				txTime2.setText(tmpS); /* 以Toast提示设定已完成 */
				Toast.makeText(MyClock.this, "设定重复闹钟时间为" + tmpS,
						Toast.LENGTH_SHORT).show();
			}

		});
		
		buCancel1.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				Intent intent = new Intent(MyClock.this, CallAlarm.class); /* 建立PendingIntent */
				//注意第二个参数为0
				PendingIntent sender = PendingIntent.getBroadcast(MyClock.this,
						0, intent, 0);
				AlarmManager am;
				am = (AlarmManager) getSystemService(ALARM_SERVICE);
				am.cancel(sender);
				Toast.makeText(MyClock.this, "单次闹钟已解除",
						Toast.LENGTH_SHORT).show();
			}
			
		});
		
		buCancel2.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				Intent intent = new Intent(MyClock.this, CallAlarm.class); /* 建立PendingIntent */
				//注意第二个参数为1
				PendingIntent sender = PendingIntent.getBroadcast(MyClock.this,
						1, intent, 0);
				AlarmManager am;
				am = (AlarmManager) getSystemService(ALARM_SERVICE);
				am.cancel(sender);
				Toast.makeText(MyClock.this, "重复闹钟已解除",
						Toast.LENGTH_SHORT).show();
			}
			
		});
	}

	private String format(int x) {
		String s = "" + x;
		if (s.length() == 1)
			s = "0" + s;
		return s;
	}

 2.CallAlarm.java(BroadcastReceiver)

 

public class CallAlarm extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		Intent i = new Intent(context, AlarmAlert.class);
		i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		context.startActivity(i);
	}
}

 3.AlarmAlert.java(闹钟响应)

 

public class AlarmAlert extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState); /* 跳出的闹铃警示 */
		new AlertDialog.Builder(AlarmAlert.this)
				.setIcon(R.drawable.clock)
				.setTitle("闹钟响了!!")
				.setMessage("赶快起床吧!!!")
				.setPositiveButton("关掉他",
						new DialogInterface.OnClickListener() {
							public void onClick(DialogInterface dialog,
									int whichButton) { /* 关闭Activity */
								AlarmAlert.this.finish();
							}
						}).show();
	}
}
 

manifest.xml

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

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

 
 

 

  • 大小: 23.7 KB
  • 大小: 19.2 KB
分享到:
评论

相关推荐

    实现可定时响起的闹钟----PendingIntent 与 AlarmManager 的运用

    综上所述,`PendingIntent`和`AlarmManager`是实现可定时响起闹钟的关键组件。它们结合使用,可以创建出一个可靠且用户友好的闹钟功能。在实际开发中,理解并熟练掌握这两个组件的用法,对于构建高效、稳定的Android...

    Android定时闹钟完美实现

    在Android平台上,实现一个完美的定时闹钟功能需要深入理解系统级服务、BroadcastReceiver、PendingIntent以及AlarmManager等关键组件的工作原理。以下是对标题和描述中所述知识点的详细说明: 1. **AlarmManager**...

    Android简易闹钟

    综上所述,"Android简易闹钟"项目主要涉及了Android的AlarmManager和BroadcastReceiver两大核心组件,通过它们实现定时任务的调度和执行。在实际开发中,还需要考虑系统的兼容性、用户体验以及电池消耗等因素,以...

    基于Android 手机小闹钟源码

    5. **Notification**:当闹钟响起时,通常会通过Notification向用户展示提醒。开发者需要使用NotificationCompat库创建闹钟通知,并设置其图标、标题、内容以及行为(如取消闹钟或设置为已忽略)。 6. **UI设计**:...

    android闹钟源码安卓时钟闹钟程序源码合集(16例).zip

    1. **AlarmManager**: Android系统的`AlarmManager`服务是实现定时任务的核心组件,如设置闹钟。它可以安排一次性或周期性的事件,并在指定时间通过BroadcastReceiver触发。 2. **BroadcastReceiver**: 当...

    android闹钟Demo

    4. **Service**: 在闹钟应用中,可能需要创建一个`Service`来处理闹钟响起后的逻辑,比如播放铃声、显示通知等。虽然这个Demo没有包含铃声播放,但通常情况下,服务会用来在后台持续运行,直到用户关闭闹钟。 5. **...

    简单的安卓闹钟源码

    4. **Notification**: 闹钟响起时,通常会通过通知(Notification)来提醒用户。Notification是安卓系统提供的一种向用户显示消息的方式,即使应用在后台或完全关闭,用户也能看到提醒。 5. **SharedPreferences**:...

    闹钟安卓源码 AlarmClock 源代码.zip

    在Android系统中,闹钟(AlarmClock)是用户日常生活中不可或缺的功能之一。本篇文章将基于提供的"闹钟安卓源码 AlarmClock 源代码.zip",详细解析Android闹钟应用的源码,带你深入了解其内部工作机制。 首先,我们...

    Android 简单闹钟

    总的来说,创建一个Android简单闹钟应用涉及到AlarmManager的定时触发、BroadcastReceiver的响应机制、MediaPlayer的音频播放以及AudioManager的音量控制。掌握这些知识点,对于开发Android平台上的实用工具应用是...

    安卓闹钟代码

    4. **Notification**: 闹钟响起时,通常会通过Notification向用户展示提醒。Notification是Android系统提供的一种通知机制,可以在状态栏显示图标和消息,让用户知道有新的事件发生。在闹钟应用中,我们可以自定义...

    Android 闹钟源码

    首先,Android 闹钟功能的核心在于`AlarmManager`类,它是Android SDK中的一个系统服务,负责调度定时事件。`AlarmManager`可以设置一次性或周期性的闹钟,并在指定的时间触发广播意图(Broadcast Intent)。在`...

    android 闹钟 源代码

    在Android系统中,闹钟功能是用户日常生活中不可或缺的一部分,它允许用户设定特定时间的提醒或者定时任务。本文将深入探讨Android闹钟功能的源代码实现,并基于提供的"DeskClock"文件名,推测这是一个Android桌面...

    Android闹钟开发

    3. 保持CPU唤醒:使用WakeLock防止设备在闹钟触发时进入休眠状态,保证闹钟准时响起。 4. 选择合适的触发模式:如ELAPSED_REALTIME_WAKEUP或RTC_WAKEUP,前者从系统启动时间计算,后者从协调世界时(UTC)计算,两者都...

    Android 闹钟源码.zip

    1. **AlarmManager服务**:AlarmManager是Android系统提供的用于调度定时任务的服务。开发者可以通过AlarmManager设置一次性或周期性的闹钟,它会根据系统的优化策略在合适的时间触发BroadcastReceiver。 2. **...

    Android课程设计——简易闹钟

    在这个应用中,Service可能会用来持续监控时间,触发闹钟事件,或者在闹钟响起时播放铃声。为了确保服务的稳定性和避免内存泄漏,开发者需要正确地管理和启动Service,同时考虑在适当的时候停止服务。 构建环境方面...

    android闹钟demo 新建闹钟 设置音乐

    4. **Notification**: 闹钟响起时,用户需要接收到通知。`Notification`类用于在状态栏创建提醒,通常包含标题、文本、图标等信息。`NotificationCompat.Builder`简化了创建通知的过程,支持各种兼容性特性。 5. **...

    安卓源码-闹钟.zip

    1. **AlarmManager**: Android系统中的`AlarmManager`服务是负责调度定时任务的核心组件,如设置闹钟。它允许应用程序安排一次性或周期性的操作,即使应用本身没有运行,这些操作也能被触发。 2. **...

    Android Service实现闹钟服务 源代码

    总结一下,本示例通过`Android Service`实现了一个闹钟服务,结合了`AlarmManager`的定时功能和`PendingIntent`的意图触发机制。Service在后台运行,不受用户界面的影响,而AlarmManager确保了即使设备休眠也能在...

    Android 闹钟 Demo

    4. **Notification**: 闹钟响起时,通常需要通过通知栏提醒用户。`Notification`类是构建和管理这些通知的工具。在`MyAlarmClock`中,会有一个创建`Notification`的逻辑,包括设置通知标题、文本、图标、声音和振动...

    简易闹钟应用(课程项目)

    - AlarmManager用于设置定时触发闹钟,它可以精确到秒,确保在指定时间唤醒设备。 4. **用户交互**: - 设置闹钟时,用户可能会通过触摸屏输入,因此需要处理触摸事件。 - 涉及到DialogFragment或者AlertDialog...

Global site tag (gtag.js) - Google Analytics