Расчет времени для будильника Android - PullRequest
1 голос
/ 29 сентября 2011

В Android мы устанавливаем будильник, устанавливая время до его срабатывания в миллисекундах.Есть ли простой способ узнать, сколько миллисекунд есть до определенного времени (чч: мм), или мне просто нужно вычислить математически?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 04 октября 2011

Сохранить текущее время в миллисекундах как

Calandar calendar = Calendar.getInstance();
Long currenttime =  calendar.getTimeInMillis();
Long settime= <your set time in milliseconds>;

Здесь вы можете рассчитать разницу следующим образом:

Long differencetime = settime -  currenttime;
int dif=(int)differencetime/1000;

Здесь вы можете установить время в календаре:

calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND) + dif);

Здесь вы можете установить будильник для установленного времени.

AlarmManager alarmManager1 = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager1.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi1);
1 голос
/ 29 сентября 2011

Проверьте первый аргумент для AlarmManager.set () : С помощью RTC / RTC_WAKEUP вы можете указать фиксированное время, а не истекшее время.

Тем не менее, если вам нужно использовать истекшее время, рассчитать количество миллисекунд, которые должны пройти, довольно тривиально. В худшем случае вы можете использовать классы Calendar и / или Date.

0 голосов
/ 18 декабря 2012

И вот еще один способ получить время в миллисекундах до определенного времени:

Calendar c = Calendar.getInstance();
c.set(c.YEAR, c.MONTH, c.DAY_OF_MONTH, 17, 1, 0); // 5:01 pm
long alarmTime = c.getTimeInMillis();

AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmNotification.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime, 1000 * 60 * 60 * 24, pendingIntent); // Millisec * Second * Minute * Hour // Same time every day
  • RTC_WAKEUP позволяет будильнику по-прежнему активироваться, когда телефон спит.Используйте RTC, если хотите подождать, пока пользователь сам не разбудит телефон.
  • Используйте am.set (), если вы не хотите, чтобы будильник повторялся

Дайте мне знатьесли это поможет.

0 голосов
/ 29 сентября 2011

Дата сейчас = новая Дата (), b = новая Дата (год, месяц, день, час, мин);

b.getTime () - a.getTime ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...