BLE后台服务扫描?

时间:2019-04-22 06:21:18

标签: android service bluetooth background

我正在尝试运行一个始终运行的后台服务,并扫描BLE广告。

我开始服务了。它可以按预期运行并一直运行。重新启动后台服务时(关闭活动之后),我正在启动BLE扫描:

mBluetoothLeScanner = BluetoothAdapter.getDefaultAdapter().getBluetoothLeScanner();

        ScanFilter.Builder builder = new ScanFilter.Builder();
        builder.setManufacturerData(0x0590,new byte[]{});
        ScanFilter filter = builder.build();
        filters = new ArrayList<ScanFilter>();
        filters.add( filter );
        ScanSettings settings = new ScanSettings.Builder()
                .setScanMode( ScanSettings.SCAN_MODE_LOW_LATENCY )
                .build();
  //      mBluetoothLeScanner.stopScan(mScanCallback);
        mBluetoothLeScanner.startScan(filters, settings, mScanCallback);

它可以工作30到50秒。在那之后,扫描回调将不发送广告数据。

您是否知道为什么将其停止,该怎么办? iBeacon或Eddystone是更好的解决方案吗?我的意图是在应用关闭时继续在后台监听来自BLE设备的消息。我正在将Android 8.1与小米Redmi 5配合使用。

1 个答案:

答案 0 :(得分:0)

在android 8 google之后添加一些Background limits,您可以阅读

我知道您有两种选择,一种是使用 JobScheduler ,另一种是使用 ForgroundServices (我使用此方法)