22

我正在开发一个在后台运行并支持蓝牙配件的 Android 应用程序。我想一直在后台监听蓝牙设备,以尝试打开手机的套接字。我的问题是是否有可能在不不断保持部分唤醒锁的情况下实现这一目标,因为这显然会产生严重的电池后果。所以我想知道的是蓝牙对手机入睡有什么影响。蓝牙插座打开时手机是否保持唤醒状态?如果设备尝试连接,蓝牙芯片是否会自动唤醒 Android?我试图做一些测试来回答这些问题,但是很难隔离唤醒锁发生的事情。另外,我不

4

3 回答 3

2

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

于 2013-06-14T23:37:27.080 回答
0

如果您正在为基于棉花糖或更高版本的设备开发它,则可以使用打盹模式来处理此类情况。然后,您不必担心这些事情。它可以使用适当的机制处理 WAKE_LOCK。

于 2017-04-26T08:20:04.037 回答
-3

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

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

于 2013-01-28T20:01:34.000 回答