`

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 的运用

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google+Android+SDK开发范例大全

    SEND 6.8 存储卡剩余多少容量——Environment加StatFs 6.9 访问本机内存与存储卡——File的创建与删除 6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——...

    Google Android SDK开发范例大全的目录

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 ...

    Google Android SDK 开发范例大全01

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google Android SDK 开发范例大全02

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google Android sdk 开发范例大全 部分章节代码

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

    Google Android SDK开发范例大全(完整版)

    6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...

Global site tag (gtag.js) - Google Analytics