前言 一直想总结下Audio子系统的博客,但是各种原因(主要还是自己懒>_<),一直拖到现在才开始重新整理,期间看过H8(Android-4.4),T3(Android-4.4),A64(Android-5.1)上的AudioRecoder录音流程,总的来说,几个平台上的audio系统都差不多,这里还是主要以A64来分析. =================================================== 我是分割线 ============================…
在文章<基于Allwinner的Audio子系统分析(Android-5.1)>中已经介绍了Audio的系统架构以及应用层调用的流程,接下来,继续分析AudioRecorder方法中的getMinBufferSize的实现 函数原型: public static int getMinBufferSize (int sampleRateInHz, int channelConfig, int audioFormat) 作用: 返回成功创建AudioRecord对象所需要的最小缓冲区大小 参数:…
在上一篇文章<(一)Audio子系统之AudioRecord.getMinBufferSize>中已经介绍了AudioRecord如何获取最小缓冲区大小,接下来,继续分析AudioRecorder方法中的new AudioRecorder的实现,本文基于Android5.1,Android4.4请戳这里 函数原型: public AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat…
在上一篇文章<(一)Audio子系统之AudioRecord.getMinBufferSize>中已经介绍了AudioRecord如何获取最小缓冲区大小,接下来,继续分析AudioRecorder方法中的new AudioRecorder的实现,本文基于Android4.4,Android5.1请戳这里 注:本篇文章仅作为笔记使用,如其中有误或与Android5.1版本的分析不同,以Android5.1版本的为准 函数原型: public AudioRecord(int audioSource…
输入输出是用户和产品交互的手段,因此输入驱动开发在Linux驱动开发中很常见.同时,input子系统的分层架构思想在Linux驱动设计中极具代表性和先进性,因此对Linux input子系统进行深入分析很有意义. 一.input子系统知识点 完整的input子系统分析包括以下几方面: 1) 软件层次 2) 输入子系统分层(input_handler,input_core, input_device) 3) 输入设备(TS)驱动开发 4) evdev handler分析 5) input设备模型视…
在上一篇文章<(二)Audio子系统之new AudioRecord()>中已经介绍了Audio系统如何创建AudioRecord对象以及输入流,并创建了RecordThread线程,接下来,继续分析AudioRecord方法中的startRecording的实现 函数原型: public void startRecording() throws IllegalStateException 作用: 开始进行录制 参数: 无 返回值: 无 异常: 若没有初始化完成时,抛出IllegalState…
  在上一篇文章<(三)Audio子系统之AudioRecord.startRecording>中已经介绍了AudioRecord如何开始录制音频,接下来,继续分析AudioRecord方法中的read的实现     函数原型:   public int read(byte[] audioData, int offsetInBytes, int sizeInBytes)   作用:   从音频硬件录制缓冲区读取数据,直接复制到指定缓冲区. 如果audioBuffer不是直接的缓冲区,此方法总是…
在上一篇文章<(四)Audio子系统之AudioRecord.read>中已经介绍了AudioRecord如何获取音频数据,接下来,继续分析AudioRecord方法中的stop的实现 函数原型: public void stop() throws IllegalStateException 作用: 暂停录制 参数: 无 返回值: 无 异常: 若没有初始化完成时,抛出IllegalStateException 接下来进入系统分析具体实现 frameworks/base/media/java/a…
  在上一篇文章<(五)Audio子系统之AudioRecord.stop>中已经介绍了AudioRecord如何暂停录制,接下来,继续分析AudioRecord方法中的release的实现   函数原型: public void release() 作用: 释放Audio资源 参数: 无 返回值: 无   接下来进入系统分析具体实现 frameworks/base/media/java/android/media/AudioRecord.java public void release()…
前面101篇文章都是分析Android系统源代码,似乎不够接地气. 假设能让Android系统源代码在真实设备上跑跑看效果,那该多好.这不就是传说中的刷ROM吗?刷ROM这个话题是老罗曾经一直避免谈的,由于认为没有全面了解Android系统前就谈ROM是不完整的.写完了101篇文章后.老罗认为第102篇文章该谈谈这个话题了,而且选择CM这个有代表性的ROM来谈.目标是加深大家对Android系统的了解. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! <A…