¿Cómo comprobar mediante programación el estado de conexión de un dispositivo Bluetooth en Android?
Puedo enumerar los dispositivos Bluetooth
emparejados, y necesito comprobar su estado actual de la conexión en el comienzo de la aplicación.
Pero, no he encontrado ninguna manera de obtener el estado de conexión?
- Reconocimiento de voz de Android con micrófono Bluetooth
- ¿Cómo detectar que un dispositivo ya descubierto y emparejado está disponible?
- Hacer Android BLE (Bluetooth LE) de forma estable
- Vinculación mediante programación al dispositivo BLE en Android
- Cómo obtener los ajustes de Bluetooth ¿Conectar y sincronizar la pantalla con la intención?
Aquí hay algunos esfuerzos que he intentado, pero no:
- Android.bluetooth.BluetoothDevice
Tiene el método para obtener el estado de enlace del dispositivo remoto, y los valores posibles para el estado de enlace son: BOND_NONE
, BOND_BONDING
, BOND_BONDED
. Pero no es el estado de conexión.
- Android.bluetooth.BluetoothProfile
El método se puede utilizar para obtener el estado de conexión, pero el objeto BluetoothProfile
debe obtenerse primero.
public abstract int getConnectionState (BluetoothDevice device);
Como se describe en el doc: " Los clientes deben llamar a getProfileProxy (Context, BluetoothProfile.ServiceListener, int), para obtener el Perfil de Proxy. ", ServiceListener
se puede recuperar en un ServiceListener
llamado cuando el estado cambia.
¿Qué pasa si consulta el estado en el inicio sin que se produzcan cambios de estado?
- Android.bluetooth.BluetoothManager
Proporciona un método:
public int getConnectionState (BluetoothDevice device, int profile);
Pero no se puede utilizar para detectar el estado de conexión de un altavoz Bluetooth
, ya que el argumento de perfil sólo acepta GATT
o GATT_SERVER
(para dispositivos de baja energía), no se admiten otros perfiles ( HEADSET
, HEALTH
, A2DP
).
- Android.bluetooth.BluetoothAdapter
Proporciona un método:
public int getProfileConnectionState (int profile);
Esta función se puede utilizar para comprobar si el adaptador Bluetooth
local está conectado a cualquier dispositivo remoto para un perfil específico. Se puede utilizar para comprobar un perfil especificado. Pero no se puede utilizar para comprobar un dispositivo determinado.
¿Alguien sabe cómo obtener el estado de conexión de un dispositivo Bluetooth
?
Gracias por adelantado.
- ¿Cómo mejorar la medición de la distancia Bluetooth mediante RSSI?
- BLE Android - onConnectionStateChange no se llama
- Conexión Bluetooth; No puede enviar correctamente las cadenas
- Envío de datos de Android a Arduino con el módulo HC-06 Bluetooth
- La conexión del androide del bluetooth falla después de 489 conexiones acertadas
- BluetoothAdapter.getDefaultAdapter () lanzando RuntimeException mientras no está en Activity
- Conector de Bluetooth
- Aplicación de chat Bluetooth de Android que se conecta a Bluegiga WT-12
Consulte las notas en la respuesta de pregunta similar ¿ Cómo saber si un dispositivo Bluetooth está conectado por programación? (Android 2.2) :
- No hay manera de recuperar una lista de dispositivos conectados al inicio de la aplicación. La API de Bluetooth no le permite QUERY, sino que le permite escuchar CHANGES.
- Un trabajo desagradable en torno al problema anterior sería recuperar la lista de todos los dispositivos conocidos / emparejados … luego tratando de conectarse a cada uno (para determinar si está conectado). Como alternativa, podría tener un servicio de fondo para ver la API Bluetooth y escribir los estados del dispositivo en el disco para que su aplicación se use en una fecha posterior.