wakefulbroadcastreceiver wake studio lock keep android android-bluetooth android-wake-lock

studio - wake lock android



Android Bluetooth y la relaciĆ³n WakeLock (3)

El teléfono no permanece despierto si hay un zócalo Bluetooth abierto, y el chip Bluetooth tampoco activa el dispositivo Android si el dispositivo intenta conectarse. Por lo general, se está ejecutando un subproceso en segundo plano para aceptar conexiones en el puerto abierto y, tan pronto como un dispositivo intenta conectarse, es este hilo el que lee la conexión, obtiene algún tipo de autenticación del dispositivo entrante (supongo que hay un protocolo de seguridad establecido para aceptar nuevas conexiones entrantes) y una vez que se autentica la conexión entrante, se crea / notifica un hilo independiente para manejar el intercambio de información posterior con este hilo.

Por lo tanto, el proceso en segundo plano consumiría algo de energía y agotamiento de la batería, y también es responsable de mantener a Android parcialmente despierto (en parte como un proceso en segundo plano y siempre puede controlar la frecuencia con la que comprueba las conexiones entrantes). Por lo general, este proceso en segundo plano no se ejecuta siempre, solo se ejecuta cuando Bluetooth está activado en Android. Por lo tanto, también puede crear un hilo que debe ejecutarse solo cuando Bluetooth está activado en Android, de lo contrario, debería estar inactivo.

Estoy trabajando en una aplicación de Android que se ejecuta en segundo plano y habilita la compatibilidad con un accesorio Bluetooth. Me gustaría escuchar constantemente en segundo plano el dispositivo Bluetooth para intentar abrir un conector en el teléfono. Mi pregunta es si es posible lograr esto sin mantener constantemente un wakelock parcial, ya que obviamente tendría graves consecuencias para la batería. Entonces, lo que me pregunto es qué efecto tiene Bluetooth en el teléfono al quedarse dormido. ¿El teléfono permanece despierto cuando hay un conector Bluetooth abierto? ¿El chip Bluetooth se activa automáticamente con Android si un dispositivo intenta conectarse? Intenté hacer algunas pruebas para responder estas preguntas, pero es difícil aislar lo que está sucediendo con los candados de activación; Además, no sé si puedo confiar en el comportamiento que observo o si está sujeto a cambios en otros dispositivos.


Sí, si su aplicación se está ejecutando y un subproceso está en el método serverSocket.accept (), el teléfono de activación de conexión entrante, por lo que no es necesario utilizar wakelocks. Sin embargo, asegúrese de que su servicio esté en primer plano y no sea cancelado por el sistema.


Si lo está desarrollando para dispositivos dirigidos a malvavisco o superiores, existe el modo DOBLE para tratar tales condiciones. Entonces no tienes que preocuparte por estas cosas. Puede manejar el WAKE_LOCK con el mecanismo apropiado.