1

我看过一些关于相同问题的帖子,但我无法为我的问题找到解决方案。

我看到新 BLE API 的回调函数 (onScanResult) 仅第一次检测到来自外围设备的广告数据包。我根本看不到后续的数据包。奇怪的是,它只发生在少数设备上。在运行 Lollipop 的 S4 上不会发生这种情况,但我在一加一上看到过这个问题。但是我已经能够使用蓝牙 Gatt 方法连接到外围设备。

我也开始和停止扫描,中间有大约 2 秒的延迟。如果我在 Lollipop 设备上使用旧 API,它似乎工作正常,但扫描似乎要慢得多。

             if (isScanning)
                    {

                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
                        {

                            if(first_time)
                            {
                                first_time = false;
                                scanner = BluetoothAdapter.getDefaultAdapter().getBluetoothLeScanner();
                                settings = new ScanSettings.Builder()
                                        .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY
                                        )
                                        .build();

                                filters = new ArrayList<ScanFilter>();

                            }

                   scanner.startScan(filters, settings, new scancallback());

                        }else {
                            mBluetoothAdapter.startLeScan(mLeScanCallback);
                        }

                        isScanning = !isScanning;
                    }


               try {
                Thread.sleep(2000);
            } catch (InterruptedException ie) {
                Log.e(TAG, "MonitorThread.InterruptedException-1");
            }

         if (!isScanning) {

                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

                       scanner.stopScan(new scancallback());


                    } else {

                        mBluetoothAdapter.stopLeScan(mLeScanCallback);

                    }

                    isScanning = !isScanning;

                }

有人对此有解决方案吗?我一直在为这个问题头疼,但无法获得任何线索。任何帮助将不胜感激。

4

0 回答 0