Android系统HMDI音量无法梯度调节,只能0或者max
Android系统在行业应用中的使用越来越广泛,一般的机器都会带有hdmi的功能;但是调节hdmi音量的时候会出现无法调节的情况,要么没有声音,要么声音直接最大,无法呈现梯度变化。原因是hdmi设备的音量被固定住了,可以看如下代码:
public void checkFixedVolumeDevices() {synchronized (VolumeStreamState.class) {// ignore settings for fixed volume devices: volume should always be at max or 0if (mStreamVolumeAlias[mStreamType] == AudioSystem.STREAM_MUSIC) {for (int i = 0; i < mIndexMap.size(); i++) { int device = mIndexMap.keyAt(i); int index = mIndexMap.valueAt(i); if (((device & mFullVolumeDevices) != 0) || (((device & mFixedVolumeDevices) != 0) && index != 0)) {mIndexMap.put(device, mIndexMax);}applyDeviceVolume_syncVSS(device);}}}}
这个函数的作用是检查设备是否需要音量固定,这里面比较关键的变量是mFixedVolumeDevices,它的初始化如下:
int mFixedVolumeDevices = AudioSystem.DEVICE_OUT_HDMI | AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET |AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET |AudioSystem.DEVICE_OUT_HDMI_ARC | AudioSystem.DEVICE_OUT_SPDIF | AudioSystem.DEVICE_OUT_AUX_LINE;
其中DEVICE_OUT_HDMI对应的就是hdmi设备,可见google在设计音频策略的时候默认是将hdmi的音量给固定住了,因此我们无法通过音量键去调节hdmi设备的音量。
通过以上代码的分析可以知道,要想恢复hmdi音量的调节,必须将DEVICE_OUT_HDMI从mFixedVolumeDevices去掉
mFixedVolumeDevices &= ~AudioSystem.DEVICE_OUT_HDMI
在AudioService的构造函数中或者根据具体需求在对应的地方加上这一行代码,可以解决hdmi音量调节问题。
代码位置 ./services/core/java/com/android/server/audio/AudioService.java
Android系统HMDI音量无法梯度调节,只能0或者max相关推荐
- Android系统的音量控制
Android系统的音量控制 效果图: GitHub GitHub(源码):https://github.com/kongqw/VolumeController 方法 获取AudioManager m ...
- android系统各种音量的获取与设置
获取系统音量 通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单! 设置音量的方法也很简单,AudioManager提供了方法: publicvoidsetStream ...
- Android 系统(269)---native保活5.0以上方案推演过程以及代码详述
Android 进程常驻(4)----native保活5.0以上方案推演过程以及代码详述 这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取 ...
- Android 系统(268)---native保活5.0以下方案推演过程以及代码详述
Android 进程常驻(3)----native保活5.0以下方案推演过程以及代码详述 这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下,以及360获取 ...
- Android系统学习(一)------编译系统Android7.0
你好!这里是风筝的博客, 欢迎和我一起交流. 最近入手了一块nanopi m4,这块板子的芯片是rk3399,而且板子开放有源码,正好拿来学习安卓系统! 板子wiki:http://wiki.frie ...
- 国产android系统,最干净的国产安卓7.0系统,体验还不错
标签:安卓系统(23)安卓(183) 在前几年,国内曾一度掀起UI风,各大厂商都推出自己的UI,有些即使没有自己手机产品,也依旧推出自己的UI,但是好景不长,到如今大多数都销声匿迹.现在,国内仅剩下F ...
- 华为android系统耗电高,华为P20升级EMUI9.0耗电快?带你一招解决!
原标题:华为P20升级EMUI9.0耗电快?带你一招解决! *本文来自花粉俱乐部论坛-在死海游泳的咸鱼 华为P20升级EMUI 9.0后耗电快,手机升级后电量不经用,怎么办?不少朋友在升级Androi ...
- 审美的变迁 回顾Android 系统进化史
1十款甜点诠释Android进化史 "为什么这么多年来我还是喜欢当初的那个TA,但那些做UI的设计师却在不停地变换着审美标准?",当笔者把手中的Google Nexus 5升 ...
- Android系统音量调节策略学习总结
二.外设类型 USB音箱底座 蓝牙音箱 3.5mm线控耳机 三.相关术语 track volume: 单个App设置音量时设置的是这个,它只影响本App的音量. stream volume: 设置某一 ...
最新文章
- 视觉实战|使用人工神经网络进行图像分类
- check_traffic.sh监控格式为Hex-STRING的解决办法
- mysql命令行卡在>>>>>
- python做硬件自动化测试-用python做自动化测试--Python实现远程性能监控
- “两小学生研究喝茶抗癌获奖”,官方回应:经老师培训独立完成
- 3D 旋转相册 立方体的盒子 相册(源码分享)
- [书目20110904]谢孟媛英文文法
- JAVA爬取淘宝、京东、天猫以及苏宁商品历史价格(二)
- 带小数的二进制转十进制(C代码)
- 【机器学习实战笔记】Logistic回归
- 一图带你了解全球疫情爆发背后的隐藏机会
- C语言动态开辟数组(一维与二维)【malloc() free()】
- 学成在线项目(HTML+CSS)
- Android组件间数据传递
- 计算机初级操作员试题汇编,计算机初级操作员试卷.doc
- 51cto的请看过来
- Spring单例Bean与单例模式的区别
- Linux-i386,x86_64啥区别
- LInux 开机启动之MBR引导
- 计算机信息安全电子支付论文,关于计算机信息安全问题的研究论文原稿