2014-01-18 117 views
0

嗨我想創建多個警報。 我得到當天剩餘的小時數,除以所需警報的數量,然後嘗試設置它們之間的時間間隔。Android如何創建多個警報AlarmClock.ACTION_SET_ALARM

因此,例如,如果報警num是2,和用戶在14:00點擊按鈕有左10小時,每個警報之間,因此將10小時/ 2報警=5小時距離

因此,我希望設置2個鬧鐘(一個鬧鐘在19:00,另一個在24:00)

目前我的代碼只設置1報警,似乎忽略多次運行for循環。我不知道爲什麼for循環dosnt創建多個報警

 try { 
      // Current Time 
      Time timeNow = new Time(); 
      timeNow.setToNow(); 
       int timeNowHour = timeNow.hour; 
       int timeNowMins = timeNow.minute; 

      // Hours left in day 
       int hoursInADay = 24; 
       int hoursLeftInDay = hoursInADay - timeNowHour; 

      // Number of alarms 
       int numAlarms = 2; 

      // Calc time between each alarm 
       int alarmDistance = hoursLeftInDay/numAlarms; 

      for(int i = 0; i < numAlarms; i++){ 
       int alarmHour = timeNowHour + alarmDistance * (i+1); 
       Intent alarmIntent = new Intent(AlarmClock.ACTION_SET_ALARM); 
       alarmIntent.putExtra(AlarmClock.EXTRA_MESSAGE, "TEST ALARM"); 
       alarmIntent.putExtra(AlarmClock.EXTRA_HOUR, alarmHour); 
       alarmIntent.putExtra(AlarmClock.EXTRA_MINUTES, timeNowMins); 
       alarmIntent.putExtra(AlarmClock.EXTRA_SKIP_UI, true); 
       alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(alarmIntent); 
      } 
     } catch (Exception e) { 
     } 

感謝

+0

嘗試使用警報管理器... – user2511882

+0

謝謝,但我想了解爲什麼alarmIntent不會在for循環中執行兩次? – user3013243

+0

@ user2511882我是否需要分配一個id或其他意圖使其在for循環中運行多次? – user3013243

回答

0
AlarmManager alarmManager= (AlarmManager)getSystemService(ALARM_SERVICE); 
PendingIntent intent=createPendingResult(ALARM_TIME_ID, new Intent(), 0); 
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,SystemClock.elapsedRealtime() + alarmDistance,alarmDistance, intent); 

而且在onActivityMethod你可以做任何你想要的。 例子:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if (requestCode == ALARM_TIME_ID) { 
Toast.makeText(this, "Alarm is running", Toast.LENGTH_LONG).show(); 
} 

確保將ALARM_TIME_ID設置爲唯一int值。

+0

謝謝。這會在鬧鐘應用程序中設置鬧鐘嗎? (意圖的方式設置一個實際的警報) 或這是爲了執行某些行動時,等待的意圖時間到達?如打開一個活動 – user3013243

+0

是的..這應該爲你設置一個警報 – user2511882

+0

謝謝,但不幸的是我無法得到這個工作。我使用了第一個代碼塊,然後檢查了我的警報列表,但沒有創建新的警報。 – user3013243