2011-10-20 9 views
1

私はすべての日のために同じ時間繰り返しアラームを呼び出す必要があるアラームアプリケーションを開発しています。私は私だけではない、すべて日間、午前10時現在の日を呼び出しています。このコードを使用することにより、アラームを起動するためにAndroidでアラームマネージャを使用して毎日繰り返しアラームを取得するにはどうすればよいですか?

c = Calendar.getInstance(); 

    c.set(Calendar.HOUR_OF_DAY,10); 
    c.set(Calendar.MINUTE, 0); 
    c.set(Calendar.SECOND, 0); 
    c.set(Calendar.MILLISECOND, 0); 

Intent intent = new Intent(HomeActivity.this, MyAlarmService.class); 
      PendingIntent pendingIntent = PendingIntent.getService(HomeActivity.this, 123123, intent, 0); 
      alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, c.getTimeInMillis(), (24*60*60*1000), pendingIntent); 

をコードを使用しています。これを行う別の方法がありますか?

+0

常識です! –

答えて

1
  1. 更新時間を(多分、アラームを停止する)、および5分ごとのアラーム鳴らす:

    Intent intent = new Intent(this, this.getClass()); 
    PendingIntent pendingIntent = 
        PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    
    long currentTimeMillis = System.currentTimeMillis(); 
    long nextUpdateTimeMillis = currentTimeMillis + 5 * DateUtils.MINUTE_IN_MILLIS; 
    Time nextUpdateTime = new Time(); 
    nextUpdateTime.set(nextUpdateTimeMillis); 
    
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
        alarmManager.set(AlarmManager.RTC, nextUpdateTimeMillis, pendingIntent); 
    
  2. セットアラームは毎日のために働く(例えば、8 am-18pm)

    // if not the time to ring, set to the next day 
    if (nextUpdateTime.hour < 8 || nextUpdateTime.hour >= 18) 
    { 
        nextUpdateTime.hour = 8; 
        nextUpdateTime.minute = 0; 
        nextUpdateTime.second = 0; 
        nextUpdateTimeMillis = nextUpdateTime.toMillis(false) + DateUtils.DAY_IN_MILLIS; 
    } 
    else{ 
        // call your alarm 
    } 
    
0

クラスMyAlarmServiceでは、アラームがオンになっているときにアラームをリセットします。アラームを設定するときにも、意図にMyAlarmServiceの値を送信することができます