美好的一天。 我想知道蓝牙扫描现在是否不可用(通过打mode模式锁定吗?)。
现在我通过这种方法检查它:
fun isInDozeMode(context: Context) : Boolean {
val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && powerManager.isDeviceIdleMode
}
但是即使我刚刚收到蓝牙(iBeacon)事件,该方法也返回true。
答案 0 :(得分:1)
蓝牙不受打ze模式的直接影响:
打ze不会影响执行蓝牙扫描或运行基于处理程序的计时器的功能,但会影响使用Android AlarmManager系统的功能,某些基于信标的系统会使用该系统来安排蓝牙扫描。对于基于Android信标库的应用程序,禁用警报不会在扫描信标时引起问题,因为在基于处理程序的计时器失败时,它仅将警报用作备份。在运行第三个Android M预览版(内部版本号MPA44l)的Nexus 9上进行的测试表明,在Doze下,信标检测可以正常继续。
请参阅我的博客文章here。尽管该博客文章是针对Android 6.0编写的,但随后在7.0中添加的打ze睡更改也不会影响蓝牙扫描。参见here。
答案 1 :(得分:0)
检测由于应用程序打Do而进入/退出空闲模式
操作系统将发送DEVICE_IDLE_MODE_CHANGED
广播,以便我们跟踪应用何时进入或退出空闲模式。
注意:该广播将在设备偶尔启动或结束10分钟空闲维护窗口时发送。
请参阅:https://developer.android.com/reference/android/os/PowerManager.html#ACTION_DEVICE_IDLE_MODE_CHANGED)