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

就这样。

相关推荐
如此风景19 小时前
Compose Modifier 修饰符介绍
android
纽马约19 小时前
Android BaseQuickAdapter的使用
android
墨染天姬19 小时前
【android 驱动开发九】生产者-消费者模型
android·驱动开发
声光界20 小时前
《低功耗音频:重塑听觉体验与物联网边界的蓝牙革命》
音频·半导体·声学
android_xc21 小时前
Android Studio适配butterknife遇到的坑
android·ide·android studio·butterknife
2501_915918411 天前
uni-app 项目 iOS 上架效率优化 从工具选择到流程改进的实战经验
android·ios·小程序·uni-app·cocoa·iphone·webview
00后程序员张1 天前
如何在不同 iOS 设备上测试和上架 uni-app 应用 实战全流程解析
android·ios·小程序·https·uni-app·iphone·webview
米豆同学1 天前
SufraceFlinger图像合成原理(3)-SurfaceFlinger中Layer的创建和销毁
android
米豆同学1 天前
SufraceFlinger图像合成原理(2)-SurfaceFlinger与应用进程间的通信
android
用户2018792831671 天前
uses-library:系统应用报NoClassDefFoundError问题
android