iBeacon(Kontakt Beacon)区域监控在android

Posted

技术标签:

【中文标题】iBeacon(Kontakt Beacon)区域监控在android【英文标题】:iBeacon(Kontakt Beacon) Region Monitoring In android 【发布时间】:2016-07-27 15:45:13 【问题描述】:

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

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

所以问题是,当手机蓝牙关闭(场外位置(GPS)打开)时,这是否可以监控一个区域,如果是,那么如何,请提供任何示例或代码 sn-p。

由于我们有“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");
    

【问题讨论】:

【参考方案1】:

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

虽然这看起来很明显,但这是一个公平的问题,因为即使 WiFi 已关闭,Google 也会在内部扫描 WiFi 网络以进行定位。但是,蓝牙并非如此。

【讨论】:

感谢@davidgyoung 的快速回复。

以上是关于iBeacon(Kontakt Beacon)区域监控在android的主要内容,如果未能解决你的问题,请参考以下文章

(Kontakt.io) iBeacon didEnterRegion 没有被解雇

访问电池供电的 iBeacon 设备(主要是 kontakt io 设备)的电池电量?

iPhone 休眠时无法检测到 Beacon 设备。(进入后台)

ibeacon是啥?能实现哪些功能?

稳定 iBeacons 上的 rssi

连接到 iBeacon