0
我想连接最近的无线设备。如何获得/计算rssi的最近距离?如何从android连接最近的蓝牙低功耗设备?
例如,房间中有2个可调设备。当我走进那个房间时,我的android设备将从我的位置连接最近的可移动设备。
我正在使用don cordova插件和javascript。这个项目在Android设备上运行。
我想连接最近的无线设备。如何获得/计算rssi的最近距离?如何从android连接最近的蓝牙低功耗设备?
例如,房间中有2个可调设备。当我走进那个房间时,我的android设备将从我的位置连接最近的可移动设备。
我正在使用don cordova插件和javascript。这个项目在Android设备上运行。
您可以使用Android灯塔库: https://altbeacon.github.io/android-beacon-library/
它给出了距离读数(这是不准确),但你可以用它们来检测哪个信标更接近。
一个例子:
public class RangingActivity extends Activity implements BeaconConsumer {
protected static final String TAG = "RangingActivity";
private BeaconManager beaconManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ranging);
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.bind(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
beaconManager.unbind(this);
}
@Override
public void onBeaconServiceConnect() {
beaconManager.addRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
Log.i(TAG, "The first beacon I see is about "+beacons.iterator().next().getDistance()+" meters away.");
}
}
});
try {
beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
} catch (RemoteException e) { }
}
}
否则,您可以读取RSSI的设备和平均出来过了一段时间,并采取了异常值。越接近的那个越大(幅度越大,越积极)。
更高的RSSI colser是一般的设备。但由于设备的TX强度设置,它可能不正确。 –
哪一个更好,使用最高rssi或先计算它以米为单位的距离?我找到它的公式http://developer.radiusnetworks.com/2014/12/04/fundamentals-of-beacon-ranging.html –
你不能计算距离RSSI。不可能。你甚至可以面对更近设备RSSI更低的情况 –