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);}