【问题标题】:How to set alarm at exact time in KITKAT如何在 KITKAT 中的准确时间设置闹钟
【发布时间】:2014-04-23 04:57:01
【问题描述】:

我已将警报设置为在 60 秒后触发。但警报会在 80/90 秒后触发(但不完全是 60 秒后)。如何设置闹钟以在指定时间准确触发?

 //calling method to set alarm after 60 seconds
    startAlarm(context, 1, System.currentTimeMillis()+60000);

    //method defination
    public static void startAlarm(Context context, int timerType, long nextScheduledTime) {
            EABLog.d(TAG, " ~~~INSIDE START ALARM~~~~~ "+timerType);
            Intent intent = new Intent(context, AlarmReceiver.class);
            intent.putExtra(Constants.KEY_TIMER_TYPE, timerType);
            intent.setAction(""+timerType);
            PendingIntent pollPendingIntent = PendingIntent.getBroadcast(context,
                    timerType, intent, PendingIntent.FLAG_ONE_SHOT);
            AlarmManager alarmManager = (AlarmManager) context
                    .getSystemService(Context.ALARM_SERVICE);
            alarmManager.setExact(AlarmManager.RTC_WAKEUP, nextScheduledTime,
                    pollPendingIntent);
            EABLog.d(TAG, System.currentTimeMillis()+" ALARM IS SET AT "+nextScheduledTime+" TYPE :"+timerType);
        }


//permission added in Android Manifest
    <uses-permission android:name="android.permission.WAKE_LOCK"/>

【问题讨论】:

  • 你是在 kitkat 上开发吗?
  • 如果您在 API 19 上对其进行测试,我认为您应该尝试 setInexactRepeating(),因为在 api 19 中所有警报都是不准确的。
  • 是的。我正在 kitkat 上开发
  • 代码似乎是正确的但也许你可以对广播动作感兴趣ACTION_TIME_TICK

标签: android alarmmanager


【解决方案1】:

正如文档所说的 setExact - 警报将尽可能接近发送到请求的触发时间。所以它并不像你想象的那么准确:)

public void setWindow(int type, long windowStartMillis, long windowLengthMillis, PendingIntent operation)方法第三个参数-windowLengthMillis请求的传递窗口的长度,以毫秒为单位.警报将在 windowStartMillis 之后的这么多毫秒之后发送。。 这可能会成功:)

【讨论】:

  • 您能否提供一个如何使用它的示例?它在较新的 Android 版本上是否也发生了变化?
  • 现在你必须使用 AlarmManagerCompat.setExactAndAllowWhileIdle + 很多东西,比如从电池优化列表中删除应用等。
  • Android 时钟应用有系统权限,这是所有优化的例外,但在 Android 10 上,华为或小米等少数手机甚至可能会阻止系统时钟应用。
  • 但它说“setExactAndAllowWhileIdle”被限制为它可以在短时间内触发的次数,但由于某种原因,谷歌的时钟应用程序可以唤醒设置 2 个闹钟,一分钟又一分钟,那就是即使它不在“未优化”部分的电池优化列表中。怎么会?无论如何,我已经提出了这个问题:stackoverflow.com/q/60079472/878126
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 2019-09-05
  • 2020-05-21
  • 1970-01-01
相关资源
最近更新 更多