블루투스 핸즈프리 클라이언트 볼륨 제어
hfp를 사용하여 핸즈프리 클라이언트 장치로 작동하는 Android 장치가 있습니다.
전화를받을 수 있고 스피커와 마이크가 예상대로 작동합니다.
내 문제는 볼륨을 제어 할 수 없다는 것입니다.
올바른 스트림을 찾기 위해 다음 코드 줄을 사용했지만 작동하지 않는 것 같습니다.
전화에서 클라이언트로 전송되는 볼륨 명령을 HeadsetClientStateMachine
다음 링크의 # 1822 라인 에서 추적했습니다 . HeadsetClientStateMachine from lolipop
case EVENT_TYPE_VOLUME_CHANGED:
if (event.valueInt == HeadsetClientHalConstants.VOLUME_TYPE_SPK) {
mAudioManager.setStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO, event.valueInt2, AudioManager.FLAG_SHOW_UI);
mVgsFromStack = true;
Log.d(TAG, "EventVolumeChange STREAM_BLUETOOTH_SCO value: " + event.valueInt2);
}
전화에서 볼륨을 변경하면 사운드의 업데이트 된 값을 보여주는 로그가 표시됩니다. 즉, setStreamVolume()
메서드가 호출되고 있지만 볼륨은 변경되지 않습니다.
이 문제의 원인이 무엇인지 아는 사람이 있습니까?
편집하다:
나는 여전히 답을 찾고 있으며 이제 오디오 HAL 구현을 찾고 있습니다. HAL과 오디오 드라이버 사이의 링크가 어떻게 든 잘못된 것 같습니다. 저수준 구현에 대해 잘 모르고 무엇을 찾아야할지 모르겠습니다.
아래에서 시도해 주시겠습니까? 나는 시도하지 않았지만 올바르게 이해하면 비슷한 문제가 들립니다.
" Android는 블루투스 볼륨에 int 6을 사용하고 문서화되지 않았습니다. AudioManager.STREAM_VOICE_CALL 대신 6을 사용하고 시도해보세요. 작동합니다. "
AudioManager.STREAM_BLUETOOTH_SCO를 6으로 대체 할 것이라고 가정합니다.
행운을 빕니다. 효과가 있기를 바랍니다.
참고 URL : https://stackoverflow.com/questions/32321794/bluetooth-hands-free-client-volume-control
'Development Tip' 카테고리의 다른 글
원시 스토리지를 사용할 때 EBO를 에뮬레이트하는 방법은 무엇입니까? (0) | 2020.10.10 |
---|---|
ElasticSearch 다단계 부모-자식 집계 (0) | 2020.10.10 |
Docker 및 --userns-remap, 호스트와 컨테이너간에 데이터를 공유하기 위해 볼륨 권한을 관리하는 방법은 무엇입니까? (0) | 2020.10.10 |
Java 문자열에서 인쇄 할 수없는 모든 문자를 제거하는 가장 빠른 방법 (0) | 2020.10.10 |
2012 년 6 월 12 일부터 내 웹 사이트에서 요청한 URL의 1 %에 "정의되지 않음"이 무작위로 추가됨 (0) | 2020.10.10 |