在没有createBond()的情况下绑定BLE设备

时间:2015-11-18 15:15:24

标签: android bluetooth bluetooth-lowenergy

我正在创建一个Android应用程序 - 此应用程序的一个功能是,如果用户连接到BLE设备并单击按钮,该应用程序将记住该设备并在将来自动连接。据我所知,这意味着我需要结合。

我遇到了createBond()方法,但意识到它只能在API 19(Android 4.4)及其后续版本中使用。我正在制作此文章的人更倾向于在API 18(Android 4.3)中提供,因为该产品已经被广告宣传。

假设我的方法是正确的(意思是,通过积极使用Bonding - 我自我教学蓝牙,所以如果不是这样,或者我是误解,请纠正我),有没有什么方法可以在没有createBond()的情况下实现我想要的目标?如果是这样,怎么样?或者API19是我们必须要忍受的东西吗?

1 个答案:

答案 0 :(得分:2)

一种选择是将首选项与您的回调一起用于设备扫描。

假设您在应用中的某处使用LeScanCallback

BluetoothAdapter.LeScanCallback mCallBack =
    new BluetoothAdapter.LeScanCallback() {
        @Override
        public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
         // You can place this elsewhere so this isn't called for every device
         String storedAddr = myContext.getSharedPreferences("global", Context.MODE_PRIVATE).getString("storedAddr","");

         if(storedAddr.equals("")) {
             // Do your normal process to list / connect to devices.
             // Store device.getAddress() in preferences once connected.

         } else if(device.getAddress().equals(storedAddr) {
             // Do whatever you want with the matching device
         }

        }

}

当然,您必须处理删除该存储地址的选项,以便他们可以选择要保存的新设备(如果需要)。