Настройка AlarmManager для другого часового пояса - PullRequest
0 голосов
/ 20 сентября 2018

Я хотел бы настроить диспетчер тревог для другого часового пояса.Я хотел бы, чтобы будильник включал уведомление каждый раз, когда наступило 10:20 по Нью-Йоркскому времени.Можно ли кодировать, как показано ниже?

private void configureDailyAlarm(Context context) {

        TimeZone USTimeZone = TimeZone.getTimeZone("America/New_York");
        Calendar USCalendar = Calendar.getInstance(USTimeZone);
        USCalendar.set(Calendar.HOUR_OF_DAY, 10);
        USCalendar.set(Calendar.MINUTE, 20);

        Intent alarmReceiverIntent = new Intent(context, AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmReceiverIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);

        alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, USCalendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
    }

1 Ответ

0 голосов
/ 20 сентября 2018

Используйте этот метод:

public int getTimeFromNY() {
        TimeZone USTimeZone = TimeZone.getTimeZone("America/New_York");
        Calendar USCalendar = Calendar.getInstance(USTimeZone);
        USCalendar.set(Calendar.HOUR_OF_DAY, 10);
        USCalendar.set(Calendar.MINUTE, 20);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date()); // Current date
        return USCalendar.getTimeInMillis() - calendar.getTimeInMillis();

}

Затем подключите это к AlarmManager

alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeInMillis() + USCalendar.getTimeFromNY(), AlarmManager.INTERVAL_DAY, pendingIntent);
...