BLE广告数据在一段时间后停止工作(溢出?)

时间:2019-02-25 17:00:32

标签: android bluetooth bluetooth-lowenergy

我有一个设备可以传输有关汽车速度,转速等的广告数据(无法连接)。我的Android应用每10秒钟左右读取一次该数据。该应用将需要始终在后台读取数据。它可以正常工作约一个小时左右,但随后会停止工作。 ScanCallback方法停止调用,包括onScanResult和onScanFailed。

开始扫描的方法:

ScanSettings settings = new ScanSettings.Builder()
            .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
            .build();
    scanner.startScan(null, settings, callback);

ScanCallback:

private ScanCallback mScanCallback = new ScanCallback() {
    @Override
    public void onScanResult(int callbackType, ScanResult result) {
        //Update the UI with the latest info
        final BluetoothDevice remoteDevice = result.getDevice();
        final ScanRecord record = result.getScanRecord();

        if(remoteDevice.getName() == null){
            return;
        }
        else if(!remoteDevice.getName().equals("BT-ext")){
            return;
        }


        //Post scan update to the UI thread
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                updateScanResult(record);
            }
        });
    }

    @Override
    public void onScanFailed(int errorCode) {
        Log.w(TAG, "Error scanning devices: "+errorCode);
    }
};

updateScanResult将执行一些ui工作,停止ble扫描,然后再次重新启动。我认为蓝牙已经溢出,这就是为什么我重新开始扫描。但是,它没有任何区别。

我已经在Pixel 3和Samsung S9上进行了测试,它们都过了一会儿就停止工作。我知道Android 7.0发生了蓝牙更改,但我认为这些限制不适用于此处。蓝牙由于被重置而无法运行超过30分钟。

0 个答案:

没有答案