蓝牙免提客户端音量控制

Dis*_*two 80 android bluetooth android-4.4-kitkat hfp

我有一个Android设备充当使用hfp的免提客户端设备.

使用以下代码:

我能够接听电话,扬声器和麦克风按预期工作.

我的问题是我似乎无法控制音量.

我尝试使用以下代码行来查找正确的流,但它们似乎都不起作用.

我跟踪了从手机发送到类中客户端的音量命令HeadsetClientStateMachine,在以下链接中的#1822行:来自lolipop的HeadsetClientStateMachine

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);
    }
Run Code Online (Sandbox Code Playgroud)

当我更改手机上的音量时,我确实看到日志显示声音的更新值,这意味着setStreamVolume()正在调用该方法,但音量不会改变.

有谁知道可能导致这个问题的原因是什么?

编辑:

我仍然在寻找答案,现在正在寻找音频HAL实现.我怀疑HAL和音频驱动程序之间的链接在某种程度上是不正确的...我不太了解低级别的实现,我不确定我应该寻找什么.

小智 4

您可以尝试下面吗?我自己没有尝试过,但如果我理解正确的话,听起来类似的问题:

安卓蓝牙耳机音量

Android 使用 int 6 作为蓝牙音量,但没有记录。只需使用 6 而不是 AudioManager.STREAM_VOICE_CALL 并尝试,它应该可以工作

我假设您将用 6 替换 AudioManager.STREAM_BLUETOOTH_SCO 。

祝你好运,我希望它能成功。