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

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 블루투스 이어폰 볼륨

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

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

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


답변