我需要知道使用 Android 2.1 手机与远程设备建立蓝牙连接的信号强度。从SDK中,我可以看到我可以在发现远程设备时确定RSSI。但我不知道如何随着时间的推移更新该 RSSI 值。
有人可以帮我吗?谢谢!!
从 SDK 中这是获取 RSSI 的唯一方法。这有点不方便,因为如果您只想定期监视配对设备的信号强度,则它没有用。
不过有一种方法,但是脱离了SDK。您可以使用原生API(通过NDK)并调用由蓝兹API http://www.bluez.org/,Android(以及几乎所有 Linux 系统)中的底层蓝牙框架。有问题的函数是hci_read_rssi()
由...提供libbluetooth.so
(Bluez 堆栈的一部分)。为了了解如何使用它,您可以查看Hcidump工具来源 http://www.bluez.org/download/(Bluez 附带)。您可以将 JNI 包装器代码编写到您的函数中,这样您就可以获得配对设备的信号强度。
使用这种方法有两个缺点:
- 要测量 RSSI,请必须首先连接到远程设备,至少在低级别(此连接不需要身份验证)并在调用后释放连接
hci_read_rssi()
。这比仅从信标测量 RSSI 慢,正如其他无线通信方式(GSM 或 WIFI)提供的那样
- 与远程蓝牙设备的低级连接需要 Android 超级用户权利。因此,忘记可以在未破解的手机上运行的编写和应用程序(它们通常没有 root 访问权限,有些摩托罗拉 Droid/Milestone 甚至如果您尝试获得它,保修就会失效)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)