¿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?

Aquí hay algunos esfuerzos que he intentado, pero no:

  1. 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.

  1. 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?

  1. 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 ).

  1. 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.

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.
  • Nodificación de la señal de la señal de Bluetooth
  • Android Wear, se conecta al dispositivo bluetooth
  • ¿Podría crear más de un canal RFCOMM por hora?
  • Bluetooth seguro vs. inseguro
  • BlueCove, portátil y una tableta Android con Bluetooth
  • Con Android bluetooth es fetchUuidsWithSdp () supongo que para devolver SDPs dos veces para cada dispositivo?
  • Thread para capturar un tiempo de espera de InputStream.read () BluetoothSocket
  • Android Bluetooth: java.io.IOException: falla en el descubrimiento del servicio
  • Accesorio Bluetooth y Android Open Accessory Protocol
  • Conexión al dispositivo bluetooth pareado (BluetoothSocket) en android 2.1
  • Conectar Android a wii remoto con bluetooth
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.