自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 匿名内部类访问局部变量为什么要加final?

这一切都始于对final关键字的追问。。。一、匿名内部类如何访问到外部变量?我们参考大佬的这篇文章中引用的例子,来看一下匿名内部类访问外部变量的方法: public class Hello { public static void main(String[] args) { String str="haha"; new Thread() { @Override public void run() { System.out.println(str); ..

2021-08-03 11:27:07 4997 4

原创 Android AudioPolicy策略的实现过程分析(二):CarAudioService和自定义音频焦点策略

摘要:Android系统中与Automotive相关的代码会被编译成一个名为CarService的apk存在于车机中,CarService中包括了众多和Car功能相关的Service,其中就包括CarAudioService。CarAudioService在初始化时会获取系统的音频策略配置参数并试图构造并注册AudioPolicy类,AudioPolicy.java是Java层音频策略的总设计图,其描述了总体音频策略,其中音频焦点策略可以通过setAudioPolicyFocusListener设置.

2021-04-20 17:42:21 4363 2

原创 Android9 Radio模块的加载及调用流程

摘要:Android的Radio模块鲜有人总结,因为现在大多数手机都已经不支持收音机功能了,但是车机上收音机的功能还是很常用的。这个模块相较于其他模块更简单同时也比较奇怪,其功能要同时依赖RadioManager和Tuner类,RadioManager类用来完成初始化并获取Tuner实例,Tuner完成和电台相关的诸多操作,因笔者能力有限,本文仅对Radio模块的加载及调用流程做简要梳理,具体原理不再深究一、Radio模块的加载概述:Radio模块被init.rc进程拉起,在1.0/1.1/1.

2021-04-19 15:46:05 6500

原创 Android AudioPolicy策略的实现过程分析(一):音量调节

摘要:Android音频策略中的音量控制方面主分为以下几点:1.软件音量曲线和硬件音量曲线的加载过程及修改方法2.音量调节过程的实现3.音频流类型与其别名的对照关系一、软音量曲线的加载及修改概述:在运行AudioPolicyManager的构造函数时会解析音频策略配置文件:audio_policy_configuration.xml,得到大部分音频策略信息,其中包括硬件模块、输入/输出设备及音量曲线等,这些信息会被保存在AudioPolicyConfig中关键类及说明:类名.

2021-04-14 16:50:09 7093 1

原创 Android 10 音频焦点仲裁策略分析

摘要:Android 9 的音频焦点仲裁策略基本上可以用一句话来概括:后来居上,电话最大。这种策略显然是不能满足音频焦点仲裁的复杂需求的,所以Google在Android 10 中做了大幅度的改进,其中最主要的就是引入了音频焦点判断矩阵,通过矩阵来仲裁后来者是否可以抢占当前焦点。由于Android9的音频焦点策略基本不能满足项目需求,所以一般会引入外部焦点仲裁策略,不知道如何引入的可以参考这篇文章:自定义音频焦点策略的实现。既然要引入,何不引入Android 10 的音频焦点策略呢?音频焦点仲裁策略.

2021-03-26 17:10:30 3198 2

原创 StarUML表示内部类的方法

以前一直都是用plantUML的,但是我的vsCode间歇性抽风,导致昨天plantUML又不能用了,一气之下下载了个StarUML,用了一会感觉也不咋好用,最难受的是还要自己布局,对强迫症来说简直就是折磨。。。首先新建两个类:我们想要使Class2成为Class1的内部类,怎么办呢?首先在左下角的工具栏中找到containment工具:点击这个按钮,然后点击Class2并拖动,指向Class1,在Class1上松手:StarUML就是这样表示内部类的,只是查看左上角的Model Exp.

2021-03-13 14:11:36 2691 2

原创 Android编译脚本(.mk文件)解析

摘要:本文将简单介绍Android编译系统并举例说明如何编写不同类型的mk文件以达到不同的目的。虽然.mk文件即将被.bp文件替代,但是在Android9之前的版本中.mk文件的使用频率依旧很高,同时理解.mk文件也有助于理解Android编译系统和其替代者.bp文件。一、Android编译系统1.从基础make脚本到Android编译系统首先我们来看一个make脚本的基本格式:目标(target): 条件:(prerequest) 命令比如:hello: hello.c gcc he.

2021-03-01 09:56:46 4646 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 1605 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 4204 1

原创 Android9 C/C++打印调用栈的方法

一、C++打印调用栈1.包含两个头文件#include <utils/Log.h>#include <utils/CallStack.h>2.编写打印调用栈函数void dumping_callstack() { CallStack stack; //如果这里的函数不在android命名空间内,则要改为 android::CallStack stack; stack.update(); //输出到printf stack.dump(1); //输出

2021-01-23 16:53:26 1911

原创 Android9 framework 按键音调用流程及自定义按键音(替换原生按键音)和调节按键音音量的方法

Android9 framework 按键音调用流程及替换原生按键音、调节按键音音量方法摘要:按键音的总体逻辑是先找到系统中按键音的资源,然后调用SoundPool.load让系统加载音频资源,加载成功后在onLoadComplete回调中会返回一个非0的soundID ,用于播放时指定特定的音频,最后在需要播放按键音的时候直接根据soundID播放;如果需要替换原生按键音,只需要一、按键音调用流程1.Android按键音接口Android按键音只有两个常用接口,分别是:原生设置APP中Soun

2020-12-29 16:00:51 3361 2

原创 Android Binder过程详细解析及AIDL工具原理分析

文章目录Android9 Car架构下增加监听、AIDL浅析及BinderInterfaceContainer的使用1.找到你妈:Binder的作用AIDL工具合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Android9 Car架构下增

2020-12-25 16:18:25 445

原创 最新Android9开发之多点触控画图划线实例讲解(可以用于LCD屏幕测试)SDK29

最新Android9开发之多点触控画图划线实例讲解(可以用LCD屏幕测试)XML布局文件首先看布局文件,直接上代码:<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.co...

2020-04-12 21:42:31 1039

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除