首页 > 解决方案 > 设备音量控制按钮不使用音频属性设置耳机音量 USAGE_VOICE_COMMUNICATION

问题描述

播放音频文件时,我将声音从外部扬声器切换到内部扬声器(耳机)。音频通过SimpleExoPlayer播放。通过USAGE_VOICE_COMMUNICATION属性进行切换。声音开始通过听筒播放,但此声音的音量不受系统音量按钮控制,系统中媒体的音量会发生变化。

我尝试将 setContentType 设置为 CONTENT_TYPE_SPEECH,问题仍然存在。

该问题在 Google Pixel XL (Android 10)、一加 7t (Android 10) 上再次出现。但在三星 Galaxy S9 (Android 10) 上没有重复。

进行这种切换以使正确扬声器的音量发生变化的正确方法是什么?

这是我的属性:

private fun setupAttributesWithExternalSpeaker() {
    val audioAttributes = AudioAttributes.Builder()
            .setContentType(C.CONTENT_TYPE_MUSIC)
            .setUsage(C.USAGE_MEDIA)
            .build()

    simpleExoPlayer.setAudioAttributes(audioAttributes, true)
}

private fun setupAttributesWithInternalSpeaker() {
    val audioAttributes = AudioAttributes.Builder()
            .setContentType(C.CONTENT_TYPE_MUSIC)
            .setUsage(C.USAGE_VOICE_COMMUNICATION)
            .build()

    simpleExoPlayer.setAudioAttributes(audioAttributes, false)
}

完整的球员课程在这里

标签: androidaudioexoplayer

解决方案


如何使用 AudioManager.setMode

AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.MODE_IN_COMMUNICATION);

推荐阅读