2017-10-24 1 views
0

Android BLE 스택으로 인한 임의 연결 해제에 문제가 있습니다.Ble disconnect 133

device.connectGatt을 호출 한 직후 내 onConnectionStateChange 메서드에서 상태 133의 연결이 끊어집니다. 모든 종류의 Android 버전을 실행하는 여러 기기에서이를 테스트했으며 대부분의 Android 버전에서 발생합니다. (다소 자주)

이 동작이 너무 많은 요청 또는 잘못된 등록 된 표시로 인해 발생하는 것으로 보이는 경우가 있지만 내 경우에 연결이 끊어지기 전에 활성 연결조차 없습니다. 또한 나는 아무것도하지 않았지만 연결 요청은이 일이 일어나기 전에 장치로 보내졌다.

누군가 나를 도와 줄 수 있기를 바랍니다.

답변

0

"오래된"Android 버전에서 BLE 지원은 매우 위험 할 수 있으며 BLE 메커니즘은 파악하기 쉽지 않습니다.

나는 당신과 같은 문제가있었습니다. 나는 현재 RxAndroidBle을 사용하고 있지만, 기본적으로 OS API를위한 래퍼이며, 작업을 매우 쉽게하므로 권장됩니다.

은 BLE를 처리 할 때 기억해야 몇 가지가 있습니다
- 항상 가까운 연결 이전 버전에

, 당신이 (아주 신비)에있는 boolean autoConnect 매개 변수를 설정 - 한 번
에 한 명령 스캔하지 않는 동안 장치에 연결하려고 할 때 true로 설정하십시오.
방금 ​​BLE 장치에 안드로이드 < 6에 연결하지 못했습니다.이 매개 변수를 설정하고 voilà, 마술이 일어났습니다.

+0

답변 해 주셔서 감사합니다. 저는 기존 연결을 닫고 제거 할 때 이미 실제로 조심합니다. 또한 가능한 모든 동기를 유지하려고 시도 했으므로 연결이 여러 스레드에서 사용될 수있는 방법이 없습니다. 하지만'autoConnect'를 시도해보고 어떤 일이 일어나는 지 봅니다. – user2700475

+0

그냥 보내주세요. :) 그렇지 않다면 RxAndroidBle을 사용하여 작은 샘플 프로젝트를 설정하고 나와 함께 사용할 수 있으므로 테스트 할 수 있습니다. 연결하려는 BLE 장치에 대한 특수성을 추가 할 수도 있습니다. 페어링/본딩이 있습니까? 다른 Android 기기입니까? 사용 된 Gatt 프로파일은 무엇입니까? – w00ly

관련 문제