Как отключить устройство Bluetooth с помощью Android 2.1 sdk

В Android 2.1, чтобы отключить устройство Bluetooth, вы можете перейти к настройкам Bluetooth, долго нажимать на устройство и выбрать «Отключить», чтобы отключить это устройство. Я хочу иметь возможность сделать это из своего приложения. Я могу получить список парных / связанных устройств, используя BluetoothAdapter.getBondedDevices () , но я не могу найти, как отключить. Я изучил образец BluetoothChat, и я искал sdk, но до сих пор не могу найти API, который позволяет это.

Как я могу отключить устройство Bluetooth?

Вот как вы удаляете / удаляете связанное устройство, вызываете этот метод, где macAddress – это строка адреса mac устройства. «00: 02: 00: A3: 03: 05».

IBluetooth ib =getIBluetooth(); ib.removeBond(macAddress); 

Чтобы получить объект IBluetooth, вам нужно пройти пару шагов

  1. Создайте пакет в проекте под названием android.bluetooth
  2. Создайте два файла: IBluetooth.aidl и IBluetoothCallback.aidl
  3. Создайте метод в ваших файлах, называемых getBluetooth ()

     private IBluetooth getIBluetooth() { IBluetooth ibt = null; try { Class c2 = Class.forName("android.os.ServiceManager"); Method m2 = c2.getDeclaredMethod("getService",String.class); IBinder b = (IBinder) m2.invoke(null, "bluetooth"); Class c3 = Class.forName("android.bluetooth.IBluetooth"); Class[] s2 = c3.getDeclaredClasses(); Class c = s2[0]; Method m = c.getDeclaredMethod("asInterface",IBinder.class); m.setAccessible(true); ibt = (IBluetooth) m.invoke(null, b); } catch (Exception e) { Log.e("flowlab", "Erroraco!!! " + e.getMessage()); } return ibt; } 

    / * ** * ** * ** * ** IBluetooth.aidl * ** * ** * ** * ** /

     package android.bluetooth; import android.bluetooth.IBluetoothCallback; import android.os.ParcelUuid; /** * System private API for talking with the Bluetooth service. * * {@hide} */ interface IBluetooth { boolean isEnabled(); int getBluetoothState(); boolean enable(); boolean disable(boolean persistSetting); String getAddress(); String getName(); boolean setName(in String name); int getScanMode(); boolean setScanMode(int mode, int duration); int getDiscoverableTimeout(); boolean setDiscoverableTimeout(int timeout); boolean startDiscovery(); boolean cancelDiscovery(); boolean isDiscovering(); boolean createBond(in String address); boolean cancelBondProcess(in String address); boolean removeBond(in String address); String[] listBonds(); int getBondState(in String address); String getRemoteName(in String address); int getRemoteClass(in String address); ParcelUuid[] getRemoteUuids(in String address); boolean fetchRemoteUuids(in String address, in ParcelUuid uuid, in IBluetoothCallback callback); int getRemoteServiceChannel(in String address, in ParcelUuid uuid); boolean setPin(in String address, in byte[] pin); boolean setPasskey(in String address, int passkey); boolean setPairingConfirmation(in String address, boolean confirm); boolean cancelPairingUserInput(in String address); boolean setTrust(in String address, in boolean value); boolean getTrustState(in String address); int addRfcommServiceRecord(in String serviceName, in ParcelUuid uuid, int channel, IBinder b); void removeServiceRecord(int handle); } 

/ * ** * ** * ** * ** IBluetoothCallback.aidl * ** * ** * ** * ** /

  package android.bluetooth; /** * System private API for Bluetooth service callbacks. * * {@hide} */ interface IBluetoothCallback { void onRfcommChannelFound(int channel); } 

Другой путь:

 public void clear(View v) { Set<BluetoothDevice> bondedDevices = adapter.getBondedDevices(); try { Class<?> btDeviceInstance = Class.forName(BluetoothDevice.class.getCanonicalName()); Method removeBondMethod = btDeviceInstance.getMethod("removeBond"); String currentMac = getCurrentMAC(); boolean cleared = false; for (BluetoothDevice bluetoothDevice : bondedDevices) { String mac = bluetoothDevice.getAddress(); if(mac.equals(currentMac)) { removeBondMethod.invoke(bluetoothDevice); Log.i(TAG,"Cleared Pairing"); cleared = true; break; } } if(!cleared) { Log.i(TAG,"Not Paired"); } } catch (Throwable th) { Log.e(TAG, "Error pairing", th); } } 

Можно отключить устройство вручную.

Вы можете вызвать скрытый метод для удаления облигации.

Intereting Posts
Есть ли альтернатива вложенным фрагментам? Вид сетки Android Изменение количества столбцов в зависимости от данных Ошибка NDK компиляции Android NDK_PROJECT_PATH = null Элегантный способ выполнения сложных необработанных запросов с помощью ContentProvider Как захватить / записать клип из видео URL в Android и сохранить на телефон Вызывается ли OnItemSelectedListener.onNothingSelected? Принудительное закрытие приложения, если нет доступного интернет-соединения Проекты библиотеки Android и обновление вручную Просмотр в режиме прокрутки на экране Есть ли функция в Android, аналогичная функции «int main» в C / C ++, которая содержит основной цикл программы? Ошибка при использовании onClickListener (Intent) Ориентация экрана Android ActivityGroup Связь со встроенными (UI) веб-просмотрами в существующих приложениях для iOS и Android Как исправить Метод startActivity (Intent) не определен для новой синтаксической ошибки View.OnClickListener () Гранулированные растровые изображения в android