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.

  • Kontakt Beacons: Resultados incoherentes y poco fiables al determinar la distancia de la baliza
  • Android BluetoothSocket OutputStream escribe bloques de forma infinita
  • "El recurso compartido Bluetooth ha dejado de funcionar" al realizar LeScan
  • Lector RFID para dispositivos móviles
  • Hilo de fondo Bluetooth de Android
  • Cómo encontrar bluetooth mac dirección de forma programática en Android api nivel 19
  • Android Bluetooth IOException: conexión rechazada
  • Programe un par de dispositivos Bluetooth sin que el usuario introduzca el pin
  • Dispositivos con Android 4.2 (Jelly Bean) compatible con Bluetooth de baja energía (BLE)
  • ¿Cómo diferenciar el dispositivo bluetooth conectado en android programmatically?
  • Recepción de datos del dispositivo periférico BLE de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.