Android開發學習之Alarm

Alarm就是我們通常說的鬧鐘,其實,在Android中實現一個簡單的鬧鐘功能並不是很難,原理就是在特定的事件廣播一個Intent,然後系統收到這個廣播以後,做出一個反應( Receive)。在Android中提供瞭四種類型的鬧鐘,分別是ELAPSED_REALTIME(在指定的延時後廣播通知,不喚醒設備)、ELAPSED_REALTIME_WAKEUP(在指定的延時後廣播通知,喚醒設備)、 RTC
(在指定的時刻發送通知,不喚醒設備)、RTC_WAKEUP( 在指定的時刻發送通知,不喚醒設備)。在Android中實現鬧鐘最主要的幾個方法是:

void set(int type, long triggerAtTime, PendingIntent operation)
設置一個鬧鐘
void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
設置一個會重復的鬧鐘
void setInexactRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
設置一個重復鬧鐘的不精確版本
內置的幾個interval為: INTERVAL_FIFTEEN_MINUTES 、INTERVAL_HALF_HOUR、INTERVAL_HOUR、 INTERVAL_HALF_DAY、 INTERVAL_DAY
void cancel(PendingIntent operation)
取消一個鬧鐘

代碼實現片段:

am=(AlarmManager)getSystemService(ALARM_SERVICE);
		Intent intent=new Intent();
		intent.setAction("com.Android.AlarmManager.action.BACK_ACTION");
		intent.putExtra("Message", "學習編程累瞭,該休息一下啦");
		pi=PendingIntent.getBroadcast(MainActivity.this, 0, intent,0);
		BtnOpen=(Button)findViewById(R.id.BtnOpen);
		BtnOpen.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View arg0) 
			{
				//立即提醒
				am.set(AlarmManager.RTC, System.currentTimeMillis(), pi);
				//每隔一分鐘提醒
				//am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 10000, pi);
			}
		});

這樣我們就實現瞭發送廣播的過程,下面我們再來說接收的事情。

我們首先繼承BroadcastReceiver實現一個用以接收發出去的廣播的類Receiver。

public class Receiver extends BroadcastReceiver
{

	@Override
	public void onReceive(Context context, Intent intent) 
	{
		
		Toast.makeText(context, intent.getStringExtra("Message"), Toast.LENGTH_SHORT).show();
	}

}

然後在AndroidMainifest.xml中的application節點中加入下面的內容,完成Receiver的註冊

這樣,一個鬧鐘就做好瞭,如果想在提醒這方面做更多地優化,比如加入鈴聲,可以自行擴展Receiver類,實現更多的功能。

發佈留言