您的位置:华清远见教育科技集团 >> 新闻动态 >> Android资料 >> Android音频处理的基本接口  
 
Android音频处理的基本接口

Android开发中,根据不同的场景,出于冲突处理策略的考虑,开发者需要利用不同的接口来进行音频资源的播放。对于音乐类型的音频资源,可以通过MediaPlayer来播放;对于音调,可以通过ToneGenerator来播放;对于提示音,可以通过Ringtone来播放;对于游戏中的音频资源,可以通过SoundPool来播放。

对于录音功能,则需要通过MediaRecorder和AudioRecord等来进行音频记录。

除了这些直接的音频类外,对于音量调节、音频设备的管理等,Android还提供了相关的类来处理。

AudioManager通过音频服务,为上层提供了音量和铃声模式控制的接口,铃声模式控制包括扬声器、耳机、蓝牙等是否打开,麦克风是否静音等。在开发多媒体应用时会经常用到AudioManager,关于Android AudioManager音量控制流程,我们会在后续的免费资料中讲到。

AudioSystem提供了音频系统的基本类型定义,以及基本操作的接口,对应的JNI接口文件为android_media_AudioSystem.cpp。音频系统的主要类型包括:STREAM_VOICE_CALL、STREAM_SYSTEM、STREAM_RING、STREAM_MUSIC、STREAM_ALARM、STREAM_ NOTIFICATION、STREAM_BLUETOOTH_SCO、STREAM_SYSTEM_ENFORCED、STREAM_DTMF、STREAM_TTS等。

AudioTrack直接为PCM数据提供支持,对应的JNI接口文件为android_media_ AudioTrack.cpp。
AudioRecord为音频系统的录音接口。默认的编码格式为PCM_16_BIT,对应的JNI接口文件为android_media_AudioRecord.cpp。

Ringtone和RingtoneManager为铃声、提示音、闹钟等提供了快速播放,以及管理接口。实质是对媒体播放器提供了一个简单的封装。

ToneGenerator提供了对DTMF音(ITU-T Q.23),以及呼叫监督音(3GPP TS 22.001)、专用音(3GPP TS 31.111)中规定的音频的支持,根据呼叫状态和漫游状态,该文件产生的音频路径为下行音频或者传输给扬声器或耳机。对应的JNI接口文件为android_media_ToneGenerator.cpp。需要说明的是,DTMF音为WAV格式,相关的音频类型定义位于ToneGenerator.h文件中。

SoundPool能够播放音频流的组合音,这对游戏应用而言显然非常有用。对应的JNI接口为android_media_SoundPool.cpp。

SoundPool可以从APK包中的资源文件或者文件系统中的文件将音频资源加载到内存中。在底层的实现上,SoundPool通过媒体播放服务可以将音频资源解码为一个16bit的单声道或者立体声的PCM流,这使得应用避免了在回放过程中进行解码造成的延迟。

除了回放过程中延迟小的优点外,SoundPool还能够对一定数量的音频流进行同时播放。当要播放的音频流数量超过SoundPool所设定的大值时,SoundPool将会停止已播放的一条低优先级的音频流。SoundPool大播放音频流数量的设置,可以避免CPU过载和影响UI体验。

在Android 2.3中,还增加了android.media.audiofx包对单曲和全局的音效提供支持,包括重低音、环绕音、均衡器、混响和可视化等声音特效。

 
 更多相关文章

·Android编译过程详解(三)
·Android编译过程详解(二)
·Android平板电脑的设计
·在Android中使用VideoView播放视频
·Android编译过程详解(一)