如何使用android 2.1 sdk取消配对蓝牙设备

use*_*738 10 android bluetooth

在Android 2.1中,要取消配对蓝牙设备,您可以转到蓝牙设置,长按设备并选择取消配对以取消配对该设备.我希望能够从我的应用程序中执行此操作.我可以使用BluetoothAdapter.getBondedDevices()检索配对/绑定设备列表,但我找不到如何取消配对.我已经探索了BluetoothChat示例,我搜索了sdk,但仍然无法找到允许这样做的API.

如何取消配对蓝牙设备?

JPM*_*JPM 11

以下是取消绑定/删除绑定设备的方法,调用此方法,其中macAddress是设备mac地址的字符串."00:02:00:A3:03:05"

IBluetooth ib =getIBluetooth();
ib.removeBond(macAddress);
Run Code Online (Sandbox Code Playgroud)

要获得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;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    / ************ 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);
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

    package android.bluetooth;

    /**
     * System private API for Bluetooth service callbacks.
     *
     * {@hide}
     */
    interface IBluetoothCallback
    {
        void onRfcommChannelFound(int channel);
    }
Run Code Online (Sandbox Code Playgroud)


Gun*_*ram 0

可以通过 droid java 手动取消设备配对。

您可以调用隐藏方法来删除键。