- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一个闹钟,用户可以在其中选择闹钟必须响起的时间和工作日。为此,我使用了 setAlarmClock()
,因为即使设备进入打盹模式,警报也必须触发。
问题是,setAlarmClock()
只是一次性警报,不能每周重复一次。
我能想到的唯一解决方案是制作 setRepeatingAlarm()
,它安排了 setAlarmClock()
每天。
请告诉我这是否是一个聪明的解决方法,或者是否有更好的方法。
另外,我不确定是否必须每天安排 setAlarmClock()
来自广播接收器或附加服务。
如果您需要更多信息或代码片段,请告诉我。
最佳答案
几个小时后,我找到了官方解决方案。您必须在每次重新启动后处理所有警报。我通过以下方式做到了这一点:
在 list 中获得许可:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".FragmentAlarm.RestartAlarmsReceiver" android:enabled="true"
android:exported="false">
<intent-filter>
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.QUICKBOOT_POWERON"/>
<!--For HTC devices-->
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
</intent-filter>
</receiver>`
public class RestartAlarmsReceiver extends BroadcastReceiver {
private String TAG = "halo";
@Override
public void onReceive(Context context, Intent intent) {
if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
Log.e("starting", "starting JobScheduler");
schedule(context);
} else {
Log.e(TAG, "Received unexpected intent " + intent.toString());
}
}
private void schedule(Context context) {
// say when Job has to be executed
ComponentName componentName = new ComponentName(context, JobServiceC.class);
JobInfo info = new JobInfo.Builder(145, componentName)
.setOverrideDeadline(0)
.setPersisted(true) // keeps job alive after reboot -> need permission
.build();
JobScheduler scheduler = (JobScheduler) context.getSystemService(JOB_SCHEDULER_SERVICE);
int resultCode = scheduler.schedule(info);
if (resultCode == JobScheduler.RESULT_SUCCESS) {
Log.e("TAG", "Job scheduled");
} else {
Log.e("TAG", "Job not scheduled");
}
}
private void cancel(Context context) {
JobScheduler scheduler = (JobScheduler) context.getSystemService(JOB_SCHEDULER_SERVICE);
scheduler.cancel(145);
Log.e("TAG", "JobCancelled");
}
关于java - 闹钟 : repeat setAlarmClock(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57443530/
有这个new AlarmManager.setAlarmClock(...) method在 API 21 中,它设置一个新的警报并显示一个状态栏警报图标。 我是这样使用的: AlarmManager
我很难让我的 radio 闹钟按预期工作,我在这里阅读了很多关于该主题的帖子,但不幸的是没有一个对我有帮助。 AlarmManager am = (AlarmManager) getSystemSer
我正在尝试构建一个闹钟,用户可以在其中选择闹钟必须响起的时间和工作日。为此,我使用了 setAlarmClock() ,因为即使设备进入打盹模式,警报也必须触发。 问题是,setAlarmClock(
在下文的链接中提到了以下内容(API 级别 23 中的 Doze 模式): 如果您需要设置在打瞌睡时触发的警报,请使用 setAndAllowWhileIdle() 或 setExactAndAllo
在我应该在指定时间触发警报的应用程序中,警报的目的是通过 Notification 通知用户,我对获得不精确的结果感到绝望。闹钟响了,但不是在指定的时间。当警报设置和它应该响起的时间之间的时间很长时,
我使用 Alarmmanager 的 setAlarmClock 方法来做闹钟应用。当我从 6.00 AM 设置闹钟并在 6.01 AM 设置闹钟时。它延迟且不准确。 setAlarmClock时的代
在我设置闹钟的函数中调用 alarmmanager.setAlarmClock 时,我遇到了崩溃(仅在 android 7 上)。我不知道这里有什么问题。以及如何解决这个问题 碰撞。 这是调用 ala
这个问题在这里已经有了答案: to know next alarm time using setRepeating() method (1 个回答) 关闭 5 年前。 我根据我的应用程序要求使用 s
我有一个闹钟应用程序,它使用以下代码为 Marshmallow 及更高版本的设备设置闹钟: val alarmIntent: PendingIntent = Intent(context, Alarm
我像这样创建一个 PendingIntent: Intent intent = new Intent(context, AlarmReceiver.class); intent.setAction("
我使用 AlarmManager.setAlarmClock() 来设置闹钟。所有设备(包括三星)都会触发闹钟,但在搭载 Android 9 的三星设备上,时钟附近的小闹钟图标(屏幕右上角)不见了。我
我是一名优秀的程序员,十分优秀!