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 串口指令设置耳机音量适配相关推荐

  1. Android 12 adb push更新系统应用

    需求描述 adb 传输文件的权限问题--remote couldn't create file: Read-only file system 需要push /system/system_ext/pri ...

  2. Android 12 SplashScreen(闪屏页)适配

    牢骚(废话) 谷歌真是吃饱了撑的,搞这搞那,Android12新出了一个强制闪屏页,效果就跟小米的闪屏页广告一样,只不过谷歌的是强制的,小米是可选的.不过谷歌再怎么搞,你还是要适配啊,难受. 正题 所 ...

  3. Android 12.0系统默认设置屏幕永不息屏

    目录 1.概述 2. 系统默认设置屏幕永不休眠功能代码 3. 系统默认设置屏幕永不休眠功能分析和功能实现

  4. Android 12 应用兼容性适配指导

    一.兼容性调试工具 Android 11开始引入了新的工具,可针对Android新平台中的行为变更进行测试和调试.这些工具是兼容性框架的一部分,该框架使得开发者可通过开发者选项或adb命令单独打开和关 ...

  5. 高通 Android 12/13 去掉耳机音量安全弹窗

    需求:去掉下面弹窗 防止工厂工人误触 1.由于产测工厂提出插耳机不需要弹窗,于是我开始源码探索指令,耳机肯定第一时间想到的是AudioService系统服务,AudioManager等待.带着这些线索 ...

  6. Android 进阶——调试调优利器 ADB常用指令大全

    文章大纲 引言 一.ADB 1.ADB 概述 2.ADB 架构概述 3.ADB 的基本操作 3.1.ADB 的启动和关闭 3.2.指定特定的目标设备 3.3.指定adb server的通信端口 二.a ...

  7. android耳机音量与外放音量同步

    android耳机音量与外放音量同步 打开文件:frameworks\base\services\core\java\com\android\server\audio\AudioService.jav ...

  8. android 耳机 音量调节 id,Android音频相关(一)插入耳机后调节音量(安全音量)...

    一.安全音量提醒框的开启 二.修改安全音量提醒框显示 三.重启后还会显示安全音量提醒框 四.一些关于安全音量的初始值 一.安全音量提醒框的开启 安卓系统是有耳机音量保护机制的,对于一些出口欧盟的手机来 ...

  9. Android(12)浅析 偏好设置 Preference(一)

    Android(12)浅析 偏好设置 Preference(一) ### 官方基本用法:https://developer.android.google.cn/guide/topics/ui/sett ...

最新文章

  1. 51单片机实现对24C02进行页写、顺序读取并显示验证
  2. 阿里云二面:你对限流了解多少?
  3. Nginx主主负载均衡架构
  4. MVC运转-平台分发
  5. 史上最气人的数学家:文理双全智商还高,说话只说半句,解题只解半个,调戏人调戏了三百年还不够......
  6. PostgreSQL 9.6 IO Hang问题浅析与优化
  7. 谁是杨强?首位AAAI华人主席,身兼5大顶级组织Fellow,也是华为诺亚方舟实验室开创者...
  8. 思科首席技术官解析:统一计算及战略
  9. AAAI论文Joint Extraction of Entities and Overlapping Relations Using Position-Attentive Sequence阅读笔记
  10. EdrawMax 11 for mac(亿图图示)中文版
  11. iSCSI客户端配置
  12. 计算机网络的基本组成包括哪些,计算机网络的基本组成是什么?
  13. 芭蕉树上第十七根芭蕉-- 隐式转换
  14. git提交代码出现 fatal: The remote end hung up unexpectedly-错误处理
  15. 笔记本重装系统后声音图标显示红色×号
  16. 文章管理系统的系统分析与设
  17. Domo 提供与 Snowpark 的集成,Snowflake 的全新开发者体验
  18. 史上最详细店铺运营方案,新手必看!
  19. win10深澜校园网客户端拨号错误失败的解决办法
  20. 树莓派安装teamview

热门文章

  1. 水库防汛泄洪抢险应急广播系统建设4G无线广播模式分析
  2. 3种JavaScript 对象转数组的方法
  3. java面试-MySQL篇分库分表策略
  4. Macbook pro 2018闪屏问题
  5. OWA 限制附件大小
  6. 阿里云rds数据备份恢复
  7. ImportError: cannot import name ‘json_util‘解决方案
  8. yjk的波库在哪里_盈建科学习资料 YJKEP弹塑性软件说明手册.pdf
  9. 手机动态口令, 解析互联网身份认证发展趋势
  10. 笔记本电脑开机卡住无法正常启动怎么办?