Android:闹钟在错误的时间开始

时间:2014-12-24 07:30:26

标签: android alarmmanager alarm

在某些设备上(至少在某些设备上,至少根据手册,系统中没有电池保护程序,而客户拒绝安装一个),系统会在几小时后广播警报意图 < / strong>,仅在用户打开设备时。

如果用户在几分钟内设置闹钟,则可以正常工作。如果它在几个小时内设置,它可能会起作用,可能会在几分钟或几小时内关闭,很可能是后者。

这让我感到紧张,正如

  1. 我总是得到客户的投诉(可以理解),

  2. 我没有他们的通用答案,因为它可能不是 显而易见的问题所在,从哪里排除我的应用程序 “不确定”的行为。

  3. 当它出现几个小时错误时,它甚至不是'约会'时间!

  4. 我确定目标API&gt; = 19 / KitKat,所以我已经区分了如何设置警报:

                PendingIntent pi = PendingIntent.getBroadcast(ctx, 1, i, PendingIntent.FLAG_UPDATE_CURRENT);
    
                if (android.os.Build.VERSION.SDK_INT >= 19)
                    alarmManager.setExact(AlarmManager.RTC_WAKEUP, calSeqStart.getTimeInMillis(), pi);
                  else
                    alarmManager.set(AlarmManager.RTC_WAKEUP, calSeqStart.getTimeInMillis(), pi);
    

    通常,在最新的情况下,它甚至不是API 19设备:

    TCT ONE TOUCH TAB 7HD(TAB7HD) OS API级别:16

    代码:我确定“calSeqStart”的时间是正确的,这不是问题。

    它不能是WakeLock问题,只要BroadcastReceiver获取Intent,它就会记录一条消息,并且该消息也会在错误的时间出现!因此,广播仅在用户开启设备时发送。

    在我和其他数百人的地方,它没有任何问题。

    我的问题:

    1. 警报应用程序如何强制告诉系统需要在某个时间唤醒并启动它?!
    2. 有人知道是否有可能找到像STAMINA(Sony Experia Z)这样的节能应用程序,以便警告用户?
    3. 此外:

      在我的应用程序中,我将警报管理器中的警报设置为AlarmManager.RTC_WAKEUP类型,但是当我使用adb转储警报时,我看到它们被映射到AlarmManager.RTC类型。

      这只发生在某些(或至少一个:Alcatel onetouch TAB 7D)设备上。在所有其他设备上,我的应用设置的闹钟会正确唤醒设备(我将其视为按预期“adb shell dumpsys alarm”中的RTC_WAKEUP。

      由于它是Android 4.1.1,它不能是AppOpps检查,必须是别的。

      使用ADB,我发现只有 deskclock 可以将闹钟设置为WAKEUP,其他应用的所有条目都是非WAKEUP闹钟。

0 个答案:

没有答案