当前位置: 首页 > 知识库问答 >
问题:

Android api 24后台altbeacon监控不起作用

殷承恩
2023-03-14
public class MainApplication extends Application implements ReactApplication, BootstrapNotifier {

private static final String BEACON_TAG = "BeaconModule";

// TODO get server url from gradle
public static final String SERVER_URL = "";

private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
    @Override
    public boolean getUseDeveloperSupport() {
        return BuildConfig.DEBUG;
    }

    @Override
    protected List<ReactPackage> getPackages() {
        return Arrays.<ReactPackage>asList(
                new MainReactPackage(),
                new VectorIconsPackage(),
                new RNSharedPreferencesReactPackage()
        );
    }
};

@Override
public ReactNativeHost getReactNativeHost() {
    return mReactNativeHost;
}

@Override
public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);

    initializeBeaconManager();

}

private void initializeBeaconManager() {
    new BackgroundPowerSaver(this);
    BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
    beaconManager.getBeaconParsers().clear();
    beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
    beaconManager.setBackgroundScanPeriod(10000L);
    beaconManager.setBackgroundBetweenScanPeriod(30000L);
    initializeBeaconRegions();
}

public void initializeBeaconRegions() {
    BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
    List<Region> regions = new ArrayList<Region>();

    /* here is some stuff to get new regions from server*/

    List<Region> deleteRegions = new ArrayList<>();
    for (Region mRegion : beaconManager.getMonitoredRegions()) {
        if (!regions.contains(mRegion)) {
            deleteRegions.add(mRegion);
        }
    }
    for (Region delRegion : deleteRegions) {
        beaconManager.getMonitoredRegions().remove(delRegion);
    }

    new RegionBootstrap(this, regions);
}

@Override
public void didEnterRegion(Region region) {
    Log.d(BEACON_TAG, "did enter region.");
}

@Override
public void didExitRegion(Region region) {
    Log.d(BEACON_TAG, "did exit region.");
}

@Override
public void didDetermineStateForRegion(int i, Region region) {
}}

共有1个答案

苏畅
2023-03-14

看起来,索尼Z5没有检测蓝牙LE数据包,当应用程序在后台。这可能是设备特定的问题,也可能是供应商特定的OS修改。

这可能有助于找到一个解决方案,在应用程序进行全面扫描的后台期间捕获额外的调试日志(包括系统级调试消息,而不仅仅是应用程序)。使用问题中显示的设置,这将每40秒发生10秒,并由如下所示的调试行指示:

04-12 15:52:20.989 15256-15256/com.workzonemobile D/CycledLeScannerForLollipop: starting non-filtered scan in SCAN_MODE_LOW_LATENCY

如果你能提供一个60秒的日志,围绕这样的一行摘录,我也许能用一些更有用的东西来补充这个答案,以解决你的问题。

 类似资料:
  • 我收到didEnterRegion没有问题,但我有一个问题。在didEnterRegion中,我接收区域作为参数,但我能知道启动事件的具体信标吗?我想知道启动此事件区域的信标的id1、id2和id3,这可能吗? 提前致谢

  • 问题内容: 我在iOS上的FCM通知有问题。 我收到成功通知时,我的应用程序是在前台(回调中被激发),但是当应用程序在后台(我看不出在iOS中的通知栏的任何东西)我没有收到通知。 因此,我认为问题在于FCM发送的消息格式。我的服务器发送到FCM的json格式如下: 如您所见,我的json中有两个块:一个通知块(用于在后台接收通知)和一个数据块(用于在前台接收通知)。 我不明白为什么没有收到后台通知

  • ap.onAppResume(CALLBACK) 监听应用从后台唤起事件。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <h2 class="am-ft-center">点击 Home 键回到手机桌面</h2> <scr

  • 在数据采集一节中我们介绍了常见的监控数据源。open-falcon作为一个监控框架,可以去采集任何系统的监控指标数据,只要将监控数据组织为open-falcon规范的格式就OK了。 Windows主机的运行指标的采集,可以写Python脚本,通过windows的计划任务来每分钟执行采集各项运行指标,包括内存占用、CPU使用、磁盘使用量、网卡流量等。 可以直接使用以下 window 监控程序进行 w

  • 我尝试在用户到达定义的区域时向其显示推送警报。 所以我在https://developer.android.com/training/location/geofencing编写了我的应用程序 如果我的应用使用遵循用户位置的服务运行,则它可以正常工作。 例如,如果我启动谷歌地图,它也会跟踪我的位置。推送会出现。 但是,如果我关闭我的应用程序,推送将不会显示,因此如果没有应用程序跟踪我的位置,则不会检

  • 我最近将iOS设备升级为使用iOS 7。我们正在开发的一个应用程序使用后台位置服务跟踪设备位置,我们所有的测试人员都报告说,在iOS 7下,该应用程序似乎不再在后台跟踪设备位置。 我们已经验证了应用程序的背景在设备上的设置中启用,并且之前的版本在iOS6下完美运行。即使设备被循环使用,应用程序也会在位置更新后重新启动。 在iOS7下,是否还需要做些什么来使这项工作发挥作用?