2

我注意到有时RSSI值不正确。 我的代码只需调用启动扫描功能:onLeScan回调在Android上使用蓝牙低功耗(BLE)扫描返回异常正的RSSI值

mBluetoothAdapter.startLeScan(mLeScanCallback); 

,然后我读了回调的结果,并保存在一个文件中的结果:

private static BluetoothAdapter.LeScanCallback mLeScanCallback = 
     new BluetoothAdapter.LeScanCallback() { 
      @Override 
      public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) { 
       String objScanRec = bytesToHex(scanRecord); 
       outStr = rssi + ";" + objScanRec + ";" + device.getName() + ";" + beaconLocation + ";\n"; 
        try { 
         Raw_log.write(outStr); 
         Raw_log.flush(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
//    } 

      } 
     }; 

的问题是,我读了积极的RSSI值,也如果信标处于固定距离。 例如我在离手机(或智能手表)30厘米的灯塔处读取了约-45的值,这些值是现实的,但值也在+80或+100左右(这是不现实的),这些值约为测量值的20%。 有什么我失踪? 谢谢

+0

我可能是错的,但是这是电磁学是如何工作的?你无法得到确切的阅读,因为它们受到很多事物的干扰。 – dominik4142 2014-10-17 00:14:10

+0

嗨,不,你没有错,RSSI值本质上是一个近似的衡量标准,并不稳定。但是我期望的是标称值附近的振荡,比如从-45dBm到-35dBm,而不是正值,我也得到了100dBm(正值),这在智能手机中是不可能的(信号功率将达到几百KW) [链接] http://www.rapidtables.com/convert/power/dBm_to_Watt.htm 但感谢您的评论 – Filartrix 2014-10-17 01:00:54

+0

感谢您的链接!我刚刚检查了关于rssi的维基百科详情:它显示了从天线吸收的功率。也许读数来自WiFi /移动天线干扰蓝牙?我知道这些是不同的频率,但经过反弹或其他可能发生的事情后,可能会影响蓝牙天线的工作方式? – dominik4142 2014-10-17 01:07:24

回答

1

感谢您的帮助我发现这是一个只与三星Gear Live有关的问题。我想出了这个解决方案:

if(rssi > 0){ 
    rssi = rssi - 128; 
} 

我测试了解决方案,它工作正常。 (例如,所获得的正值校正后的现在类似负值,比如我读 -44 -45 -43 84 82 ,经过correctio成为: -44 -45 -43 -44 -46

0

这绝对不正常。我从未见过该回调中的rssi值为正值。典型值从-30到-120。

我怀疑数据写入日志或回读的方式有问题。如果你只是做一个常规的话会发生什么Log.d(TAG, "rssi="+rssi);你有没有看到正面的价值观?如果是这样,您是否可以分享摘录,以及您用于检测的设备型号以及您正在检测的设备?

+0

嗨,其实我也是这么想的,但我在调试器和LogCat中也看到正值: 10-16 18:49:07.615:D/RSSI SERVICE(1680):Rssi = -45 10-16 18 :49:07.725:D/RSSI服务(1680):Rssi = -45 10-16 18:49:07.825:D/RSSI服务(1680):Rssi = 77 10-16 18:49:07.925:D/RSSI服务(1680):Rssi = 77 10-16 18:49:08.035:D/RSSI服务(1680):Rssi = 79 10-16 18:49:08.135:D/RSSI服务(1680):Rssi = -53 10-16 18:49:08.245:D/RSSI SERVICE(1680):Rssi = -43 10-16 18:49:08。345:D/BluetoothAdapter(1680):stopLeScan() 该设备是三星Galaxy Gear,但我也有Nexus 5 – Filartrix 2014-10-17 01:57:56

+0

这些读数是否来自同一个检测到的设备?什么样的操作系统versionn在做检测?您可以使用不同的Android设备进行扫描来重现这些结果吗? – davidgyoung 2014-10-17 12:01:59

+0

嗨,这只是一个设备的日志。 操作系统是Android Wear 4.4W.1,版本:KGW42N。我使用Android L(预览版)在Nexus 5上使用相同的代码,在Android 4.4上使用Galaxy S4。但是我只能在智能手表上重现这个问题。这两款手机对于RSSI – Filartrix 2014-10-17 18:51:19