블루투스 핸즈프리 클라이언트 볼륨 제어


80

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과 오디오 드라이버 사이의 링크가 어떻게 든 잘못된 것 같습니다. 저수준 구현에 대해 잘 모르고 무엇을 찾아야할지 모르겠습니다.


1
언급하는 것을 잊었습니다 : HFPClient 클래스는 Kitkat에 없습니다 : android.googlesource.com/platform/frameworks/base/+/… 그들은 lollipop에서 다시 포팅되었으므로 내가 사용하는 코드는 lollipop 구현과 동일합니다.
Distwo 2015-09-08

1
나는 지금 그 방향으로 조사 중일 수 있습니다. 동시에 나는 볼륨 제어를 방해하는 HFP 클라이언트 프로필이있는 안드로이드의 알려진 동작이 있는지 궁금합니다.
Distwo 2015 년

1
이상한 부분은 사운드가 작동하고 블루투스 볼륨 변경 이벤트가 전달되고 setStreamVolume () 메서드가 제대로 호출된다는 것입니다. 그냥 ... 볼륨을 조절할 수없는 것
Distwo

다른 하드웨어에서 테스트했지만 모두 동일한 아키텍처로 내 사용자 지정 ROM이 지원하는 유일한 것입니다 ...
Distwo

이것이 문제와 관련된 것이 있는지 궁금합니다. android.googlesource.com/platform/hardware/libhardware/+/…
Distwo

답변:


3

아래에서 시도해 주시겠습니까? 나는 시도하지 않았지만 올바르게 이해하면 비슷한 문제가 들립니다.

Android 블루투스 이어폰 볼륨

" Android는 블루투스 볼륨에 int 6을 사용하고 문서화되지 않았습니다. AudioManager.STREAM_VOICE_CALL 대신 6을 사용하고 시도해보세요. 작동합니다. "

AudioManager.STREAM_BLUETOOTH_SCO를 6으로 대체 할 것이라고 가정합니다.

행운을 빕니다. 효과가 있기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.