2017-07-07 119 views
0

我知道關於AlarmClockAlarmManager以及如何設置鬧鐘,啓動應用程序等有很多討論。但是,我還沒有找到完美的答案以下場景。當鬧鐘在自定義鬧鐘應用程序中關閉時啓動自定義活動Android

在我的Android鬧鐘應用我發展,我想設置特定時間的報警,通過在其他設置,如玩什麼歌,振動等

1)什麼我應該用它來做到這一點嗎? AlarmClockAlarmManager

2)現在,當警報在指定時間熄滅時,我該如何告訴它啓動我的自定義活動?再次是AlarmClockAlarmManager的問題。

這個自定義活動將顯示時間,並有按鈕說,「睡眠」或「貪睡」,用戶可以按(當任何其他鬧鐘應用程序中的警報消失時發生什麼)。我不想啓動我的鬧鐘應用程序,只有當鬧鐘響起時才顯示一個屏幕。當用戶點擊一個按鈕時,我想關閉該自定義活動,並且不打開與該應用程序相關的其他任何內容。我喜歡它,以便用戶可以回去做他們正在做的事情。

+0

如果你打算downvote請評論爲什麼這樣我可以改善問題:) – Michael

回答

0

我認爲你可以用AlarmManager做你的工作。正如你所說,如果你想在特定的時間設置鬧鐘,你應該使用setRepeating()。如果您想在報警觸發時喚醒您的設備,請選擇RTC_WAKEUP類型,如果您不想要那種類型的RTC類型。您可以定義一個PendingIntent,無論您想要做什麼(播放聲音,光線和振動),您都可以在此活動中執行此操作。您應該在該(YOUR_ACTIVITY)佈局中設計佈局,並將按鈕設置爲延後/取消鬧鐘。

private AlarmManager alarmMgr; 
private PendingIntent alarmIntent; 

Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(System.currentTimeMillis()); 
calendar.set(Calendar.HOUR_OF_DAY, 14); 

alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(context, YOUR_ACTIVITY.class); 
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 

alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, 
     calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent); 

上面代碼中設置鬧鐘爲14:00,有一天,這意味着它會被解僱每天14:00和運行YOUR_ACTIVITY直到您取消它的時間間隔。這是Google Android Documents中的一個示例。