Nexus 5 不会使用 ADB 进入打盹模式

Posted

技术标签:

【中文标题】Nexus 5 不会使用 ADB 进入打盹模式【英文标题】:Nexus 5 won't go into doze mode using ADB 【发布时间】:2016-08-16 12:52:00 【问题描述】:

我的 Nexus 5 使用 Windows 中的 ADB 命令不会进入打盹/空闲模式。它是使用 USB 电缆连接的 adb,它适用于所有其他 ADB 命令。屏幕已关闭。

C:\>adb shell dumpsys deviceidle force-idle
Unable to go idle; stopped at ACTIVE

C:\>adb shell dumpsys deviceidle enable

C:\>adb shell dumpsys battery unplug

C:\>adb shell dumpsys deviceidle step
Stepped to: ACTIVE

C:\>adb shell dumpsys deviceidle step
Stepped to: ACTIVE

C:\>adb shell dumpsys deviceidle step
Stepped to: ACTIVE

C:\>adb shell dumpsys deviceidle enable

C:\>adb shell dumpsys deviceidle force-idle
Unable to go idle; stopped at ACTIVE

【问题讨论】:

我得到相同的状态,在使用 nexus 5 模拟器时总是处于活动状态。 三星galaxy s7同样的问题 【参考方案1】:

首先你需要运行这个命令:

> adb shell dumpsys battery unplug

然后关闭屏幕(这一步很关键),否则设备保持ACTIVE状态。

之后运行此命令,直到设备状态变为IDLE

> adb shell dumpsys deviceidle step
Stepped to: IDLE_PENDING
> adb shell dumpsys deviceidle step
Stepped to: SENSING
> adb shell dumpsys deviceidle step
Stepped to: LOCATING
> adb shell dumpsys deviceidle step
Stepped to: IDLE

【讨论】:

【参考方案2】:

可能存在阻止手机进入空闲状态的情况,例如预定的闹钟。确保在您试图强制手机进入 IDLE 的不到一个小时内没有设置闹钟应用程序。

【讨论】:

我的情况是 S6 Neo 和 S5 Active 不同。在 S6 Neo 上,设备被正确地阻止进入 IDLE 模式,但 S5 进入 IDLE 并且无法唤醒。任何已知的解决方法? @M3-n50 当你说 S5 不能被唤醒时,你能更具体一点吗?你想怎么唤醒它?它运行的是什么版本的 android 目前运行的是 5.0。情况 atm 是当前阻止 S6(6.0)进入 IDLE(这很好)。在 5.0 上使用相同的方法进入空闲模式并延迟 5 分钟。目前在 S5 (5.0) 上工作的是使用 setRepeating,这很奇怪,因为根据我所读到的内容,我知道这不应该从 4.0 及更高版本开始工作(至少如果太频繁的话就不行)。 打盹模式是在 Android 6 (Doze mode) 中引入的。在以前的版本中,没有像 setAndAllowWhileIdle() 这样的方法。在将您的意图添加到警报管理器之前,您应该检查 Android 的版本。换句话说,如果 Build.VERSION.SDK_INT 低于 23,您应该使用 setExact 和 RTC_WAKEUP 添加您的意图。 哦,你说得对,我的错。顺便说一句,我确实检查了 SDK 版本,并且带有 RTC_WAKEUP 的 setExact 不起作用。我必须专门为该设备使用旧方法 setRepeating,这很奇怪。

以上是关于Nexus 5 不会使用 ADB 进入打盹模式的主要内容,如果未能解决你的问题,请参考以下文章

与设备一起移动时,Android 不会退出打盹模式

打盹模式停止了定位服务

什么是打盹模式计时?

打盹模式 - 前台服务是不是继续运行?

Cordova + Android 6打瞌睡

Android 6.0 处于打盹模式时如何让闹钟管理器工作?