【安卓13】解决HDMI OUT和耳机等设备接入时会解除静音问题

安卓原生定义了部分外部设备接入时是否静音,比如耳机、有线扬声器、HDMIOUT设备等,这些设备接入时,安卓会设置AudioSystem.STREAM_MUSIC为非静音状态

从代码里可以看出,当一个newDevice 接入时,会携带一个deviceID,然后根据设备ID判断这个 设备是否包含在解除静音的设备集合里

这里的几个设备分别对应

AudioSystem.DEVICE_OUT_WIRED_HEADSET 有线耳机
AudioSystem.DEVICE_OUT_WIRED_HEADPHONE 有线扬声器
AudioSystem.DEVICE_OUT_LINE 有线线路输出
AudioSystem.DEVICE_OUT_ALL_A2DP_SET A2DP蓝牙设备
AudioSystem.DEVICE_OUT_ALL_USB_SET USB音频设备
AudioSystem.DEVICE_OUT_HDMI AudioSystem.DEVICE_OUT_HDMI

大家按照自己所需移除调对应的设备即可,比如我不想让HDMIOUT接入的时候解除静音,就这样改

java 复制代码
    private static final Set<Integer> DEVICE_MEDIA_UNMUTED_ON_PLUG_SET;
    static {
        DEVICE_MEDIA_UNMUTED_ON_PLUG_SET = new HashSet<>();
        DEVICE_MEDIA_UNMUTED_ON_PLUG_SET.add(AudioSystem.DEVICE_OUT_WIRED_HEADSET);
        DEVICE_MEDIA_UNMUTED_ON_PLUG_SET.add(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE);
        DEVICE_MEDIA_UNMUTED_ON_PLUG_SET.add(AudioSystem.DEVICE_OUT_LINE);
        DEVICE_MEDIA_UNMUTED_ON_PLUG_SET.addAll(AudioSystem.DEVICE_OUT_ALL_A2DP_SET);
        DEVICE_MEDIA_UNMUTED_ON_PLUG_SET.addAll(AudioSystem.DEVICE_OUT_ALL_BLE_SET);
        DEVICE_MEDIA_UNMUTED_ON_PLUG_SET.addAll(AudioSystem.DEVICE_OUT_ALL_USB_SET);
        //DEVICE_MEDIA_UNMUTED_ON_PLUG_SET.add(AudioSystem.DEVICE_OUT_HDMI);
    }

或者我不想让ARC设备接入后保持静音状态,就判断一下设备类型设置一下:

java 复制代码
    private void onAccessoryPlugMediaUnmute(int newDevice) {
        if (DEBUG_VOL) {
            Log.i(TAG, String.format("onAccessoryPlugMediaUnmute newDevice=%d [%s]",
                    newDevice, AudioSystem.getOutputDeviceName(newDevice)));
        }
        if (AudioSystem.getOutputDeviceName(newDevice).contains("hdmi_arc")) {
            Log.d(TAG, "lsl:onAccessoryPlugMediaUnmute: HDMI ARC device connected");
            mStreamStates[AudioSystem.STREAM_MUSIC].mute(false, "onAccessoryPlugMediaUnmute");
        }

就这样。

相关推荐
studyForMokey6 分钟前
【Kotlin内联函数】
android·开发语言·kotlin
2501_915921432 小时前
iOS 抓不到包怎么办?工程化排查与替代抓包方案(抓包/HTTPS/Charles代理/tcpdump)
android·ios·小程序·https·uni-app·iphone·tcpdump
诸神黄昏EX3 小时前
Android Init 系列专题【篇六:reboot & shutdown】
android
sTone873753 小时前
Android核心概念(一)minSdkVersion targetSdkVersion compileSdkVersion
android·前端
wuweikai06174 小时前
在Android设备上打开Perfetto调试日志开关
android·性能优化·perfetto
Meteors.4 小时前
安卓进阶——多媒体
android
正经教主4 小时前
【App开发】Mumu模拟器安装使用与Android Studio连接指南
android·ide·android studio
Larry_zhang双栖5 小时前
Flutter Android Kotlin 插件编译错误完整解决方案
android·flutter·kotlin
wuwu_q6 小时前
彻底讲清楚 Kotlin 的 when 表达式
android·开发语言·kotlin