Android 12 adb 串口指令设置耳机音量适配
1、突然接到测试部一个需求 耳机录音在Android 12 直接运行崩溃,后面抓取日志一看是执行shell指令出现问题,看着日志我也没有特别清晰的思路
2、跳坑
于是我拿了之前另外一台Android 10的平板插上耳机然后跟踪了下logcat发现是正常的,耳机本来就是通过监听Intent.ACTION_HEADSET_PLUG系统广播
从硬件层面来看,直接监听耳机拔出事件不难,耳机的拔出和插入,会引起手机电平的变化,然后触发什么什么中断,对于有线耳机,顺着这个思路继续往下面查找原因。一开始以为驱动没有加节点信号,后面问驱动我们这边没有这个节点,然后尴尬的我,我看了下Android 10 设置耳机音量shell 指令
2.1 查看audio的全部信息(各音频流音量,焦点,策略等)
dumpsys audio
2.2 Android 10 设置音量并且显示音量UI
//stream 3表示多媒体 名称 STREAM_MUSIC,15表示音量值 最大音量值 media volume --show --stream 3 --set 15
2.3 音量调大调小
--adj //表示调整 adjust --adj raise音量调高 --adj lower调低media volume --stream 3 --adj raisemedia volume --stream 0 --adj lowermedia volume --show --stream 3 --adj raisemedia volume --show --stream 0 --adj lower
2.4 获取当前音量
media volume --stream 3 --get
记录其范围和默认值,不同厂商设备的音频范围和默认值可能有所差别:
编号 | 名称 | 范围 | 默认值 | 功能 |
---|---|---|---|---|
0 | STREAM_VOICE_CALL | 1~11 | 8 | 通话 |
1 | STREAM_SYSTEM | 0~15 | 10 | 铃声 |
2 | STREAM_RING | 0~15 | 10 | 铃声 |
3 | STREAM_MUSIC | 0~150 | 100 | 媒体 |
4 | STREAM_ALARM | 1~15 | 12 | 闹钟 |
5 | STREAM_NOTIFICATION | 0~15 | 10 | 闹钟 |
6 | STREAM_BLUETOOTH_SCO | 1~15 | 7 | 通话 |
7 | STREAM_SYSTEM_ENFORCED | 0~7 | 7 | 铃声 |
8 | STREAM_DTMF | 0~15 | 10 | 铃声 |
9 | STREAM_TTS | 0~15 | 10 | 媒体 |
10 | STREAM_ACCESSIBILITY | 0~15 | 10 | 媒体 |
11 | STREAM_ASSISTANT | 0~15 | 10 | 语音助手 |
到这里我在想?难道Android 12变了?设置adb指令 于是我百度一番,这里大约等待一个多小时
3、踩坑
3.1. adb 调用系统服务
Android 12 中调整音量:
adb shell service call audio 9 i32 <编号> i32 <类型> i32 1 1
3.2 操作类型
adjustStreamVolume()方法所需要的音量操作<类型>
参数,可以在AudioManager.java中查看。整理如下:
值 | 名称 | 功能 |
1 | ADJUST_RAISE | 增加音量 |
-1 | ADJUST_LOWER | 降低音量 |
0 | ADJUST_SAME | 显示音量,但不设置 |
-100 | ADJUST_MUTE | 静音 |
100 | ADJUST_UNMUTE | 取消静音 |
101 | ADJUST_TOGGLE_MUTE | 切换静音状态 |
3.3 示例
3.3.1 铃声编号2
,增加音量的类型为1
,其命令为:
adb shell service call audio 9 i32 2 i32 1 i32 1
3.3.2 音频编号3
,设置其静音或非静音,其命令为:
adb shell service call audio 9 i32 3 i32 -100 i32 1 #静音
adb shell service call audio 9 i32 3 i32 100 i32 1 #关闭静音
adb shell service call audio 9 i32 3 i32 101 i32 1 #切换静音状态
3.3.3 语音助手编号11
,降低音量的类型为-1
,其命令为:
adb shell service call audio 9 i32 11 i32 -1 i32 1
3.3.4 闹钟编号4
,设置其音量为9
,其命令为:
adb shell service call audio 10 i32 4 i32 9 i32 1
3.3.5 Android 版本变动
从ASOP中搜索相关代码,依据对应版本的代码,更改命令中的参数。
如 Android 12,IAudioService.aidl相对 Android 11 改动了方法列表,adjustStreamVolume() 和 setStreamVolume() 分别从第 9 位、第 10 位,移动到了第 10位、第11位。
因此,Android 12 中:adb shell service call audio 10 i32 3 i32 1 # 调整设置耳机音量 问题解决
adb shell service call audio 10 i32 <编号> i32 <类型> i32 1 # 调整音量
adb shell service call audio 11 i32 <编号> i32 <音量> i32 1 # 设置音量
adb shell service call audio 17 i32 <编号> # 当前音量
adb shell service call audio 18 i32 <编号> # 最小音量
adb shell service call audio 19 i32 <编号> # 最大音量
4、总结
4.1 本次纯粹是Android10 跟Android 12串口音量指令变化 直接更新即可
4.2 学会对比分析问题 然后寻找差异去解决
4.3 想解决办法然后一步一步去验证
5、感谢
通过 adb 设置音量_Raurean的博客-CSDN博客_adb 静音
https://stackoverflow.com/questions/21055947/adb-command-to-set-volume
转载请注明出处 谢谢 Android 12 adb 串口指令设置耳机音量适配_KdanMin的博客-CSDN博客_adroid12 adb
Android 12 adb 串口指令设置耳机音量适配相关推荐
- Android 12 adb push更新系统应用
需求描述 adb 传输文件的权限问题--remote couldn't create file: Read-only file system 需要push /system/system_ext/pri ...
- Android 12 SplashScreen(闪屏页)适配
牢骚(废话) 谷歌真是吃饱了撑的,搞这搞那,Android12新出了一个强制闪屏页,效果就跟小米的闪屏页广告一样,只不过谷歌的是强制的,小米是可选的.不过谷歌再怎么搞,你还是要适配啊,难受. 正题 所 ...
- Android 12.0系统默认设置屏幕永不息屏
目录 1.概述 2. 系统默认设置屏幕永不休眠功能代码 3. 系统默认设置屏幕永不休眠功能分析和功能实现
- Android 12 应用兼容性适配指导
一.兼容性调试工具 Android 11开始引入了新的工具,可针对Android新平台中的行为变更进行测试和调试.这些工具是兼容性框架的一部分,该框架使得开发者可通过开发者选项或adb命令单独打开和关 ...
- 高通 Android 12/13 去掉耳机音量安全弹窗
需求:去掉下面弹窗 防止工厂工人误触 1.由于产测工厂提出插耳机不需要弹窗,于是我开始源码探索指令,耳机肯定第一时间想到的是AudioService系统服务,AudioManager等待.带着这些线索 ...
- Android 进阶——调试调优利器 ADB常用指令大全
文章大纲 引言 一.ADB 1.ADB 概述 2.ADB 架构概述 3.ADB 的基本操作 3.1.ADB 的启动和关闭 3.2.指定特定的目标设备 3.3.指定adb server的通信端口 二.a ...
- android耳机音量与外放音量同步
android耳机音量与外放音量同步 打开文件:frameworks\base\services\core\java\com\android\server\audio\AudioService.jav ...
- android 耳机 音量调节 id,Android音频相关(一)插入耳机后调节音量(安全音量)...
一.安全音量提醒框的开启 二.修改安全音量提醒框显示 三.重启后还会显示安全音量提醒框 四.一些关于安全音量的初始值 一.安全音量提醒框的开启 安卓系统是有耳机音量保护机制的,对于一些出口欧盟的手机来 ...
- Android(12)浅析 偏好设置 Preference(一)
Android(12)浅析 偏好设置 Preference(一) ### 官方基本用法:https://developer.android.google.cn/guide/topics/ui/sett ...
最新文章
- 51单片机实现对24C02进行页写、顺序读取并显示验证
- 阿里云二面:你对限流了解多少?
- Nginx主主负载均衡架构
- MVC运转-平台分发
- 史上最气人的数学家:文理双全智商还高,说话只说半句,解题只解半个,调戏人调戏了三百年还不够......
- PostgreSQL 9.6 IO Hang问题浅析与优化
- 谁是杨强?首位AAAI华人主席,身兼5大顶级组织Fellow,也是华为诺亚方舟实验室开创者...
- 思科首席技术官解析:统一计算及战略
- AAAI论文Joint Extraction of Entities and Overlapping Relations Using Position-Attentive Sequence阅读笔记
- EdrawMax 11 for mac(亿图图示)中文版
- iSCSI客户端配置
- 计算机网络的基本组成包括哪些,计算机网络的基本组成是什么?
- 芭蕉树上第十七根芭蕉-- 隐式转换
- git提交代码出现 fatal: The remote end hung up unexpectedly-错误处理
- 笔记本重装系统后声音图标显示红色×号
- 文章管理系统的系统分析与设
- Domo 提供与 Snowpark 的集成,Snowflake 的全新开发者体验
- 史上最详细店铺运营方案,新手必看!
- win10深澜校园网客户端拨号错误失败的解决办法
- 树莓派安装teamview
热门文章
- 水库防汛泄洪抢险应急广播系统建设4G无线广播模式分析
- 3种JavaScript 对象转数组的方法
- java面试-MySQL篇分库分表策略
- Macbook pro 2018闪屏问题
- OWA 限制附件大小
- 阿里云rds数据备份恢复
- ImportError: cannot import name ‘json_util‘解决方案
- yjk的波库在哪里_盈建科学习资料 YJKEP弹塑性软件说明手册.pdf
- 手机动态口令, 解析互联网身份认证发展趋势
- 笔记本电脑开机卡住无法正常启动怎么办?