当前位置: 首页 > article >正文

【安卓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_SETA2DP蓝牙设备
AudioSystem.DEVICE_OUT_ALL_USB_SETUSB音频设备
AudioSystem.DEVICE_OUT_HDMIAudioSystem.DEVICE_OUT_HDMI

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

    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设备接入后保持静音状态,就判断一下设备类型设置一下:

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

就这样。


http://www.kler.cn/news/289136.html

相关文章:

  • 算法day20|669. 修剪二叉搜索树、将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
  • 安嘉空间:智慧科技守护空间健康
  • C++基础多态
  • 爬虫练习(js逆向解密)
  • 中国水资源用水紧张程度数据(栅格/0.5度)
  • win10 +git配置+学习笔记
  • windows下安装docker操作步骤
  • 【C++第十六章】多态
  • 综合评价 | 基于层次-变异系数-正态云组合法的综合评价模型(Matlab)
  • Vulkan入门系列18 - 计算着色器(Compute Shader)
  • 阳台封窗是在保温上边还是把保温拆了之后封呢?
  • JsonCpp库的使用
  • SQL基础——MySQL的优化
  • SOHO建站
  • 【mysql】SQL语言的概述
  • java03
  • 深入探索Java中的分布式文件系统:从理论到实战
  • LeetCode_sql_day18(1841.联赛信息统计)
  • 维信小程序禁止截屏/录屏
  • React学习day03-components插件安装(仅基于火狐浏览器)、受控表单绑定、在React中获取dom、组件通信(组件间的数据传递)
  • 51单片机-串口通信关于SBUF的问题
  • elementui 表单 tab切换下个光标能不能改成enter键
  • 24数学建模国赛提供助攻(13——灰色系统理论)
  • 611.有效三角形的个数
  • 豆包MarsCode编程助手:让编程更简单
  • 七、场景加载
  • git中的分支是什么?分支有哪些好处?如何建立分支?
  • PyTorch Geometric(torch_geometric)简介
  • 行业首家!百度智能云通过中国信通院「H5 端人脸识别安全能力」测评
  • DORIS - DORIS注意事项(一)