2016-01-02 32 views
0

是新的Android應用程序開發使用AlarmClock的或者Alarmmanager添加報警,根據用戶輸入

需要打開從用戶輸入數據的報警..

我看了一下鬧鐘:哪些可以用來設置報警默認時鐘應用程序,它不能被抵消了。

Alarmmanager:用於觸發在指定的時間的事件,但它的功能集或取消報警

理念:用AlarmClock的設置報警並取消報警usi ng Alarmmanager ..有可能這樣做

我該怎麼做。幫我出去

+0

所以,如果我正確地得到你,你打算使用'AlarmClock'實例設置一個鬧鐘,並使用'AlarmManager'類的實例取消同樣的鬧鐘? –

+0

是的,Parag Kadam。有沒有辦法做到這一點,搜查但找不到 – Venu

回答

0

要創建你可以做這樣的事情了警鐘:

 //... some code here 

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      // if you don't want the alarm to go off even in Doze mode, use 
      // setExact instead 
      mAlarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, 
        alarmTimeMillis, 
        getPendingIntent(context); 
     } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
      mAlarmManager.setExact(AlarmManager.RTC_WAKEUP, 
        alarmTimeMillis, 
        getPendingIntent(context); 
     } else { 
      // Inexact time was only introduced in API 19+. Before that, all was exact time 
      mAlarmManager.set(AlarmManager.RTC_WAKEUP, 
        alarmTimeMillis, 
        getPendingIntent(context); 
     } 

這裏有些話。在API 19之前,所有報警都是準確的,這就是我們使用set方法的原因。在API 19及之後,引入了不精確的警報,這就是爲什麼我們需要使用setExact對於確切的警報和set對於不精確的警報。 在API 23中,引入了打盹模式。在該模式下,如果手機已處於睡眠模式,則使用setsetExact設置的任何鬧鐘都不會關閉。要強制設備從打盹並觸發報警,用setExactAndAllowWhileIdle

的方法getPendingIntent可能是這樣的:

private PendingIntent getPendingIntent(Context context) { 
     int requestCode = 69; 
     return PendingIntent.getBroadcast(context, requestCode, 
       new Intent(mContext, AlarmReceiver.class), 
       PendingIntent.FLAG_UPDATE_CURRENT); 
    } 

當然,你可以把臨時演員到意圖如常。

要取消報警,你只需要創建一個具有相同requestCode掛起的意圖,並呼籲取消報警經理是這樣的:

(AlarmManager) context.getSystemService(Context.ALARM_SERVICE) 
         .cancel(getPendingIntent(context)); 

請介意,上面的電話是遠遠不夠完善等等,請勿按原樣使用它。

0

要設置鬧鐘,你需要爲pendingIndent創建一個輸入意圖。這個pendingIntent將進入警報管理器。

要取消報警,創建的PendingIntent將同requestCode/ID,然後調用alarmanager.cancel()

有關如何設置報警馬槽,請谷歌的例子完整的代碼。有很多,幾乎這些例子每一個正在-例子