2015年1月26日 星期一

Android - 建立/刪除 多個鬧鐘 (Alarmmanager) 的教學

建立多個鬧鐘



Step 1: 建立鬧鐘接收器


﹣1.1 : 在建立好android project後,自行建立一個.class檔, 名為AlarmReceiver ,
project -> src -> package -> R-click -> New -> Class ,
如下圖:




















-1.2 : 繼成BroadcastReceiver, 並覆寫onReceive方法























- 每當鬧鐘觸發時,便會調用這個接收器,並執行onReceiver中的程序。



-1.3 : 最後在Project的AndroidManifest.xml中註冊這個AlarmReceiver

*緊記要把<receiver></receiver>標纖寫在<application/>中



























Step 2 : 設定和建立多個鬧鐘






- 執行以上程序後,30個鬧鐘便會建立,並同時在2014年1月1日的10時10分10秒 觸發並執行AlarmReceiver中onReceiver的程序。


備註:

-AlarmManager.RTC_WAKEUP :  指鬧鐘在睡眠狀態下會喚醒系統並執行提示功能
-AlarmManager.RTC : 指鬧鐘在睡眠狀態下不可以使用。
-AlarmManager.POWER_OFF_WAKEUP : 指在手機關機的狀態下也能正常進行提示功能。


- 若想每日都重覆觸發鬧鐘,可以使用alarmmanager中的setrepeating
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 86400000, pi);
- System.currenTimeMillis() 會拿取當前系統的時間,單位是毫秒(1秒=1000毫秒)
- 86,400,000 毫秒 = 24小時


- 在此,pi是指一個pendingintent, 即是等待,未決定的意圖,當中有4個參數
參數1:this : 指當前的context, 即activity
參數2:i 是指requestCode , 可以當作每個 pi 攜帶的身份id
參數3:intent : 指將會觸發的activity, 在此, AlarmReceiver.class 便會是我們的最終目標
參數4:4個選擇
- FLAG_CANCEL_CURRENT:如果該PendingIntent已經存在,則會先取消當前的pi,再建立新的pi。
- FLAG_NO_CREATE:如果該PendingIntent不存在,直接返回null而不是創建一个PendingIntent.
- FLAG_ONE_SHOT:該PendingIntent只能用一次,在send()方法執行後,自動取消。
- FLAG_UPDATE_CURRENT:如果該PendingIntent已經存在,則用新傳入的Intent更新當前的數據。




取消多個鬧鐘


取消多個鬧鐘比較容易處理,例如我們先前已經利用FOR LOOP建立了30個鬧鐘,
我們可以再利用FOR LOOP取消這30個鬧鐘:




- 完成:D

沒有留言:

張貼留言