I\'m creating an Android widget that I want to update every night at midnight. I am using an AlarmManager and I need to find out how many milliseconds are left
You could use AlarmManager.RTC instead of AlarmManager.ELAPSED_REALTIME, and just set a Calendar to the time you want :
// Create a calendar for midnight
Calendar todayMidnight = Calendar.getInstance();
todayMidnight.add(Calendar.DATE, 1);
todayMidnight.set(Calendar.HOUR_OF_DAY, 0);
todayMidnight.set(Calendar.MINUTE, 0);
todayMidnight.set(Calendar.SECOND, 0);
// Create an alarm going off at midnight
mAlarmManager.set(
AlarmManager.RTC,
todayMidnight.getTimeInMillis(),
mSrvcPendingingIntent
);