How to enable/disable bluetooth programmatically in android How to enable/disable bluetooth programmatically in android android android

How to enable/disable bluetooth programmatically in android


this code worked for me..

//Disable bluetoothBluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    if (mBluetoothAdapter.isEnabled()) {    mBluetoothAdapter.disable(); } 

For this to work, you must have the following permissions:

<uses-permission android:name="android.permission.BLUETOOTH"/><uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>


Here is a bit more robust way of doing this, also handling the return values of enable()\disable() methods:

public static boolean setBluetooth(boolean enable) {    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    boolean isEnabled = bluetoothAdapter.isEnabled();    if (enable && !isEnabled) {        return bluetoothAdapter.enable();     }    else if(!enable && isEnabled) {        return bluetoothAdapter.disable();    }    // No need to change bluetooth state    return true;}

And add the following permissions into your manifest file:

<uses-permission android:name="android.permission.BLUETOOTH"/><uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

But remember these important points:

This is an asynchronous call: it will return immediately, and clients should listen for ACTION_STATE_CHANGED to be notified of subsequent adapter state changes. If this call returns true, then the adapter state will immediately transition from STATE_OFF to STATE_TURNING_ON, and some time later transition to either STATE_OFF or STATE_ON. If this call returns false then there was an immediate problem that will prevent the adapter from being turned on - such as Airplane mode, or the adapter is already turned on.

UPDATE:

Ok, so how to implement bluetooth listener?:

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:                // Bluetooth has been turned off;                break;            case BluetoothAdapter.STATE_TURNING_OFF:                // Bluetooth is turning off;                break;            case BluetoothAdapter.STATE_ON:                // Bluetooth is on                break;            case BluetoothAdapter.STATE_TURNING_ON:                // Bluetooth is turning on                break;            }        }    }};

And how to register/unregister the receiver? (In your Activity class)

@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 onStop() {    super.onStop();     // ...    // Unregister broadcast listeners    unregisterReceiver(mReceiver);}


Android BluetoothAdapter docs say it has been available since API Level 5. API Level 5 is Android 2.0.

You can try using a backport of the Bluetooth API (have not tried it personally): http://code.google.com/p/backport-android-bluetooth/