简易防丢器
更新时间:2017-08-08 阅读:2796
功能介绍
防丢器应用的主要功能有:
- 管理防丢器设备的连接。防丢器可以连接多个设备,需要把多个设备的连接管理起来。
- 报警。防丢器应用可以发送命令到防丢器,然后防丢器会打开蜂鸣器发出报警音。
- 反向报警。防丢器应用可以监听防丢器发来的通知,然后防丢器应用发出报警音。
- 防丢报警。当防丢器跟防丢器应用之间的距离超出一定范围,防丢器和防丢器应用都发出报警音。
管理连接
管理连接,防丢器应用需要用一个列表来存储每个防丢器的BluetoothGatt
对象。首先用startLeScan()
和stopLeScan()
方法来查找BLE设备。然后用connectGatt()
方法来连接BLE设备,期间可以确认BLE设备是否防丢器应用可识别的防丢器,如果是则把BluetoothGatt
对象加入到防丢器应用的防丢器列表中。最后当不需要防丢器时,防丢器应用要调用close()
方法来关闭连接。
报警
有了防丢器的BluetoothGatt
对象,防丢器应用可以用readCharacteristic()
和writeCharacteristic()
方法对防丢器相应的服务特征进行读写。而防丢器就可以响应这些对象实现蜂鸣器报警。
反向报警
有了防丢器的BluetoothGatt
对象,防丢器应用可以用setCharacteristicNotification()
方法对防丢器某个服务特征进行监听,并在BluetoothGattCallback
对象的onCharacteristicChanged()
方法中得到响应。然后根据接收到的数据,防丢器应用可以发出报警音来回应。
防丢报警
有了防丢器的BluetoothGatt
对象,防丢器应用可以用readRemoteRssi()
方法读取防丢器当前的rssi值,rssi值是负整数,表示防丢器应用和防丢器连接的信号强度,rssi值越小信号强度越小,防丢器应用可以用rssi值来估计防丢器应用和防丢器之间的距离。调用readRemoteRssi()
方法后,会在BluetoothGattCallback
对象的onReadRemoteRssi()
方法中得到响应。然后防丢器应用判断防丢器的rssi值小于某个值时,防丢器应用触发报警。
开发中的注意事项
在开发中我们要主要以下事项:
- 在实现防丢报警时,防丢器应用要隔一段时间调用
readRemoteRssi()
方法来读取rssi值。 - 由于Android设备之间的千差万别,BLE连接的信号强度可能不一样,rssi值的实际范围就不一样了。
- 由于一个防丢器应用连接多个BLE防丢器,在每个防丢器调用
readCharacteristic()
,writeCharacteristic()
,setCharacteristicNotification()
和readRemoteRssi()
方法时要注意线程安全,尽量不要同时并且大量地调用这些函数,因为可能会对Android设备的Bluetooth功能带来巨大负荷,而出现异常。