我需要知道使用 Android 2.1 手机与远程设备建立蓝牙连接的信号强度。从 SDK 可以看出,我可以在发现远程设备时确定 RSSI。但我看不到如何随着时间的推移更新该 RSSI 值。
有人可以帮帮我吗?谢谢!!
从 SDK 获取 RSSI 是唯一的方法。这有点不方便,因为如果您只想定期监控配对设备的信号强度,它就没有用了。
然而有一种方法,但在 SDK 之外。您可以使用原生 API(通过 NDK)和调用 Bluez API 提供的函数,Bluez API是 Android(以及几乎所有 linux 系统)中的底层蓝牙框架。有问题的功能hci_read_rssi()
由libbluetooth.so
(Bluez 堆栈的一部分)提供。为了了解如何使用它,您可以查看Hcidump 工具源(Bluez 附带)。您可以为您的函数编写一个 JNI 包装器代码,这样您就可以获得配对设备的信号强度。
使用这种方法有两个缺点:
hci_read_rssi()
。这比仅从信标测量 RSSI 慢,因为其他无线通信方式提供(GSM 或 WIFI)遗憾的是不适用于 Android 2.1,但请查看此 API for level 18 (Android 4.3),您可以对其进行投票:
BluetoothGatt.readRemoteRssi()
读取已连接远程设备的 RSSI。
在此处查看Android 文档