我正在基于信标设备的应用程序上工作。场景是,当用户通过信标设备范围到附近时,他会收到通知。

为此,我试图在蓝牙处于关闭状态时在后台监视该区域,但是它不起作用,即我没有收到任何回调,即“ onRegionEntered”或“ onRegionAbandoned”。

因此问题是,当手机的蓝牙处于关闭状态(offcource Location(GPS)处于打开状态)时,是否可以监视一个区域,如果是,则如何进行,请提供任何示例或代码段。

由于我们拥有“ Kontakt” iBeacon设备,因此我正在使用kontakt sdk。
Kontakt SDK

我正在使用此配置进行区域监视

 private void configureProximityManager() {
    proximityManager.configuration()
            .scanMode(ScanMode.BALANCED)
            .activityCheckConfiguration(ActivityCheckConfiguration.MINIMAL)
            .forceScanConfiguration(ForceScanConfiguration.MINIMAL)
            //.deviceUpdateCallbackInterval(2000)
            .rssiCalculator(RssiCalculators.newLimitedMeanRssiCalculator(5))
            .monitoringEnabled(true)
            .monitoringSyncInterval(3);

    addReasonForMonitoring();

    //GcmNetworkManager.getInstance(this).cancelTask();
}

private void addReasonForMonitoring(){
    beaconRegions.clear();
    beaconRegions.add(getBeaconReason());
    proximityManager.spaces().iBeaconRegions(beaconRegions);
}

private BeaconRegion getBeaconReason(){
    return new BeaconRegion.Builder()
            .setIdentifier(FORKSPOT_REASON)
            .setProximity(UUID.fromString(BEACON_UUID))
            //.setMajor(restBeaconsInfo.getMajor())
            //.setMinor(restBeaconsInfo.getMinor())
            .build();

}
 private void startMonitoring() {
    Log.e(TAG,"start monitoring");
    int checkSelfPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION);

    if ((PackageManager.PERMISSION_GRANTED == checkSelfPermission) /*&& Utils.getBluetoothState()*/) {
        proximityManager.connect(new OnServiceReadyListener() {
            @Override
            public void onServiceReady() {
                Log.e(TAG, "startScanning");
                proximityManager.startScanning();
            }
        });
    } else {
        Log.e(TAG, "Permission not guaranteed or bluetooth is off");
    }
}

最佳答案

如果蓝牙关闭,则无法检测到蓝牙LE信标。这是操作系统的限制,并不特定于任何一个信标SDK。

尽管这看起来似乎很明显,但是考虑到Google内部会扫描WiFi网络以查找位置,即使WiFi处于关闭状态,这也是一个公平的问题。但是,蓝牙并非如此。

关于android - Android中的iBeacon(Kontakt Beacon)区域监控,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38617706/

10-12 05:05