Как включить / отключить bluetooth программно в android

Всем привет,

Я хочу включить / отключить bluetooth через программу. У меня есть следующий код.

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 

Но такой код не работает в SDK 1.5. Как я могу сделать то же самое в SDK 1.5.?

Solutions Collecting From Web of "Как включить / отключить bluetooth программно в android"

Android BluetoothAdapter сообщает, что он был доступен с API уровня 5. API уровня 5 – это Android 2.0.

Вы можете попробовать использовать backport API Bluetooth (не пробовали его лично): http://code.google.com/p/backport-android-bluetooth/

Этот код работал для меня ..

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

Для этого вы должны иметь следующие разрешения:

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

Вот немного более надежный способ сделать это, также обрабатывая возвращаемые значения методов enable()\disable() :

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

И добавьте следующие разрешения в файл манифеста:

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

Но помните эти важные моменты:

Это асинхронный вызов: он немедленно вернется, и клиенты должны прослушать ACTION_STATE_CHANGED, чтобы получать уведомления о последующих изменениях состояния адаптера. Если этот вызов возвращает true, тогда состояние адаптера немедленно перейдет из STATE_OFF в STATE_TURNING_ON, а через некоторое время перейдет на STATE_OFF или STATE_ON. Если этот вызов возвращает false, возникла непосредственная проблема, которая предотвратит включение адаптера – например, режим самолета или адаптер уже включен.

Чтобы включить Bluetooth, вы можете использовать одну из следующих функций:

  public void enableBT(View view){ BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()){ Intent intentBtEnabled = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); // The REQUEST_ENABLE_BT constant passed to startActivityForResult() is a locally defined integer (which must be greater than 0), that the system passes back to you in your onActivityResult() // implementation as the requestCode parameter. int REQUEST_ENABLE_BT = 1; startActivityForResult(intentBtEnabled, REQUEST_ENABLE_BT); } } 

Вторая функция:

 public void enableBT(View view){ BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()){ mBluetoothAdapter.enable(); } } 

Разница в том, что первая функция заставляет приложение запрашивать у пользователя разрешение на включение Bluetooth или отказ. Вторая функция делает приложение напрямую подключаться к Bluetooth.

Чтобы отключить Bluetooth, используйте следующую функцию:

 public void disableBT(View view){ BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter.isEnabled()){ mBluetoothAdapter.disable(); } } 

ПРИМЕЧАНИЕ. Для первой функции в файле AndroidManifest.xml требуется только следующее разрешение:

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

В то время как вторая и третья функции нуждаются в следующих разрешениях:

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

Решение prijin отлично работало для меня. Просто справедливо отметить, что необходимы два дополнительных разрешения:

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

Когда они добавляются, включение и выключение работы безупречны с адаптером bluetooth по умолчанию.

Я использовал приведенный ниже код, чтобы отключить BT, когда приложение запускается и работает нормально. Не уверен, что это правильный способ реализовать это, поскольку Google рекомендует не использовать «bluetooth.disable ();» Без явного пользовательского действия для отключения Bluetooth.

  BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); bluetooth.disable(); 

Я использовал только разрешение ниже.

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

Добавьте в свой файл манифеста следующие разрешения:

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

Включить bluetooth.

 BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()) { mBluetoothAdapter.enable(); }else{Toast.makeText(getApplicationContext(), "Bluetooth Al-Ready Enable", Toast.LENGTH_LONG).show();} 

Отключить использование bluetooth

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