2022年Android的Audio系统 .pdf
《2022年Android的Audio系统 .pdf》由会员分享,可在线阅读,更多相关《2022年Android的Audio系统 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Android的 Audio 系统第一部分 Audio 系统综述第二部分 Audio 系统和上层接口第三部分 Audio 的硬件抽象层第一部分 Audio 系统综述Audio系统在 Android 中负责音频方面的数据流传输和控制功能,也负责音频设备的管理。Audio系统主要的分成几个层次:1. media 中库提供的 Audio系统的上层接口2. AudioFlinger作为Audio系统的中枢3. Audio 库的硬件抽象层提供底层的支持4. Audio 接口通过 JNI和Java框架提供给上层Audio系统的上层接口主要提供了两方面的功能:放音(Track)和录音( Recorder )
2、。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - Media库(libmedia.so)的Audio部分的目录中:frameworks/base/include/media/ frameworks/base/media/libmedia/ 这部分的内容被编译成库libmedia.so,提供 Audio部分的接口。Audio Flinger (libaudioflinger.so):frameworks/base/libs/aud
3、ioflinger 这部分内容被编译成库libaudioflinger.so。Audio的JNI部分:frameworks/base/core/jni Audio的JAVA 部分:frameworks/base/media/java/android/media 主要包含 AudioManager和Audio系统的几个类。Audio硬件抽象层的接口:hardware/libhardware_legacy/include/hardware/ 第二部分 Audio 系统和上层接口2.1 Audio 系统的各个层次2.2 media 库中的 Audio框架部分2.3 AudioFlinger本地代码2
4、.4 Audio 系统的 JNI代码2.5 Audio系统的 Java 代码2.1 Audio 系统的各个层次Audio系统的结构: libmedia.so提供Audio接口,这些 Audio接口既向上层开放,也向本地代码开发。 libaudiofilnger.so提供Audio接口实现。 Audio 硬件抽象层提供到硬件的接口,供AudioFlinger 调用。 Audio 使用 JNI 和 JAVA对上层提供接口。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页
5、 - - - - - - - - - 2.2 media 库中的 Audio框架部分Android 的Audio的核心框架在 media库中提供,其中对上面主要实现AudioSystem、AudioTrack 和AudioRecorder 三个类。提供了 IAudioFlinger类接口,在这个类中,可以获得IAudioTrack 和IAudioRecorder 两个接口,分别用于声音的播放和录制。AudioTrack 和AudioRecorder 分别通过调用 IAudioTrack 和IAudioRecorder 来实现。名师资料总结 - - -精品资料欢迎下载 - - - - - - -
6、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - Audio 系统的头文件(路径为:frameworks/base/include/media/) : AudioSystem.h IAudioFlinger.h AudioTrack.h IAudioTrack.h AudioRecorder.h 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - -
7、- - - IAudioRecorder.h Ixxx 的接口通过 AudioFlinger 来实现,其他接口通过JNI向上层提供接口。Audio系统的头文件在 frameworks/base/include/media/目录中,主要的头文件如下:AudioSystem.h :media库的Audio部分对上层的总管接口; IAudioFlinger.h:需要下层实现的总管接口; AudioTrack.h :放音部分对上接口; IAudioTrack.h:放音部分需要下层实现的接口; AudioRecorder.h :录音部分对上接口; IAudioRecorder.h:录音部分需要下层实现的
8、接口。IAudioFlinger.h、IAudioTrack.h和IAudioRecorder.h这三个接口通过下层的继承来实现(即AudioFlinger)。AudioFlinger.h,AudioTrack.h 和AudioRecorder.h 是对上层提供的接口,它们既供本地程序调用(例如声音的播放器、录制器等),也可以通过JNI向Java层提供接口。AudioTrack 和AudioRecorder 都具有 start,stop 和pause等接口。前者具有 write 接口,用于声音的播放,后者具有 read接口,用于声音的录制。AudioSystem用于Audio系统的控制工作,主
9、要包含一些 set 和get 接口,是一个对上层的类。AudioSystem .h :class AudioSystem public: enum stream_type / Audio 流的类型SYSTEM = 1, RING = 2, MUSIC = 3, ALARM = 4, NOTIFICATION = 5, BLUETOOTH_SCO = 6, ENFORCED_AUDIBLE = 7, NUM_STREAM_TYPES ; enum audio_output_type / Audio数据输出类型/ 省略部分内容 ; enum audio_format / Audio数据格式FORM
10、AT_DEFAULT = 0, PCM_16_BIT, PCM_8_BIT, INVALID_FORMAT ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - enum audio_mode / Audio模式/ 省略部分内容 ; enum audio_routes / Audio 路径类型ROUTE_EARPIECE = (1 0), ROUTE_SPEAKER = (1 1), ROUTE_BLUETOOTH_SCO = (
11、1 2), ROUTE_HEADSET = (1 3), ROUTE_BLUETOOTH_A2DP = (1 4), ROUTE_ALL = -1UL, ; static status_t setMasterVolume(float value); static status_t setMasterMute(bool mute); static status_t getMasterVolume(float* volume); static status_t getMasterMute(bool* mute); static status_t setStreamVolume(int stream
12、, float value); static status_t setStreamMute(int stream, bool mute); static status_t getStreamVolume(int stream, float* volume); static status_t getStreamMute(int stream, bool* mute); static status_t setMode(int mode); static status_t getMode(int* mode); static status_t setRouting(int mode, uint32_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Android的Audio系统 2022 Android Audio 系统
限制150内