android - 为另一个时区配置 AlarmManager
问题描述
我想为不同的时区配置警报管理器。我希望闹钟在到达纽约时间 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);
}
解决方案
使用此方法:
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);
推荐阅读
- ruby-on-rails - 如何创建 schema.rb 文件的 CSV/Excel
- swift - swift代码中的不兼容或真正错误
- python - tkinter 和 pygame.midi 之间的冲突
- scala - 在 Scala 中使用 Cats 库中的 Validated
- excel - 如何使用 VBA 从工作表创建多个 Excel 工作簿
- c# - 构建和运行时出现 dotnet new blazor 错误
- django - django过滤器没有匹配
- python - 解析包含逻辑的字符串以创建 Django Q 对象
- angular - Angular 5+等待返回承诺的服务
- ios - xamarin.forms webview.focused 事件在 Android 上引发,但不在 iOS 上