Android 如何使用报警管理器的实时本地时间代替设备设置时间

Android 如何使用报警管理器的实时本地时间代替设备设置时间,android,real-time,alarmmanager,Android,Real Time,Alarmmanager,我正在使用报警管理器在特定时间启动服务,该时间运行良好,但目前,如果用户更改设备时间,服务将根据该时间启动 代码: calendar=new gregoriacalendar(); calendar.setTimeInMillis(System.currentTimeMillis()); cal=新的Gregorianalendar(); cal.add(Calendar.DAY/u年,Calendar.get(Calendar.DAY/u年)); 校准设置(日历小时/天,11); 校准设置(日

我正在使用报警管理器在特定时间启动服务,该时间运行良好,但目前,如果用户更改设备时间,服务将根据该时间启动

代码:

calendar=new gregoriacalendar();
calendar.setTimeInMillis(System.currentTimeMillis());
cal=新的Gregorianalendar();
cal.add(Calendar.DAY/u年,Calendar.get(Calendar.DAY/u年));
校准设置(日历小时/天,11);
校准设置(日历分钟,57);
cal.set(Calendar.SECOND,Calendar.get(Calendar.SECOND));
cal.set(Calendar.millis秒,Calendar.get(Calendar.millis秒));
cal.set(Calendar.DATE,Calendar.get(Calendar.DATE));
cal.set(Calendar.MONTH,Calendar.get(Calendar.MONTH));
AlarmManager AlarmManager=(AlarmManager)getSystemService(报警服务);
意向it=新意向(MainActivity.this,Start\u service\u alarm.class);
it.putExtra(启动服务报警.ACTION,启动服务报警.ACTION);
PendingEvent PendingEvent=PendingEvent.getBroadcast(MainActivity.this,0,it,0);
alarmManager.setRepeating(alarmManager.RTC_唤醒,cal.getTimeInMillis(),

设备只知道当前设置的时间(可以从外部互联网或移动网络源自动确定,但也可以由用户覆盖)

您需要有一个与应用程序同步的外部时间提供程序,可能会发送其位置,以便服务器可以确定正确的时区


已经有可用的API,例如:,或者您可以使用自己的

@Manish如何使用它?我想您可能需要依赖您的服务器。您可以在设置警报之前请求时间。@MehulJoisar我不能在android中获得实时而不考虑设备时间吗?@EdwardCollins:AFAIK,您不能。请看@MehulJoisar我想让警报管理器工作实时本地时间而不是设备设置时间如何可能如果设备只“知道”用户可能设置的当前时间,那么我假设报警管理器只能在决定何时触发报警时关闭该时间。可能您最好使用外部时间源来获取“实时”时间,并根据“实时”时间和“设备”时间之间的差异设置报警时间。(您可以根据外部“实时”时间提供(重新)设置设备时间,但即使不需要用户确认,也应该询问)。