현재 블루투스 저에너지를 사용하는 애플리케이션을 개발 중입니다 (Nexus 4에서 테스트). Android 4.3에서 공식 BLE API를 시작한 후 처음으로 장치를 연결 한 후에는 해당 장치 또는 다른 장치에 다시 성공적으로 연결 / 통신 할 수없는 것으로 나타났습니다.
여기에 있는 안내서에 따라 문제없이 장치에 성공적으로 연결하고 서비스 및 특성을 검색하며 알림을 읽고 쓸 수 있습니다. 그러나 연결을 끊고 다시 연결 한 후 서비스 / 특성을 스캔하거나 읽기 / 쓰기를 완료 할 수없는 경우가 종종 있습니다. 왜 이런 일이 발생했는지 나타내는 로그에서 아무것도 찾을 수 없습니다.
이 문제가 발생하면 응용 프로그램을 제거하고 Bluetooth를 비활성화 한 다음 전화를 다시 시작해야 작동합니다.
장치가 연결 해제 될 때마다 BluetoothGatt 객체에서 close ()를 호출하고 null로 설정해야합니다. 통찰력이 있습니까?
편집 :
로그 덤프 :이 로그의 경우 휴대 전화를 근절하고 /etc/bluetooth/bt_stack.conf에서 관련 항목의 추적 수준을 올렸습니다.
연결 성공 -전화를 재부팅하고 앱을 설치 한 후 먼저 시도하십시오. 연결하고 모든 서비스 / 특성을 발견하고 읽고 쓸 수 있습니다.
실패한 시도 1- 위의 성공적인 연결에서 연결을 끊은 다음 시도입니다. 특성을 발견 할 수 있었지만 첫 번째 시도는 null 값을 반환하고 곧 연결이 끊어졌습니다.
Failed Attempt 2- 서비스 / 특성을 발견 할 수없는 예입니다.
편집 2 :
연결하려는 장치는 TI의 CC2541 칩을 기반으로합니다. 나는 함께 놀 수있는 TI SensorTag (CC2541 기반)를 얻었고 TI가 어제 SensorTag 용 Android 앱 을 출시했음을 발견했습니다 . 그러나이 앱은 같은 문제가 있습니다. 동일한 결과로 두 개의 다른 Nexus 4에서 이것을 테스트했습니다. SensorTag에 대한 연결이 처음 또는 두 번 성공했지만 (로그에 따라) 이후에 서비스를 검색하지 못해 모든 종류의 충돌이 발생합니다. 이 특정 칩에 문제가 있는지 궁금해지기 시작했습니다.