3

アラーム マネージャーを使用して、特定の時間にアラームを割り当てています。現在のシステム時刻より前の時刻を設定すると、アラーム アクションが即座に開始されるという問題が発生しました。この動作を防ぐ方法は? ありがとう

私のコード:

    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

    Intent serviceIntent = new Intent(context,AlarmService.class);
    PendingIntent pendingIntent = PendingIntent.getService(context.getApplicationContext(), 234324243, serviceIntent, 0);

/*sample of setting eariler time
timeAlarm.set(Calendar.YEAR, 2013);
timeAlarm.set(Calendar.MONTH, 10);
timeAlarm.set(Calendar.DAY_OF_MONTH, 13);
timeAlarm.set(Calendar.HOUR_OF_DAY, 12);
timeAlarm.set(Calendar.MINUTE, 9);
timeAlarm.set(Calendar.SECOND, 0);
*/
alarmManager.set(AlarmManager.RTC_WAKEUP, timeAlarm.getTimeInMillis(), pendingIntent);
4

1 に答える 1

7

これは、android アラーム マネージャーがこれによって設計されているためです。時刻が現在のシステム時刻より 1 日以上早い場合は、時刻を変更できます。このような:

Calendar c = Calendar.getInstance();        
c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, second);

if (c.getTimeInMillis() < System.currentTimeMillis()){
    c.add(Calendar.DAY_OF_MONTH, 1);
}
于 2013-11-13T07:04:18.783 に答える