Se conecta automáticamente al dispositivo bluetooth emparejado cuando está en el rango

Gol:

Estoy tratando de obtener mi servicio de Android para auto-conectar a un dispositivo Bluetooth ya emparejado cuando su rango.

Ejemplo:

Tengo mi iphone apareado a mi coche. Cuando me siento en mi coche la música comienza a jugar automáticamente. No necesito conectarlo de nuevo. No necesito comenzar una canción. Acaba de lanzar itunes y empieza a tocar música. Quiero este tipo de conectividad en mi aplicación de Android.

Una solución obvia es tener un hilo en ejecución en un fondo de servicios que intenta conectar cada X segundos. Esto sin embargo no es óptimo debido al peaje en la vida de la batería.

Traté de configurar receptores de difusión para obtener activado en ACTION_ACL_CONNECTED pero esto parece que sólo se llama después de conectar al dispositivo.

¿No hay manera de que mi aplicación pueda recibir una notificación cuando el teléfono entra en el alcance del dispositivo?

He pasado la mejor parte de los dos últimos días tratando de conseguir que esto funcione sin suerte. Hay miles de millones de tutoriales sobre cómo conectarse a un dispositivo bt pero ninguno para conectarse automáticamente cuando está en el rango. Comenzar a preguntar si esto incluso posible .. Estaré asombrado si no es 🙁

preguntas relacionadas:

Encuentra dispositivos bluetooth ya emparejados automáticamente, cuando están en rango

2 Solutions collect form web for “Se conecta automáticamente al dispositivo bluetooth emparejado cuando está en el rango”

Por lo que sé, no hay manera de conectarse automáticamente a un dispositivo genérico Bluetooth tan pronto como esté en el rango. Lo mejor es tener un bucle de consulta, consultar periódicamente los dispositivos disponibles y conectarse a los que están unidos (aunque, como usted dijo, esto es bastante intensivo en las baterías).

Sin embargo, si su dispositivo (tanto el teléfono como el periférico) soporta Bluetooth 4.0 (LE) así como GATT, puede utilizar el método connectGatt que se conectará automáticamente tan pronto como el dispositivo esté disponible (de nuevo, no está seguro sobre las implicaciones de la batería aunque Las pruebas limitadas que he hecho hasta ahora demuestran que no es significativo).

No estoy completamente seguro de cuál es el comportamiento de connectGatt cuando el dispositivo no es GATT, pero puede valer la pena investigar – mi suposición sería que usted recibirá una devolución de llamada con estado GATT_FAILURE cuando el dispositivo se encuentra en el rango pero no es compatible con GATT (Esto al menos le daría una indicación de cuándo conectarse).

Si encuentra una solución o investiga el comportamiento de este método en dispositivos no LE / no GATT, actualice su pregunta, ya que estaría bastante curioso para saber más sobre él.

Como se mencionó anteriormente, no hay una manera fácil de hacer eso con Bluetooth Classic que no sea por la exploración constante.

Sin embargo, el escenario de la radio del coche que usted mencionó funciona con algunos radios de automóviles: la mina establece automáticamente una conexión Bluetooth con mi teléfono tan pronto como enciendo la radio. He observado un comportamiento similar con los teclados Bluetooth.

Sólo puedo especular que estos periféricos periódicamente intentan conectarse a dispositivos emparejados hasta que sea exitoso. Esto tiene sentido para un periférico en ciertas condiciones:

  • Drenar la batería no es una preocupación. (La radio funciona con una batería de automóvil y la mayoría del tiempo está encendida, el motor está funcionando y la batería se carga).
  • El periférico habla con un solo teléfono a la vez, y puede suspender sus exploraciones mientras está conectado a uno. (Esta radio en particular sólo puede manejar un teléfono a la vez.)
  • El periférico es en su mayoría inútil cuando no está conectado a otro dispositivo, y por lo tanto se puede esperar que esté conectado a algo durante la mayor parte del tiempo que se enciende. (Esto se aplica a auriculares, teclados, ratones y similares).

Obviamente, eso depende de su capacidad para influir en el comportamiento del dispositivo emparejado. Si se trata de un dispositivo estándar, funciona bien o no, pero si está diseñando un periférico personalizado, vale la pena considerarlo.

  • Cómo leer datos desde el escáner de código de barras Bluetooth Symbol CS3070 to Android Device
  • Error de permiso de Android Bluetooth_admin
  • Habilitar el bluetooth que tethering android programmatically
  • Enrutamiento de audio a auriculares Bluetooth (no A2DP) en Android
  • Cómo activar / desactivar el bluetooth mediante programación en android
  • Enviar información de las pistas a través de A2DP / AVRCP
  • Enviar múltiples archivos mediante bluetooth en android mediante programación
  • ¿Puede un dispositivo Android actuar como iBeacon?
  • Android Bluetooth .conect () excepción Nexus 7 OBDII adaptador
  • Detectar o la latencia aproximada de Bluetooth en Android (reproducción de audio)
  • Con sólo un módulo particular de Bluetooth SPP, .createRfcommSocketToServiceRecord () de repente ya no funciona, pero el método de reflexión funciona
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.