Android中關於鬧鐘提醒的解決方案

2021-08-22 08:15:08 字數 2577 閱讀 8050

來看分析和講解之前,先看看效果吧,效果圖如下:

設定介面

鬧鐘提醒介面

對於alarmmanager裡的方法我就不逐一介紹了,如果都介紹講完估計就天黑了。alarmmanager這個類提供對系統鬧鐘服務的訪問介面。 

在api 19 以前,alarmmanager的常用方法有三個: 

* set(int type,long starttime,pendingintent pi); 

該方法用於設定一次性鬧鐘,第乙個引數表示鬧鐘型別,第二個引數表示鬧鐘執行時間,第三個引數表示鬧鐘響應動作。 

* setrepeating(int type,long starttime,long intervaltime,pendingintent pi); 

該方法用於設定重複鬧鐘,第乙個引數表示鬧鐘型別,第二個引數表示鬧鐘首次執行時間,第三個引數表示鬧鐘兩次執行的間隔時間,第三個引數表示鬧鐘響應動作。 

* setinexactrepeating(int type,long starttime,long intervaltime,pendingintent pi); 

該方法也用於設定重複鬧鐘,與第二個方法相似,不過其兩個鬧鐘執行的間隔時間不是固定的而已。

從api 19開始,alarmmanager的機制都是非準確傳遞,作業系統將會轉換鬧鐘,來最小化喚醒和電池使用。targetsdkversion在api 19之前應用仍將繼續使用以前的行為,所有的鬧鐘在要求準確傳遞的情況下都會準確傳遞。

從api 19以後,則採用了如下方法: 

* setwindow(int, long, long, pendingintent) 

* setexact(int, long, pendingintent) 

從上面的兩個方法我們可以看出,沒有了repeat,就是設定了鬧鐘只能響一次了,而且這兩種方法都可以設定精確的,第乙個相對於第二種方法來說,應該是比較省電的。因為setwindow這個方法允許應用程式利用電池優化來自交貨批處理即使它適度的及時性要求警報。

api 19以後沒有了重複設定,那如果設定乙個鬧鐘每天都準確提醒呢?

手機重啟之後,設定的鬧鐘是否還有效?

應用程式被殺死之後,鬧鐘是否還有效?

說實話,這些問題我相信大家肯定都遇到過,而且解決起來相當費勁,確實是。來看我們如何一一解決吧。

api 19以後如何設定重複鬧鐘

我們知道,我們在使用alarmmanager設定了提醒之後,是通過廣播接收的,設定的提醒時間一到,系統傳送我們自定義的廣播,我們接收到,應用程式提醒。那提醒的時候,我們可以再重新設定一次嘛,這就解決了api 19設定重複鬧鐘的問題。

pendingintent sender = pendingintent.getbroadcast(context, id, intent, pendingintent

.flag_cancel_current);

if (build.version.sdk_int >= build.version_codes.kitkat) else else

}

根據判斷系統版本,使用不同的設定鬧鐘的方法,進行設定。接下來我們通過廣播接收系統發來的通知,進行鬧鐘提醒。

public class loongggalarmreceiver extends broadcastreceiver 

int flag = intent.getintextra("soundorvibrator", 0);

intent clockintent = new intent(context, clockalarmactivity.class);

clockintent.putextra("msg", msg);

clockintent.putextra("flag", flag);

clockintent.addflags(intent.flag_activity_new_task);

context.startactivity(clockintent);}}

通過上面的廣播,我們可以看到,我是通過那個時間間隔是否為零來判斷api 19之後是否是重複鬧鐘,不為0,就再重新設定一遍。我們來一起看看setalarmtime()這個方法。如下:

public static final string alarm_action = "com.loonggg.alarm.clock";

public static void setalarmtime(context context, long timeinmillis, intent intent)

}

就這樣,重複的問題就解決了。

手機重啟之後,鬧鐘失效怎麼解決

對,手機重啟之後,鬧鐘確實是失效了,要想解決這個問題,那就再設定乙個監聽手機重啟的廣播,等手機重啟的時候,再重新設定一遍,即可解決上面的問題。

看看我在手機重啟廣播裡呼叫了我封裝的重新設定鬧鐘的方法。這樣就解決了手機重啟之後,鬧鐘失效的問題。 

注意:廣播需要在清單檔案註冊,小夥伴們別忘記了哈。我在這裡就不貼出**來了。

應用程式被殺死,鬧鐘失效

關於android鬧鐘,設定定時提醒的一點心得

首先在設定提醒之前你需要乙個入口,比如說onclick事件中,在此不做贅述。01 傳送鬧鐘請求 02intent intent newintent mcontext,alarmreceiver.class 03intent.setaction something 04intent.settype s...

android 鬧鐘提醒和電接聽介面效果(上)

效果如上圖所示可以根據個人需要改變圖示和布局,直接上 先看資源檔案 1.drawable目錄下bg circle white.xml 圓形白色背景 2.drawable目錄下ic dismiss.xml 3.drawable目錄下ic fab alarm.xml 4.drawable目錄下ic sn...

Python程式設計練習 簡單的鬧鐘提醒

問題詳情 當前時間為下午2點,你在手機上設定了乙個鬧鐘提醒,10000秒後觸發該鬧鐘,請問鬧鐘鈴聲響起時的具體時間?請用print列印出時間 原始碼 a 10000h,m,s 2,0,0 if a 3600 b a 3600a a 3600 b h b 2 if a 60 b a 60a a 60 ...