2015-03-31 130 views
3

我是新的android编程和尝试获取rssi值形成一个BLE设备的距离测量。我可以扫描并获取设备的名称和mac地址,但我已经尝试过代码来获取rssi,但无法获得有用的结果,我也使用Android开发人员网站上的示例。 有人可以给我正确的代码吗?如何获取蓝牙低功耗设备的rssi值?

+0

可以请您分享一下工作代码。请。谢谢。 – imsrgadich 2017-08-17 09:33:48

回答

12

为此提供了两种解决方案。对于4.0和5.0设备搜索/扫描BLE设备有不同的方法。你没有提到你正在使用哪一个,因此添加了下面的解决方案。

1)对于Android 4.4 +至5.0,您必须通过BluetoothAdapter'sstartLEScan方法启动LE扫描,这会为您提供以下RSSI值的回调。见方法的签名。

onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) 

//上面的第二个参数是RSSI值。

2)对于Android 5.0以上版本的设备,你必须开始通过BluetoothLeScanner类的startScan方法扫描,如下面

getBluetoothLeScanner().startScan 

其中有回调onScanResult通知新的扫描设备,可以使用下面的代码来获得RSSI 。

public void onScanResult(int callbackType, ScanResult result) { 
final int rssi = result.getRssi(); //RSSI value 
+0

我正在使用android 4.3,我使用了第一个解决方案,它可能工作。谢谢 ! – alaa 2015-03-31 21:06:28

+1

@alaa,RSSI进来 - 价值,从-100到0. 如果它适合你,你可以接受答案。 – AAnkit 2015-04-01 02:45:23

+0

是的,它给我形成这个范围:)谢谢 – alaa 2015-04-01 07:29:01