同じ質問の投稿をいくつか見ましたが、問題の解決策を得ることができませんでした。
新しい 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;
}
誰にもこれに対する解決策はありますか?私はこの問題に頭を悩ませてきましたが、リードを得ることができませんでした. どんな助けでも大歓迎です。