Ich weiß, es gibt viele Fragen zu Stackoverflow im Zusammenhang mit meiner Frage, aber ich würde gerne wissen, ob es eine Möglichkeit gibt, die genaue Entfernung von RSSI zu erhalten.Entfernung Berechnung von RSSI BLE Android
Ich habe this link und einige andere git library methods for distance calculation sowie diese tutorial gefolgt. Aber ich kann nicht die richtige Lösung finden.
Dies ist, was ich bin mit dem Abstand messen:
protected double calculateDistance(float txPower, double rssi) {
if (rssi == 0) {
return -1.0; // if we cannot determine distance, return -1.
}
double ratio = rssi * 1.0/txPower;
if (ratio < 1.0) {
return Math.pow(ratio, 10);
} else {
double accuracy = (0.89976) * Math.pow(ratio, 7.7095) + 0.111;
return accuracy;
}
}
Wenn ich diese Methode, die ich die standard passieren nennen und RSSI, was ich von meinem mLeScanCallBack bekommen()
private BluetoothAdapter.LeScanCallback mLeScanCallback =
new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
BluetoothDeviceModel bluetoothDeviceModel = new BluetoothDeviceModel(device, rssi);
mLeDeviceListAdapter.addDevice(bluetoothDeviceModel, rssi, bluetoothDeviceModel.device.getAddress());
mLeDeviceListAdapter.notifyDataSetChanged();
if (mapBluetooth != null) {
mapBluetooth.put(bluetoothDeviceModel.getDevice().getAddress(), bluetoothDeviceModel);
mLeDeviceListAdapter.refresh(mapBluetooth);
}
}
});
}
};
Welches Problem ich gegenüberstelle?
Es ist nichts falsch mit dem obigen Code. Es gibt mir die Distanz, aber ich bin damit nicht zufrieden, weil es nicht die richtige Entfernung ist. Kann mir jemand sagen, ob es möglich ist, die genaue Entfernung mit der oben genannten Methode zu erreichen oder ob es anders geht?
Ich bin in der gleichen Situation wie Sie, die RSSI-Signale nicht perfekt sind, weil auf die Umwelt gibt es viele Faktoren gibt, Diese verzerren die Signale als Magnetismus und andere Dinge, die die Signale beeinflussen. Es gibt mehrere Filter, die Rauschsignale als "Kalman-Filter" oder "Partikelfilter" entfernen, aber ich habe nicht gefunden, wie man es anwendet, wenn Sie ein RSSI-Signalfeld haben, wenn Sie einen Weg finden, sagen Sie mir bitte! –
hast du irgendwelche lösungen bekommen? – Araf
Niemand tut mir leid, bis ich keine genaue Lösung für diese Berechnung bekommen habe –