首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓蓝牙与WakeLock的关系

安卓蓝牙与WakeLock的关系
EN

Stack Overflow用户
提问于 2011-08-11 00:11:45
回答 3查看 5.3K关注 0票数 22

我正在开发一个在后台运行的Android应用程序,它支持蓝牙附件。我希望不断地在后台监听蓝牙设备,以尝试打开电话的插座。我的问题是,是否有可能在不经常保持部分唤醒的情况下实现这一点,因为这显然会产生严重的电池后果。所以我想知道蓝牙对手机入睡有什么影响。当有打开的蓝牙插座时,手机会保持唤醒状态吗?如果设备尝试连接,蓝牙芯片会自动唤醒Android吗?我试图做一些测试来回答这些问题,但很难隔离唤醒锁发生了什么;此外,我不知道我是否可以依赖我观察到的行为,或者它是否会在其他设备上发生变化。

EN

回答 3

Stack Overflow用户

发布于 2013-06-15 07:37:27

是的,如果您的应用程序正在运行,并且线程在serverSocket.accept()方法中,传入的连接将唤醒电话,因此不需要使用唤醒锁。但是,请确保您的服务处于前台,并且没有被系统终止。

票数 2
EN

Stack Overflow用户

发布于 2017-04-26 16:20:04

如果你正在为基于棉花糖或更高版本的设备开发它,那么有一种DOZE模式可以处理这种情况。然后你就不需要担心这些事情了。它可以通过适当的机制来处理WAKE_LOCK。

票数 0
EN

Stack Overflow用户

发布于 2013-01-29 04:01:34

如果有打开的蓝牙插座,手机不会保持唤醒状态,如果设备试图连接,蓝牙芯片也不会唤醒Android。通常有一个后台线程运行以接受开放端口上的连接,一旦设备尝试连接,就是这个线程读取连接,从传入设备获得某种类型的身份验证(我假设有一个安全协议来接受任何新的传入连接),一旦传入连接通过身份验证,就会创建/通知一个独立的线程来处理与该线程的后续信息交换。

所以后台进程会消耗一些电量和电量,同时它也负责保持Android的部分唤醒(部分是因为它是后台进程,你可以随时控制它检查传入连接的频率)。通常这个后台进程并不总是运行,它只在Android中打开蓝牙时运行。因此,您还可以创建一个线程,它应该只在Android中打开蓝牙时运行,否则它应该处于睡眠状态。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7014124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档