2

Android で Bluetooth Low Energy (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 cm 離れた場所にビーコンを置いていますが、現実的な -45 前後の値を読み取りましたが、+80 または +100 前後の値 (現実的ではありません) も読み取りました。これらの値は測定値の約 20% です。私が見逃しているものはありますか?ありがとう

4

2 に答える 2