2016-07-28 66 views
1

所以我有一個服務,我希望能夠聽到鬧鈴,並在鬧鈴響起時暫時關閉/暫停,然後再恢復。我的服務所做的是在屏幕頂部使用WindowManager擴展視圖 - 這是一個鎖屏應用程序..但是,因此,它始終處於最重要的位置。在鬧鈴期間暫停服務,之後恢復

這很容易實現傳入使用PhoneStateListener進行調用,但我沒有看到任何方便的警報 - 我想我可以實現一個AlarmManager.onAlarmListener,一旦警報響起就關閉我的服務,但我不確定如何將它重新打開之後。

感謝您的幫助!

回答

1

終於想通了!

你可以得到一個報警的時間,像這樣:

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
    alarmManager.getNextAlarmClock().getTriggerTime() 

所以才添加到您的服務onCreate方法:

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
     if (alarmManager.getNextAlarmClock() != null) { 
      UIHandler.postAtTime(new Runnable() { 
       @Override 
       public void run() { 
        stopSelf(); 
       } 
      }, alarmManager.getNextAlarmClock().getTriggerTime()); 
     } 

本質上講它是獲取時間以毫秒爲單位的下一個警報,然後在下一次警報發佈時運行一次。

我相信它只適用於API 21+