Android Bluetooth и WakeLock отношения - PullRequest
22 голосов
/ 10 августа 2011

Я работаю над приложением Android, которое работает в фоновом режиме и обеспечивает поддержку аксессуара Bluetooth.Я хотел бы постоянно слушать в фоновом режиме устройство Bluetooth, чтобы попытаться открыть гнездо для телефона.Мой вопрос заключается в том, возможно ли достичь этого без постоянного удержания частичного пробуждения, поскольку это, очевидно, будет иметь серьезные последствия для батареи.Поэтому меня интересует, как Bluetooth влияет на засыпание телефона.Телефон остается активным, когда есть открытая розетка Bluetooth?Чип Bluetooth автоматически разбудит Android, если устройство попытается подключиться?Я попытался провести некоторое тестирование, чтобы ответить на эти вопросы, но трудно выделить то, что происходит с помощью пробужденных замков;кроме того, я не знаю, могу ли я положиться на наблюдаемое мной поведение или оно может быть изменено на других устройствах.

Ответы [ 3 ]

1 голос
/ 15 июня 2013

Да, если ваше приложение работает, а поток находится в методе serverSocket.accept (), входящее соединение активирует телефон, поэтому нет необходимости использовать wakelocks. Однако убедитесь, что ваш сервис находится на переднем плане и не уничтожен системой.

0 голосов
/ 26 апреля 2017

Если вы разрабатываете его для устройств, ориентированных на зефир или выше, существует режим DOZE для лечения таких состояний. Тогда вам не нужно беспокоиться об этом. Он может обрабатывать WAKE_LOCK с соответствующим механизмом.

0 голосов
/ 29 января 2013

Телефон не бодрствует, если есть открытая розетка Bluetooth, и чип Bluetooth не пробуждает Android, если устройство пытается подключиться.Обычно есть фоновый поток, работающий для приема соединений на открытом порту, и как только устройство пытается подключиться, именно этот поток читает соединение, получает какую-то аутентификацию от входящего устройства (я предполагаю, что естьпротокол безопасности на месте для принятия любых новых входящих соединений), и как только входящее соединение аутентифицируется, создается независимый поток / уведомляется для обработки последующего обмена информацией с этим потоком.

Таким образом, фоновый процесс потребляет некоторую мощностьразряд батареи, а также он отвечает за частичное бодрствование Android (частично как фоновый процесс, и вы всегда можете контролировать, как часто он проверяет наличие входящих подключений).Обычно этот фоновый процесс запускается не всегда, а только при включенном Bluetooth в Android.Таким образом, вы также можете создать поток, который будет работать только при включенном Bluetooth в Android, иначе он должен спать.

...