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

就这样。

相关推荐
tongyiixiaohuang9 小时前
WMS已发货状态反写金蝶云星空:单策略实战教程
android
好的佩奇10 小时前
Dart 之类修饰符
android·flutter·dart
alexhilton11 小时前
用Konsist与Lint强制执行设计系统契约
android·kotlin·android jetpack
北京自在科技15 小时前
谷歌安卓 Gemini 迎来界面改版,Find Hub 接入 Gemini 支持物品记忆查找
android·安卓
YB137517 小时前
Jetpack Compose 动画Modifier.animateItem()
android
2401_8858850418 小时前
巴林语音通知接口如何对接?系统告警语音API接入教程
android·前端·网络·python·语音识别
收纳过往19 小时前
数据库加索引的时机:慢查询日志说话
android·开发语言·数据库·python·低代码·rxjava
哦***719 小时前
一开降噪耳朵就闷?耳机有耳压感是怎么回事?
华为·音频·harmonyos
狂热开发者20 小时前
车载中控要给鸿蒙用户,能不能和 Android 共用一个二维码?
android·华为·harmonyos
.Bryce.20 小时前
T2-LLM评测不等于Agent评测
android·java·人工智能·后端·gpt·agent·1024程序员节