2014-02-06 30 views
3

我是Android新手,我的應用使用藍牙從小型稱重放大器接收數據。而在某些設備(三星)中,BT信號強度(RSSI)如預期的那樣變化(從-20左右,在短距離到約-80,在10m),而另一些設備(至少一個LG模型)RSSI相當奇怪,在近距離處大約200(正值!)。我假設LG手機沒有給出dBm的RSSI值。在所有情況下,三星平板電腦和LG手機總是連接到同一個遠程設備(我的客戶正在開發的放大器樣本)。其實我的問題是,如果這是正常的,在這種情況下,不同的Android設備(或不同的Android版本)回答不同的相同的API調用。所有Android設備的藍牙RSSI值總是以dBm爲單位?

回答

4

RSSI是一個8位帶符號的二進制補碼整數(-128到127)。 如果您將該值作爲一個字節讀取,那麼您將獲得任何設備的正確值範圍。 如果你讀它作爲一個整數,或者你可能在某些設備上,但不正確的其他一些正確的價值觀結束的字符串...

200爲8位有符號二進制補碼整數等於-56

+0

大!我知道RSSI是8位有符號的,但我認爲我的代碼可以將RSSI轉換成整數而沒有問題: lastRssi =(int)intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE); – aguena

+0

我認爲你的代碼是正確的...我已經看到它在各地使用...但:短是16位,嘗試使用getByteExtra而不是getShortExtra ... 我認爲這樣它應該適用於所有設備 –

+0

@aguena是否爲您解決了這個問題?如果是這樣,請接受我的答案... –