[英]How to get connect with closest bluetooth low energy device from android ?
我想与最近的ble设备连接。 如何获取/计算与rssi的最近距离?
例如,一个房间里有2个ble设备。 当我走进那个房间时,我的android设备将与我所在位置最近的ble设备连接。
我正在使用don cordova插件和javascript。 该项目在android设备上运行。
您可以使用Android Beacon库: 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,并在一段时间内对它们进行平均,然后取出异常值。 值越接近则值越大(正值越大)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.