Android框架与Android音频框架

Android框架

Android本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个Java的Application Framework,所有的应用程序app都是基于该Framework之上。
这里写图片描述

Android在框架上分为Application应用层、Application Framework应用框架层、libraries类库、Linux kernel内核。在应用框架层以及之上,使用Java语言进行开发;在此之下,Android包含一些C/C++库,如硬件驱动,这些库通过JNI提供接口给Android系统中不同的组件(上层Java)使用。

AOSP
Android是开源项目(AOSP,Android Open-Source Project),这个“开源”包括Application Framework以及之上的Java代码的完全开放,还包括之下的C/C++源码。手机中运行的Android系统只是AOSP编译出的Java的.class与C/C++的.so库组成的运行环境,想要查看、修改底层类库的实现,需要下载AOSP源码(而不只是Android SDK源码)。
Android主要应用于ARM平台,但通过编译控制,在X86、MAC等体系结构的机器上同样可以运行。

AOSP下载
AOSP源码可以从Android官网下载,下载过程(git)可以参考从代码了解AOSP

一个AOSP源码在线浏览网站:
http://androidxref.com

NDK
可想而知,AOSP是个巨大的项目(Android5.1的源码约60G,编译出的类库约67G)。Android NDK(Android Native Development Kit),是Google推出的帮助开发者通过C/C++编写应用的开发包,包含部分AOSP中常用的C/C++的头文件、库文件、说明文档和示例代码(ndk-r13b约650M)。

Android音频框架

发展:

  • OSS (Open Sound System):早期Linux内核采用的音频框架,因知识产权的问题被Linux kernel废弃
  • ALSA(Advanced Linux Sound Architecture):Linux社区提出的开源框架,相对于OSS提供了更多,更复杂的API接口,因而开发难度相对加大。Android早期采用ALSA作为音频框架。
  • TinyAlsa:ALSA的缩减版本,目前Android采用的框架。

Android音频框架图:
这里写图片描述

  • APP:应用实现,如某个播放器
  • Framework:Java类(“中介”而已),如MediaPlayer/MediaRecorder、AudioTrack/AudioRecorder、AudioManager、AudioService、AudioSystem,音频中控AudioFlinger和AudioPolicyService
  • Libraries:Framework中介类的底层实现,多数是C++语言编写的库,源代码在AOSP的frameworks/av/media/libmedia。
  • HAL:硬件抽象层,是音频中控AudioFlinger直接访问的对象。HAL将AudioFlinger/AudioPolicyService真正地与硬件设备关联起来,但又灵活应对硬件变化(如Android音频系统从ALSA-lib变为tinyalsa)。当AudioFlinger/AudioPolicyService初始化时,它们会通过HAL去寻找系统中最匹配的硬件实现。可以认为HAL是Android音频系统中的“隔离板”,无论下面如何变化,上层的实现都可以保持兼容。

    [参考3]原文中:“可以认为AudioFlinger是Android音频系统中真正的“隔离板””,而按我理解,HAL才是隔离板。

参考

  1. Android基本架构
  2. 从代码了解AOSP
  3. Android音频系统之音频框架
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KwCoding

谢了老板您讷~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值