2016-12-29 13 views
0

일부 로깅의 경우 장치에서 Bluetooth HCI 로그를 활성화해야합니다. 물론 이것은 개발자 설정 메뉴에서 쉽게 할 수 있지만 대부분의 사용자는 익숙하지 않아 프로그래밍 방식으로하고 싶습니다. 이러한 장치는 루팅되지 않으므로 수동으로 bt_stack.conf 파일을 편집 할 수 없습니다.프로그래밍 방식으로 Bluetooth HCI 로그 사용

인터넷을 검색하면서 숨겨진 API 메소드 BluetoothAdapter.configHciSnoopLog()을 발견했습니다. 정말 SDK 단지 건드리고 싶지 않아, 그래서 같이,이 방법에 액세스하기 위해 반사를 사용하고 싶었 :

Method configHciSnoopLogMethod = BluetoothAdapter.class.getDeclaredMethod("configHciSnoopLog", boolean.class); 
Object r = configHciSnoopLogMethod.invoke(BluetoothAdapter.getDefaultAdapter(), true); 

이 ~ 내가 테스트 장치의 20 % (true을 반환에 대해 잘 작동합니다) 나머지는 false을 반환합니다 (약 20 개의 다른 장치 중). 나는이 응용 프로그램에 올바른 BLUETOOTH_ADMIN 권한을 부여하고 있으므로 작동하지 않는 이유를 알 수 없습니다. 메인 설정 응용 프로그램의 AOSP 소스 코드를 살펴보면 내부적으로 수행하는 작업과 정확히 같습니다 (물론 반영하지 않고). 제가 누락 된 것이 있습니까? 일부 권한을 추가해야합니까?

도움 주셔서 감사합니다.

답변

1
Settings.Secure.putInt(context.getContentResolver(), "bluetooth_hci_log", 1);