蓝牙免提客户端音量控制


80

我有一个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);
    }

当我在电话上更改音量时,我确实看到了显示声音的更新值的日志,这意味着该setStreamVolume()方法正在被调用,但音量没有变化。

有谁知道是什么原因导致此问题?

编辑:

我仍在寻找答案,现在正在寻找音频HAL实施方案。我怀疑HAL和音频驱动程序之间的链接某种程度上是不正确的...我对底层实现不太了解,也不确定我应该寻找什么。


1
我忘了提:Kitkat中不存在HFPClient类:android.googlesource.com/platform/frameworks/base / + / ...它们是从棒棒糖反向移植的,因此我使用的代码与棒棒糖实现相同。
2015年

1
我现在可能正在朝这个方向进行调查。同时,我想知道是否存在带有HFP客户端配置文件的android已知行为,从而阻止了它控制音量。
2015年

1
奇怪的是声音正常运行,正在传递蓝牙音量更改事件,并以应有的方式调用setStreamVolume()方法。它似乎似乎无法调节音量...
Distwo

我已经在不同的硬件上进行了测试,但是所有这些都具有相同的架构,因为这是我的自定义ROM支持的唯一架构...
Distwo 2015年

Answers:


3

您可以尝试以下吗?我没有尝试过自己,但如果我正确理解的话,可能会遇到类似的问题:

Android蓝牙耳机音量

Android正在将int 6用于蓝牙音量,而未记录。仅使用6代替AudioManager.STREAM_VOICE_CALL并尝试,它应该可以工作

我假设您将用6取代AudioManager.STREAM_BLUETOOTH_SCO。

祝你好运,我希望它能起作用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.