Android 安卓警报晚了12小时

Android 安卓警报晚了12小时,android,xamarin.android,alarmmanager,android-alarms,Android,Xamarin.android,Alarmmanager,Android Alarms,我已将闹钟(在我们正在开发的闹钟应用程序中)设置为8:58(24小时格式) 警报未触发-警报图标仍在状态栏中-当我写入adb shell dumpsys alarm时,我可以看到: Batch{6b33bdb num=1 start=99803288 end=99803288 flgs=0x3}: RTC_WAKEUP #0: Alarm{3e3da2e type 0 when 1484078280736 my.app} tag=*walarm*:my.app/md5f98255d982

我已将闹钟(在我们正在开发的闹钟应用程序中)设置为8:58(24小时格式)

警报未触发-警报图标仍在状态栏中-当我写入
adb shell dumpsys alarm
时,我可以看到:

Batch{6b33bdb num=1 start=99803288 end=99803288 flgs=0x3}:
  RTC_WAKEUP #0: Alarm{3e3da2e type 0 when 1484078280736 my.app}
  tag=*walarm*:my.app/md5f98255d9820be5cc9672d0645bf1ca12.RingBroadcastReceiver
  type=0 whenElapsed=+11h1m53s125ms when=2017-01-10 20:58:00
  window=0 repeatInterval=0 count=0 flags=0x3
  Alarm clock:
    triggerTime=2017-01-10 08:58:00
    showIntent=PendingIntent{21219cf: PendingIntentRecord{aac3f5c my.app startActivity}}
  operation=PendingIntent{ecde88f: PendingIntentRecord{821c71c my.app broadcastIntent}}

Next wake from idle: Alarm{3e3da2e type 0 when 1484078280736 my.app}
  tag=*walarm*:my.app/md5f98255d9820be5cc9672d0645bf1ca12.RingBroadcastReceiver
  type=0 whenElapsed=+11h1m53s125ms when=2017-01-10 20:58:00
  window=0 repeatInterval=0 count=0 flags=0x3
  Alarm clock:
    triggerTime=2017-01-10 08:58:00
    showIntent=PendingIntent{21219cf: PendingIntentRecord{aac3f5c my.app startActivity}}
  operation=PendingIntent{ecde88f: PendingIntentRecord{821c71c my.app broadcastIntent}}
问题是:当
触发时间
后12小时
怎么可能

这似乎是12/24小时格式的问题,但我的设备、我的应用程序及其时间选择器都设置为24小时格式。这个问题只发生过一次。当我设置一个新的闹钟时,它会按预期工作

有什么想法吗

更新: 我们正在使用这段代码来设置报警(对不起Xamarin语法),我已经测试了alarmEntity是否返回正确的时间。问题一定出在这段代码或设备/android/系统中。从
triggerTime=2017-01-10 08:58:00
中,我认为代码正常,系统或报警管理器中存在一些问题

DateTime closestTrigger = alarmEntity.GetTime();

Calendar calendar = Calendar.Instance;
calendar.Set(CalendarField.Year, closestTrigger.Year);
calendar.Set(CalendarField.Month, closestTrigger.Month - 1);
calendar.Set(CalendarField.DayOfMonth, closestTrigger.Day);
calendar.Set(CalendarField.HourOfDay, closestTrigger.Hour);
calendar.Set(CalendarField.Minute, closestTrigger.Minute);
calendar.Set(CalendarField.Second, closestTrigger.Second);

var alarmInfo = new AlarmManager.AlarmClockInfo(calendar.TimeInMillis, mainPendingIntent);
manager.SetAlarmClock(alarmInfo, ringPendingIntent);
更新2: 我在同一个dumpsys报警日志中发现了一条更重要的行:

Next alarm clock information: 
user:0 pendingSend:false time:1484035080736 = 2017-01-10 08:58:00 = -58m6s876ms

..这意味着警报错过了,但系统甚至没有尝试显示警报,logcat在8:58前后根本没有显示任何活动。仍然不清楚为什么系统会将警报重新安排到20:58。

设备的时区设置为什么?您是否正在设置UTC的报警时间?你说当你设置一个新的闹钟时它会工作,这让我很困惑,还有什么其他情况吗?时区会自动设置为UTC+1,而我使用的是当地时间。这也让我感到困惑,它一直在工作,只是这一个闹钟因为某种奇怪的原因被安排在20:58,尽管我已经设定了8:58。我在UI中也看到了8:58。我还没有试着去激活它,因为我可能会失去这种罕见的情况。可能是你在开发时发出了这个警报,实际上设置为12小时。或者与之相关的其他标志。它发生在google play的版本上,而不是开发版本。对于大多数用户来说,警报工作正常,但我们仍在调查少数用户的一些问题,可能就是这样。但这对我来说真的没有意义,“triggerTime”怎么可能是正确的,12小时后“when”怎么可能是正确的。为了澄清,对于遇到警报被推后12小时的问题的用户,他们实际上是在12小时后收到警报还是又被推后了12小时?设备的时区设置是什么?您是否正在设置UTC的报警时间?你说当你设置一个新的闹钟时它会工作,这让我很困惑,还有什么其他情况吗?时区会自动设置为UTC+1,而我使用的是当地时间。这也让我感到困惑,它一直在工作,只是这一个闹钟因为某种奇怪的原因被安排在20:58,尽管我已经设定了8:58。我在UI中也看到了8:58。我还没有试着去激活它,因为我可能会失去这种罕见的情况。可能是你在开发时发出了这个警报,实际上设置为12小时。或者与之相关的其他标志。它发生在google play的版本上,而不是开发版本。对于大多数用户来说,警报工作正常,但我们仍在调查少数用户的一些问题,可能就是这样。但这对我来说真的没有意义,“triggerTime”怎么可能是正确的,以及12小时后的“when”.为了澄清,对于这些遇到警报被推迟12小时问题的用户,他们是在12小时后收到警报,还是又被推迟了12小时?