Cómo obtener dispositivos conectados por bluetooth usando BluetoothHeadset API

Quiero obtener una lista de dispositivos conectados con Bluetooth … no solo dispositivos emparejados.

Encontré BluetoothHeadset API en API nivel 11 que proporciona el método getConnectedDevices() para obtener la lista de dispositivos Bluetooth conectados.

¿Cómo obtener una lista de dispositivos conectados con bluetooth usando esta API?

Finalmente obtuve la solución. A continuación, se incluyen algunos fragmentos de código para obtener dispositivos conectados a audio BluetoothHeadset mediante BluetoothHeadset API.

 BluetoothHeadset mBluetoothHeadset; // Get the default adapter BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); // Establish connection to the proxy. mBluetoothAdapter.getProfileProxy(context, mProfileListener, BluetoothProfile.HEADSET); 

 // Define Service Listener of BluetoothProfile private BluetoothProfile.ServiceListener mProfileListener = new BluetoothProfile.ServiceListener() { public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { mBluetoothHeadset = (BluetoothHeadset) proxy; } } public void onServiceDisconnected(int profile) { if (profile == BluetoothProfile.HEADSET) { mBluetoothHeadset = null; } } }; 

 // call functions on mBluetoothHeadset to check if Bluetooth SCO audio is connected. List devices = mBluetoothHeadset.getConnectedDevices(); for ( final BluetoothDevice dev : devices ) { return mBluetoothHeadset.isAudioConnected(dev); } 

 // finally Close proxy connection after use. mBluetoothAdapter.closeProfileProxy(BluetoothProfile.HEADSET, mBluetoothHeadset); 

En primer lugar, debe definir el permiso en Androindmanifest.xml

   

Buscar actividad de dispositivos conectados,

 private static BluetoothAdapter mBtAdapter; private final static int REQUEST_ENABLE_BT = 1; // Register for broadcasts when a device is discovered IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); this.registerReceiver(mReceiver, filter); // Register for broadcasts when discovery has finished filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); this.registerReceiver(mReceiver, filter); filter = new IntentFilter( BluetoothAdapter.ACTION_DISCOVERY_STARTED ); this.registerReceiver( mReceiver, filter ); 

Clase BroadCastReceiver

 private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { try { String action = intent.getAction(); // When discovery finds a device if ( BluetoothDevice.ACTION_FOUND.equals(action) ) { // Get the BluetoothDevice object from the Intent BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); } } catch ( Exception e ) { logger.info( DateFormat.format( ConstantCodes.dateFormat ,new java.util.Date()).toString(),"Broadcast Error : " + e.toString(), ConstantCodes.SEARCH_ACTIVITY ); System.out.println ( "Broadcast Error : " + e.toString() ); } } };