
Android源码
文章平均质量分 76
火车上遇见
这个作者很懒,什么都没留下…
展开
-
Android源码--listAudioPorts调用过程
AudioService.javaprivate void configureHdmiPlugIntent(Intent intent, int state) { ArrayList ports = new ArrayList(); int[] portGeneration = new int[1]; int status = AudioSystem.listAu原创 2016-11-01 14:44:02 · 3163 阅读 · 0 评论 -
Android源码分析--手机默认音量值的设置(08)
手机在reset的时候,会设置相关的默认音量,这个默认音量怎么在开机的时候修改呢?可以看到在/frameworks/base/media/java/android/media/AudioSystem.java public static int getDefaultStreamVolume(int streamType) { return DEFAULT_ST原创 2018-01-29 14:10:45 · 1193 阅读 · 0 评论 -
Android源码分析--AudioPolicyManagerObserver类讲解(05)
为什么要单独写个文章讲到这个类,因为这个类在之前我们获取可用的输入输出设备的时候AudioPolicyEngine设备路由调用过其中的方法,但是没有深入分析,而且这个类是AudioPolicyManager的接口,同时这个类可以引申出其它的Audio抽象类,最后要讲解Vector和Collection容器的使用,所以说要写的内容仍然很多。/frameworks/av/services/audi原创 2018-01-24 22:29:53 · 1663 阅读 · 0 评论 -
Android源码分析--Audio设备文件加载(06)
手机上有多少设备都是通过配置xml文件来实现的,然后在构造AudioPolicyManager实例时进行文件解析,初始化相关的变量。比如有些手机有两个麦克风,通常叫做内置麦克风,和副麦克风,但是有些低端手机只会配置内置的麦克风。 通过全局搜索可以看到/device/google/dragon/device.mk:USE_XML_AUDIO_POLICY_CONF := 1原创 2018-01-25 21:20:36 · 3013 阅读 · 1 评论 -
Android源码分析--AudioEngine的初始化(04)
前面的文章中讲到Engine设备的选择,那么这个类是怎么被初始化的呢?可以看到在AudioPolicyManager的构造器中,AudioPolicyManager::AudioPolicyManager(AudioPolicyClientInterface *clientInterface){ // Once policy config has been parsed, retri原创 2018-01-24 21:51:34 · 1907 阅读 · 0 评论 -
Android源码分析--Audio声音相关问题分析(03)
范例1:客户需要开发一个对讲机,用得是手机的板子,因为对讲机不需要那么多的功能,所以需要对底层硬件进行裁剪,使用听筒作为音频输出,其它所有的音频设备都去掉,因此如果不修改Framework层的音频逻辑的话,会出现对讲机无声的问题。范例2:客户开发一款智能手表,定制的功能是不允许设备进行录音,就是即使安转设备录音程序也没有办法运行。范例3:原创 2018-01-24 20:46:03 · 929 阅读 · 0 评论 -
Android源码分析--AudioPolicyEngine设备路由(02)
这篇中记住一个中心思想就是,流(Stream)决定策略(Strategy),策略决定设备(Device)。流在App层可以经常碰到,比如Music流,Notification流,Call流。为什么叫作策略,大概是因为中文翻译过来不大准确,最好的方式就是直接用Strategy表示。先来看看流是什么,在下面的文件中定义/system/media/audio/include/system/aud原创 2018-01-24 16:43:48 · 3158 阅读 · 0 评论 -
Android源码分析--AudioPolicyEngine设备路由(01)
手机里有很多设备,比如外放,听筒,耳机,蓝牙,还可以分很多很细的设备,比如内置麦克风,耳机麦克风。在写程序的时候上层很少去管理这么多复杂的设备,Android都是通过底层AudioPolicyEngine进行自动切换控制的。比如插入耳机的时候,上层可能会收到广播,提醒耳机已经插入,但是程序并不需要将声音切换到耳机,在AudioPolicyEngine里面实现这样的功能切换。 要介绍这个比较大原创 2018-01-24 10:41:43 · 2957 阅读 · 1 评论 -
android audio服务启动
src/framework/av/media/audioserver/main_audioserver.cpp通过fork()函数创建一个子进程,父进程中返回子进程的ID号,执行的是if语句,子进程返回0,执行else语句。可以看到在else语句中有三个四个服务:AudioFlinger::instantiate();AudioPolicyService::instantiate();原创 2016-12-01 10:46:32 · 3475 阅读 · 1 评论 -
Android源码分析--Audio设备文件解析(07)
上篇文章中只是讲到配置文件在哪里,怎么读取文件,但是真正的文件解析还没有开始。这篇就开始分析文件解析,认识这些解析的参数。 接着上篇Audio设备文件加载继续进行分析,知道主要是这个函数起到解析的作用。static status_t deserializeAudioPolicyXmlConfig(AudioPolicyConfig &config) { char audioPo原创 2018-01-25 22:32:36 · 1851 阅读 · 0 评论