Android学习
文章平均质量分 88
神奇海螺666
这个作者很懒,什么都没留下…
展开
-
匿名内部类访问局部变量为什么要加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 · 5076 阅读 · 4 评论 -
Android AudioPolicy策略的实现过程分析(二):CarAudioService和自定义音频焦点策略
摘要:Android系统中与Automotive相关的代码会被编译成一个名为CarService的apk存在于车机中,CarService中包括了众多和Car功能相关的Service,其中就包括CarAudioService。CarAudioService在初始化时会获取系统的音频策略配置参数并试图构造并注册AudioPolicy类,AudioPolicy.java是Java层音频策略的总设计图,其描述了总体音频策略,其中音频焦点策略可以通过setAudioPolicyFocusListener设置.原创 2021-04-20 17:42:21 · 4419 阅读 · 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 · 6653 阅读 · 0 评论 -
Android AudioPolicy策略的实现过程分析(一):音量调节
摘要:Android音频策略中的音量控制方面主分为以下几点:1.软件音量曲线和硬件音量曲线的加载过程及修改方法2.音量调节过程的实现3.音频流类型与其别名的对照关系一、软音量曲线的加载及修改概述:在运行AudioPolicyManager的构造函数时会解析音频策略配置文件:audio_policy_configuration.xml,得到大部分音频策略信息,其中包括硬件模块、输入/输出设备及音量曲线等,这些信息会被保存在AudioPolicyConfig中关键类及说明:类名.原创 2021-04-14 16:50:09 · 7293 阅读 · 1 评论 -
Android 10 音频焦点仲裁策略分析
摘要:Android 9 的音频焦点仲裁策略基本上可以用一句话来概括:后来居上,电话最大。这种策略显然是不能满足音频焦点仲裁的复杂需求的,所以Google在Android 10 中做了大幅度的改进,其中最主要的就是引入了音频焦点判断矩阵,通过矩阵来仲裁后来者是否可以抢占当前焦点。由于Android9的音频焦点策略基本不能满足项目需求,所以一般会引入外部焦点仲裁策略,不知道如何引入的可以参考这篇文章:自定义音频焦点策略的实现。既然要引入,何不引入Android 10 的音频焦点策略呢?音频焦点仲裁策略.原创 2021-03-26 17:10:30 · 3291 阅读 · 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 · 4716 阅读 · 2 评论 -
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 · 1949 阅读 · 0 评论 -
Android Binder过程详细解析及AIDL工具原理分析
文章目录Android9 Car架构下增加监听、AIDL浅析及BinderInterfaceContainer的使用1.找到你妈:Binder的作用AIDL工具合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Android9 Car架构下增原创 2020-12-25 16:18:25 · 461 阅读 · 0 评论 -
最新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 · 1056 阅读 · 0 评论