如何将 Bluetooth Low Energy(BLE) 设备与Android配对以读取加密数据 .
使用Android BLE page中的信息,我能够发现设备,连接设备,发现服务并读取未加密的特征 .
当我尝试读取加密特性(一个会导致iOS显示弹出窗口要求配对然后完成读取)时,我得到一个 error code 5 ,对应于Insufficient Authentication .
我不确定如何使设备配对或如何提供读取完成的身份验证信息 .
我通过尝试添加描述符来玩弄BluetoothGattCharacteristics,但这也不起作用 .
任何帮助表示赞赏!
3 回答
当您收到GATT_INSUFFICIENT_AUTHENTICATION错误时,系统会为您启动绑定过程 . 在下面的例子中,我试图在葡萄糖监测器上启用通知和指示 . 首先,我启用葡萄糖测量特征的通知,这可能导致错误出现 .
mBondingBroadcastReceiver的位置是:
请记住在退出活动时取消注册广播接收器 . 它可能没有被接收者本身注册 .
我认为新的android 4.4提供了配对方法 . 同样的问题我已经面临所以等待更新和希望解决问题解决createBond()方法 .
http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#setPairingConfirmation%28boolean%29
您可能需要检查内核smp.c文件,哪种方法可以调用它来进行配对 . 1)密钥2)正常工作等 . 我想如果它能够调用MIMT和密钥安全级别,就不会有任何身份验证问题 . 确保将所有标志设置为调用SMP密钥方法 . 通过在smp.c文件中放置一些打印来跟踪 .
在ICS中运行的解决方案:在android中使用btmgmt工具并将其挂钩在加密API中 . 使用密钥或任何其他方法 . 有用 . 您可能需要从最新的bluez代码中添加btmgmt中的密钥API .