2016-09-14 22 views
2

私はこの要件を非常に長い間探してきましたが、何も見つかりませんでした。だから私はあなたからの助けを求めています。特定の期間にアラームを設定するにはどうすればよいですか?

私は、特定の日付範囲でアラームマネージャを設定する必要があるという要件があります。 2016年9月28日から2016年9月30日までの特定の時間は13:00と言います。

現在、私は特定の日に設定することができます。しかし、日付範囲ではありません。私の現在は以下の通りです。

AlarmManager objAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);    
     Calendar calendar = Calendar.getInstance(); 
     calendar.set(Calendar.YEAR, 2016); 
     calendar.set(Calendar.MONTH, 8); 
     calendar.set(Calendar.DAY_OF_MONTH, 28); 
     calendar.set(Calendar.HOUR_OF_DAY, 13); 
     calendar.set(Calendar.MINUTE, 00); 
     calendar.set(Calendar.SECOND, 0); 
     calendar.set(Calendar.MILLISECOND, 0); 
     calendar.set(Calendar.AM_PM, Calendar.AM);   

     Intent alamShowIntent = new Intent(this,AlarmActivity.class); 
     PendingIntent alarmPendingIntent = PendingIntent.getActivity(this, 0,alamShowIntent,0); 

     objAlarmManager.set(AlarmManager.RTC_WAKEUP,objCalendar.getTimeInMillis(), alarmPendingIntent); 

この点で私を助けてください。

日付の範囲の間のデルタを特定し、その特定の時間、何日も何度もアラームを繰り返すことを考えています。これは正しいアプローチですか?

よろしく、 シャラス

答えて

0
  1. は13.00hで9月28日、2016年の最初のアラームをスケジュールします。
  2. アラームが発生したときに実行されるコードでは、アラームを再スケジュールします。明日同じ時刻になるように、現在の日付を使用して24時間を追加します。
  3. が9月30日を過ぎない限り、ステップ2を実行します。アラームは再スケジュールされず、もはや起動しません。

このアプローチはsetRepeating()のような繰り返しアラームを使用ないする必要があります。これは、アンドゥ6.0+のために開発している場合に便利ですが、繰り返しアラームはドーズモードでは起動しないためです。

0

新しいアラームを設定しているときに、アラームに有効期限を設定する方法はありません。 アラームの有効期限を意図しておくことをお勧めします。つまり、alamShowIntent & setRepeating()アラームを必要な時間だけ使用します。すべてのアラームイベントで、終了日をチェックすると、アラームが発生した時間よりも大きくなる必要があります。もしそうなら、あなたの仕事を&にしてください。そうでなければ、同じPendingIntentでアラームをキャンセルしてください。

関連する問題