我正在创建一个Android应用程序 - 此应用程序的一个功能是,如果用户连接到BLE设备并单击按钮,该应用程序将记住该设备并在将来自动连接。据我所知,这意味着我需要结合。
我遇到了createBond()
方法,但意识到它只能在API 19(Android 4.4)及其后续版本中使用。我正在制作此文章的人更倾向于在API 18(Android 4.3)中提供,因为该产品已经被广告宣传。
假设我的方法是正确的(意思是,通过积极使用Bonding - 我自我教学蓝牙,所以如果不是这样,或者我是误解,请纠正我),有没有什么方法可以在没有createBond()
的情况下实现我想要的目标?如果是这样,怎么样?或者API19是我们必须要忍受的东西吗?
答案 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
}
}
}
当然,您必须处理删除该存储地址的选项,以便他们可以选择要保存的新设备(如果需要)。