
Android音频
文章平均质量分 93
神奇海螺666
这个作者很懒,什么都没留下…
展开
-
Android AudioPolicy策略的实现过程分析(二):CarAudioService和自定义音频焦点策略
摘要:Android系统中与Automotive相关的代码会被编译成一个名为CarService的apk存在于车机中,CarService中包括了众多和Car功能相关的Service,其中就包括CarAudioService。CarAudioService在初始化时会获取系统的音频策略配置参数并试图构造并注册AudioPolicy类,AudioPolicy.java是Java层音频策略的总设计图,其描述了总体音频策略,其中音频焦点策略可以通过setAudioPolicyFocusListener设置.原创 2021-04-20 17:42:21 · 4580 阅读 · 2 评论 -
Android AudioPolicy策略的实现过程分析(一):音量调节
摘要:Android音频策略中的音量控制方面主分为以下几点:1.软件音量曲线和硬件音量曲线的加载过程及修改方法2.音量调节过程的实现3.音频流类型与其别名的对照关系一、软音量曲线的加载及修改概述:在运行AudioPolicyManager的构造函数时会解析音频策略配置文件:audio_policy_configuration.xml,得到大部分音频策略信息,其中包括硬件模块、输入/输出设备及音量曲线等,这些信息会被保存在AudioPolicyConfig中关键类及说明:类名.原创 2021-04-14 16:50:09 · 7820 阅读 · 1 评论 -
Android 10 音频焦点仲裁策略分析
摘要:Android 9 的音频焦点仲裁策略基本上可以用一句话来概括:后来居上,电话最大。这种策略显然是不能满足音频焦点仲裁的复杂需求的,所以Google在Android 10 中做了大幅度的改进,其中最主要的就是引入了音频焦点判断矩阵,通过矩阵来仲裁后来者是否可以抢占当前焦点。由于Android9的音频焦点策略基本不能满足项目需求,所以一般会引入外部焦点仲裁策略,不知道如何引入的可以参考这篇文章:自定义音频焦点策略的实现。既然要引入,何不引入Android 10 的音频焦点策略呢?音频焦点仲裁策略.原创 2021-03-26 17:10:30 · 3500 阅读 · 2 评论 -
Android9 AudioRecord 根据包名静音接口及并发录音的实现
摘要:1.在Android9中为了防止App后台录音,实际上已经存在一个静音的接口用于禁止App录音,不过这个接口存在两个问题:1)仅在C++层供系统调用,没有暴露给App调用;2)这个接口是根据uid静音的,很多时候App开发人员为了图省事都将自己的App设置为系统级别的App,如果根据uid静音,那么系统级别的uid都是1000,就会造成误伤,所以我们增加了根据包名静音的接口并暴露给上层调用2.并发录音是项目中很常见的需求,其实Android9中已经包含并发录音的代码,只不过被屏蔽了,只要稍加修改.原创 2021-02-07 16:18:51 · 1770 阅读 · 1 评论 -
Android9 Audio模块Hal层加载流程及修改方法
摘要:在Android9中Audio模块调用Hal一般有两种路径:1.通过AudioFlinger调用到Hal,这是众多原生接口走的路径,一般我们不会在这里增加方法,但是会修改这里面的方法2.因为是车机,所以可以通过CarAudioService.java直接跳过JNI和Native层直接到达Hal,完成一些需要硬件支持的工作,一般我们会将新增的非原生方法增加到这里面,所谓自定义Hal指的就是在这里面新增的接口一、通过AudioFlinger调用Hal的流程以AudioRecord.java中的.原创 2021-02-06 14:48:38 · 4511 阅读 · 1 评论 -
Android9 framework 按键音调用流程及自定义按键音(替换原生按键音)和调节按键音音量的方法
Android9 framework 按键音调用流程及替换原生按键音、调节按键音音量方法摘要:按键音的总体逻辑是先找到系统中按键音的资源,然后调用SoundPool.load让系统加载音频资源,加载成功后在onLoadComplete回调中会返回一个非0的soundID ,用于播放时指定特定的音频,最后在需要播放按键音的时候直接根据soundID播放;如果需要替换原生按键音,只需要一、按键音调用流程1.Android按键音接口Android按键音只有两个常用接口,分别是:原生设置APP中Soun原创 2020-12-29 16:00:51 · 3815 阅读 · 2 评论