How to Verify whether bluetooth headsets are connected on Android? How to Verify whether bluetooth headsets are connected on Android? android android

How to Verify whether bluetooth headsets are connected on Android?


Moving this to an answer so that further comments can made. Works great!

public class BluetoothReceiver extends BroadcastReceiver {    private AudioManager localAudioManager;    private static final int STATE_DISCONNECTED  = 0x00000000;    private static final String EXTRA_STATE = "android.bluetooth.headset.extra.STATE";    private static final String TAG = "BluetoothReceiver";    private static final String ACTION_BT_HEADSET_STATE_CHANGED  = "android.bluetooth.headset.action.STATE_CHANGED";    private static final String ACTION_BT_HEADSET_FORCE_ON = "android.bluetooth.headset.action.FORCE_ON";    private static final String ACTION_BT_HEADSET_FORCE_OFF = "android.bluetooth.headset.action.FORCE_OFF";    @Override    public void onReceive(final Context context, final Intent intent) {        Log.i(TAG,"onReceive - BluetoothBroadcast");        localAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);        final String action = intent.getAction();        if (action.equals(ACTION_BT_HEADSET_STATE_CHANGED)) {            final int extraData = intent.getIntExtra(EXTRA_STATE, STATE_DISCONNECTED);            if (extraData == STATE_DISCONNECTED) {                localAudioManager.setBluetoothScoOn(false);                localAudioManager.stopBluetoothSco();                localAudioManager.setMode(AudioManager.MODE_NORMAL);                Log.i(TAG, "Bluetooth Headset Off " + localAudioManager.getMode());                Log.i(TAG, "A2DP: " + localAudioManager.isBluetoothA2dpOn() + ". SCO: " + localAudioManager.isBluetoothScoAvailableOffCall());            } else {                            localAudioManager.setMode(0);                localAudioManager.setBluetoothScoOn(true);                localAudioManager.startBluetoothSco();                localAudioManager.setMode(AudioManager.MODE_IN_CALL);                Log.i(TAG, "Bluetooth Headset On " + localAudioManager.getMode());                Log.i(TAG, "A2DP: " + localAudioManager.isBluetoothA2dpOn() + ". SCO: " + localAudioManager.isBluetoothScoAvailableOffCall());            }        }           if (action.equals(ACTION_BT_HEADSET_FORCE_ON)) {            localAudioManager.setMode(0);            localAudioManager.setBluetoothScoOn(true);            localAudioManager.startBluetoothSco();            localAudioManager.setMode(AudioManager.MODE_IN_CALL);            Log.i(TAG, "Bluetooth Headset On " + localAudioManager.getMode());            Log.i(TAG, "A2DP: " + localAudioManager.isBluetoothA2dpOn() + ". SCO: " + localAudioManager.isBluetoothScoAvailableOffCall());        }        if (action.equals(ACTION_BT_HEADSET_FORCE_OFF)) {            localAudioManager.setBluetoothScoOn(false);            localAudioManager.stopBluetoothSco();            localAudioManager.setMode(AudioManager.MODE_NORMAL);            Log.i(TAG, "Bluetooth Headset Off " + localAudioManager.getMode());            Log.i(TAG, "A2DP: " + localAudioManager.isBluetoothA2dpOn() + ". SCO: " + localAudioManager.isBluetoothScoAvailableOffCall());        }    }}