【安卓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");
        }

就这样。

相关推荐
用户5087532168441 分钟前
Android 资源类型全解析:深入理解四种常用布局
android
XiaoLeisj14 分钟前
Android 文件存储实战:从应用私有目录读写到网络文件落盘与公共存储接入
android·java·网络·文件操作
恋猫de小郭21 分钟前
Android Studio Panda 2 ,支持 AI 用 Vibe Coding 创建项目
android·前端·flutter
zhouping@33 分钟前
[极客大挑战 2020]Greatphp
android·ide·web安全·android studio
毕设源码-邱学长37 分钟前
【开题答辩全过程】以 基于 Android的超市服务评价系统的设计与实现为例,包含答辩的问题和答案
android
子非鱼yy1 小时前
详解MySQL的MVCC:多版本并发控制核心原理与实战解析
android·adb
$Qw1 小时前
google firebase service account json
android·google
段娇娇1 小时前
Android jetpack ViewBinding(一)使用篇
android·android jetpack
筱顾大牛2 小时前
黑马点评---用户签到、UV统计
android·服务器·uv
耶叶2 小时前
Android开发实战:通过网络电子书阅读器实践运用fragment知识
android·jvm