1

最も近い時間に AlarmManager を開始するには? たとえば、ユーザーがボタンをクリックして時刻が 12:32 の場合、13:00 にサービスを開始し、1 時間ごとに繰り返したい場合、このコードを試しましたが、機能しません。1 時間後に AlarmManager を開始します。時刻が 12:32 の場合、13:32 にサービスを開始します。

Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY)+1);

        AlarmManager alarm = (AlarmManager)myService.this.getSystemService(Context.ALARM_SERVICE);
        Intent i = new Intent(myService.this, AlarmReceiver.class);
        PendingIntent pIntent = PendingIntent.getBroadcast(BatteryService.this, 0, i, 0);
        alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 1000*60*60, pIntent);
4

3 に答える 3

5

カレンダー インスタンスを作成すると、その時刻は現在の時刻になります。あなたの例では12:32です。次に、1 日の時間に 1 を追加します。13:32になりました。分 (および秒) を 0 に設定する必要があります。

cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);  // well ...
于 2012-04-23T08:30:07.210 に答える
0

分に基づいて四捨五入してみてください...もちろん、これには現在の時刻を取得する必要があります

于 2012-04-23T07:31:58.020 に答える