X-Git-Url: http://git.osdn.net/view?p=android-x86%2Fpackages-apps-DeskClock.git;a=blobdiff_plain;f=src%2Fcom%2Fandroid%2Fdeskclock%2FDeskClock.java;h=e45f38a1f04b7d0048e18b8ef215a18b28804575;hp=2df4d0b5a6fb83f7b15ac9cebca7e243f8344952;hb=889ca057eb9aa2a6cce0fff87e1e118926815c88;hpb=bf25a2cc3b00c085b8207443e9a0419108536aef diff --git a/src/com/android/deskclock/DeskClock.java b/src/com/android/deskclock/DeskClock.java index 2df4d0b..e45f38a 100644 --- a/src/com/android/deskclock/DeskClock.java +++ b/src/com/android/deskclock/DeskClock.java @@ -174,7 +174,8 @@ public class DeskClock extends Activity { @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); - if (Intent.ACTION_DATE_CHANGED.equals(action)) { + if (DEBUG) Log.d(LOG_TAG, "mIntentReceiver.onReceive: action=" + action + ", intent=" + intent); + if (Intent.ACTION_DATE_CHANGED.equals(action) || ACTION_MIDNIGHT.equals(action)) { refreshDate(); } else if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { handleBatteryUpdate( @@ -579,10 +580,17 @@ public class DeskClock extends Activity { // Elaborate mechanism to find out when the day rolls over Calendar today = Calendar.getInstance(); + today.set(Calendar.HOUR_OF_DAY, 0); + today.set(Calendar.MINUTE, 0); + today.set(Calendar.SECOND, 0); today.add(Calendar.DATE, 1); + long alarmTimeUTC = today.getTimeInMillis() + today.get(Calendar.ZONE_OFFSET); mMidnightIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_MIDNIGHT), 0); AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); - am.setRepeating(AlarmManager.RTC, today.getTimeInMillis(), AlarmManager.INTERVAL_DAY, mMidnightIntent); + am.setRepeating(AlarmManager.RTC, alarmTimeUTC, AlarmManager.INTERVAL_DAY, mMidnightIntent); + if (DEBUG) Log.d(LOG_TAG, "set repeating midnight event at " + + alarmTimeUTC + " repeating every " + + AlarmManager.INTERVAL_DAY + " with intent: " + mMidnightIntent); // un-dim when resuming mDimmed = false;