Detecting state changes made to the BluetoothAdapter? Detecting state changes made to the BluetoothAdapter? android android

Detecting state changes made to the BluetoothAdapter?


You will want to register a BroadcastReceiver to listen for any changes in the state of the BluetoothAdapter:

As a private instance variable in your Activity (or in a separate class file... whichever one you prefer):

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {    @Override    public void onReceive(Context context, Intent intent) {        final String action = intent.getAction();        if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {            final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,                                                 BluetoothAdapter.ERROR);            switch (state) {            case BluetoothAdapter.STATE_OFF:                setButtonText("Bluetooth off");                break;            case BluetoothAdapter.STATE_TURNING_OFF:                setButtonText("Turning Bluetooth off...");                break;            case BluetoothAdapter.STATE_ON:                setButtonText("Bluetooth on");                break;            case BluetoothAdapter.STATE_TURNING_ON:                setButtonText("Turning Bluetooth on...");                break;            }        }    }};

Note that this assumes that your Activity implements a method setButtonText(String text) that will change the Button's text accordingly.

And then in your Activity, register and unregister the BroadcastReceiver as follows,

@Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    /* ... */    // Register for broadcasts on BluetoothAdapter state change    IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);    registerReceiver(mReceiver, filter);}@Overridepublic void onDestroy() {    super.onDestroy();    /* ... */    // Unregister broadcast listeners    unregisterReceiver(mReceiver);}


public void discoverBluetoothDevices(View view)    {        if (bluetoothAdapter!=null)            bluetoothAdapter.startDiscovery();            Toast.makeText(this,"Start Discovery"+bluetoothAdapter.startDiscovery(),Toast.LENGTH_SHORT).show();    }