1

同じ質問の投稿をいくつか見ましたが、問題の解決策を得ることができませんでした。

新しい BLE API のコールバック関数 (onScanResult) が、ペリフェラルからのアドバタイジング パケットを初めて検出することがわかりました。後続のパケットがまったく表示されません。奇妙なことは、それが少数のデバイスでのみ発生することです. Lollipop を実行している S4 では発生しませんが、One Plus one でこの問題が発生しています。しかし、Bluetooth 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