繁体   English   中英

如何从android与最近的蓝牙低能耗设备建立连接?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM