2017-11-28 30 views
0

특정 응용 프로그램의 경우, 안드로이드 블루투스가 LE 장치를 계속 스캔해야하지만 일부 장치에서 로깅하지 않아도 멈출 것입니다. 다음과 같이 내 샘플 코드는 다음과 같습니다 나는 내가 "btsnoop_hci.log"들여다 보는 것이 그래서안드로이드 블루투스 스캐닝을 유지하지만 자체적으로 멈 춥니 다.

mBluetoothLeScanner.stopScan(leScanCallback) 

전화 결코 확신

mBluetoothLeScanner.startScan(null, mScanSettings, leScanCallback); 

. 컨트롤러가 일정 시간 (아마도 5 분 또는 10 분 이상) 동안 호스트에 브로드 캐스트 메시지를 보내지 않았다는 것을 알았습니다. 이 예제에서는 864.833537 초에 멈 춥니 다. 이 문제를 해결하는 데 도움을 준 사람이 있습니까?

+0

나는 완전히 무선 랜을 끄고 경우는 블루투스 검색에 잘 작동하는 것 같다 것을 찾을 수 있습니다. 이전에 같은 시간에 BLE 스캐닝과 WiFi를 사용한 경험이 있습니까? 알림없이 BLE 검색을 중지하지 않으려면 어떻게해야합니까? –

답변

0

Android 7.0에서는 30 분 이상 실행되는 모든 검색이 자동으로 효과적으로 중지되고 "기회 주의적"으로 다시 시작되는 BLE 검색 제한 시간이 도입되었습니다. 즉, 다른 프로세스가 검색을 수행하면 결과도 얻을 수 있습니다.

블루투스 LE 스캔을 시작하고 무한정 실행되도록 코드를 설정하면이 사실을 알 수 있습니다. 정확히 30 분 후, 검사가 중지됩니다, 당신은 로그 캣이 같은 항목이 표시됩니다

Source code

:

06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: clientIf set to scan opportunisticly: 6 
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: configureRegularScanParams() - queue=1 
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: configureRegularScanParams() - ScanSetting Scan mode=-1 mLastConfiguredScanSetting=2 
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: configureRegularScanParams() - queue emtpy, scan stopped 06-11 19:00:22.849 5123 5147 D BtGatt.ScanManager: stop scan 

당신은 여기 AOSP 소스에서이 작업을 수행하는 코드를 볼 수 있습니다 이에 대한 해결 방법은 스캔을 오래 유지하지 않는 것입니다. 단순히 중지하고 주기적으로 다시 시작할 수 있습니다.

편집 됨 :

Check on this link

+0

답장을 보내 주셔서 감사합니다. 안드로이드 7.0에서이 한계를 안다. 하지만 안드로이드 6.0 장치에서이 문제를 발견했습니다. 그리고 그것은 5 분에서 10 분 이상 멈춰서 btsnoop_hci.log에서 그 이유를 알아 내려고 시도합니다. –

+0

수정 된 답변 찾기 –

+0

나는 해결책이 될 것이라고 생각했기 때문에 동일한 방법 (1 분마다 멈추고 다시 시작한다.)을 구현한다. 몇 분 후에도 작동을 멈춘다. (ps. btsnoop_hci.log에 브로드 캐스트 메시지가 없다.) 이것은 이상한 것이다. 맡은 일. –