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