AndroidO audio系统之框架简介(一)

1、概述

       Audio系统在Android中负责音频方面的数据流传输和控制功能,也负责音频设备的管理,它是Android中最复杂的子系统之一。本文将粗略分析一下audio的整体框架及播放、录制流程。不足之处,敬请指正,谢谢!

2、音频框架图

这里写图片描述

2.1 Application层

       音频相关的应用软件有: 音乐播放器,电话,声音设置,视频播放器等等。

2.2 Application Framework层

该层代码位置frameworks/base/media/java/android/media。其中关键类的作用如下:

  1. MediaPlayer和MediaRecorder,AudioTrack和AudioRecorder,提供声音播放和录制接口,但是MediaPlayer/MediaRecorder功能更强大,也更易于使用。
  2. AudioManager、AudioService及AudioSystem等类提供声音控制、通道选择、音效设置等功能。

2.3 Jni

       Audio的JNI代码在framewoks/base/core/jni目录下面,会和其他一些系统文件生成libandroid_runtime.so供上层调用。

2.4 Native Framework层

客户端:
       AudioTrack、AudioRecorder、MediaPlayer、MediaRecorder、AudioSystem对应Java层的相关类,代码放置在frameworks/av/media/libmedia中, C++语言编写,编译后成为libmedia库。

服务端:
       AudioFlinger和AudioPolicyService是核心代码,它们的代码在frameworks/av/services/audioflinger,编译后成为libaudioflinger库,运行在AudioServer系统进程。

2.5 HAL层

       HAL是AudioFlinger向下访问的对象,厂商会在这一层实现自己的接口层,桥接硬件驱动和上层框架,形成的文件会编译成audio.primary.,audio.a2dp.等so库文件供音频模块加载。

2.6 驱动

       一般情况下用的ALSA音频架构

3、音频各层代码结构图

这里写图片描述
Audio Application Framework:音频应用框架

AudioTrack:负责回放数据的输出,属 Android 应用框架 API 类

AudioRecord:负责录音数据的采集,属 Android 应用框架 API 类

AudioSystem: 负责音频事务的综合管理,属 Android 应用框架 API 类

Audio Native Framework:音频本地框架

AudioTrack:负责回放数据的输出,属 Android 本地框架 API 类

AudioRecord:负责录音数据的采集,属 Android 本地框架 API 类

AudioSystem: 负责音频事务的综合管理,属 Android 本地框架 API 类

Audio Services:音频服务

AudioPolicyService:音频策略的制定者,负责音频设备切换的策略抉择、音量调节策略等

AudioFlinger:音频策略的执行者,负责输入输出流设备的管理及音频流数据的处理传输

Audio HAL:音频硬件抽象层,负责与音频硬件设备的交互,由 AudioFlinger 直接调用

4、小结

       通过上述的框架图,很容易就可以对audio系统层次架构有个大概的了解。下一篇开始,将深入各层如何初始化、关联工作做个深入的分析。未完待续。。。

  • 8
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值