Android 音频服务框架的内容说多不多,说少也不少,网上也有各种的教程。我看过的比较系统性的描述就是林学森老师的《深入理解Android 内核设计思想》,里面分为 AudioTrack、AudioFlinger 和 AudioPolicyService 三部分来讲解 Audio 模块,但是随着 Android 的演变,现在已经不能涵盖遇到的所有场景,所以从自身实际了解出发,总结下这部...
Question list
这篇博文目的是记录学习工作总遇到的问题,作为博客写作的一个方向,解决这些问题。 CPP 1 字符串拼接数字 对于Java和Python来说,操作符+就足够了,但是C++不支持直接拼接字符串和数字。 2 调用其他类的属性方法 对于Java和Python来说,import对应包/类就可以,但是C++不行,extern外部变量声明也不能在类里面。 那么,AudioFlinger怎么才能...
Android.bp syntax and usecase
在实际开发过程中,经常会遇到通过 宏/环境变量 判断是否加载某个模块,这时就需要进行条件编译。 Android 7.0 前使用 Android.mk 来编译模块,makefile 支持条件编译;但是 Android 7.0 之后逐步被 Android.bp 取代,Android.bp 本质上是 json 配置文件,不支持条件判断,所以 Google 提供了通过 go 语言来实现 Andro...
audio performance - binder
Binder
native crash - audioserver crash
Audioserver crash
audio performance - systrace
Systrace
Android HAL 与 HIDL 开发实例
Android 8.0之后,/dev/binder拓展多出了两个域,即/dev/hwbinder和/dev/vndbinder, /dev/hwbinder 主要用于 HIDL 接口的通信, /dev/vndbinder 则是用于 vendor 进程之间的 AIDL 通信。 作为 OEM/ODM 厂商,需要了解 Android 硬件的开发和集成流程,把自己硬件添加到 ROM ...
Android.bp makefile and soong
Android编译系统,Android.bp、Soong以及Android.mk
android build system
最近,集成杜比音效用到了很多Android编译知识,记录一下 Android编译系统,Android.bp、Soong以及Android.mk Android.bp语法记录,vintf-fragments字段等 Android HIDL使用实例 Android 构造系统 AOSP源码build/README.md, This is the Makefile-ba...
audio volume
简单记录下 Android 原生音量管理,主要包括: Audio 初始化阶段加载音量曲线:Android 音量管理在 audioserver 的 AudioPolicyManager 模块中实现,在 audioserver 初始化时会创建并初始化 AudioPolicyManager,APM 初始化会从 audio_policy_volumes.xml 和 default_volum...