因此,我一直在研究药物摄入应用程序,我需要在本地提醒用户(无需互联网/推送通知)有关服用药物的信息。我正在为此使用Android警报管理器。下面是代码注释:我正在尝试为特定日期安排警报:“ 2018年7月13日,下午3点30分”。我安排并等待,但是提醒未触发(因此未广播),但是如果我使用AlarmManager.ELAPSED_REALTIME_WAKEUP并定义了毫秒数,则会触发(但AlarmManager.RTC_WAKEUP却不起作用) AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); Intent myIntent; PendingIntent pendingIntent; long reminderDateTimeInMilliseconds = 000; myIntent = new Intent(this,MedicationScheduleBroadCastReceiver.class); pendingIntent = PendingIntent.getBroadcast(this,0,myIntent,PendingIntent.FLAG_UPDATE_CURRENT); //TODO : Reminder the user to take medication on the 13th July 2018 at 15:30 Calendar calendarToSchedule = Calendar.getInstance(); calendarToSchedule.set(Calendar.YEAR, 2018); calendarToSchedule.set(Calendar.MONTH, 07); calendarToSchedule.set(Calendar.DAY_OF_MONTH, 13); calendarToSchedule.set(Calendar.HOUR_OF_DAY, 15); calendarToSchedule.set(Calendar.MINUTE, 30); reminderDateTimeInMilliseconds = calendarToSchedule.getTimeInMillis(); if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O){ manager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, reminderDateTimeInMilliseconds, pendingIntent); } else{ manager.set(AlarmManager.RTC_WAKEUP, reminderDateTimeInMilliseconds, pendingIntent); }`
2 回答
叮当猫咪
TA贡献1776条经验 获得超12个赞
如果设备处于打ze模式,则不会触发警报。也可以使用setAndAllowWhileIdle
或setExactAndAllowWhileIdle
在打ze模式下触发警报。
来自Android Doc。
网络访问已暂停。
系统将忽略唤醒锁。
标准AlarmManager警报(包括
setExact()
和setWindow()
)被推迟到下一个维护窗口。如果您需要设置在打ze时触发的警报,请使用setAndAllowWhileIdle()
或setExactAndAllowWhileIdle()
。使用setAlarmClock()设置的警报将继续正常触发-在这些警报触发之前,系统会立即退出Doze。
系统不执行Wi-Fi扫描。
系统不允许运行同步适配器。系统不允许JobScheduler运行。
添加回答
举报
0/150
提交
取消