我之前也写过利用MediaPlayer播放音频,如果我们在应用中播放音乐,自然是不成问题。但是,如果我们是要播放一个简短的音效,那就有点不合适了。所以这里我们讲解一些Android中铃声的播放。
1.MediaPlayer的不足
- MediaPlayer的初始化比较消耗资源,尤其是播放短小铃音时反应偏慢。
- 一个MediaPlayer同时只能播放一个媒体文件,无法同时播放多个声音。
- MediaPlayer只能播放已经完成编码的音频文件,无法直接播放原始音频,也不能流式播放(即边录边播)。
2.对于第一个问题,Android提供了铃音播放工具Ringtone。
3.三种铃音来源
<1>系统自带的铃音,其Uri的获取方式举例如下:
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)
铃声管理器支持的铃声类型包括如下几种
- TYPE_RINGTONE:来电铃声
- TYPE_NOTIFICATION:通知铃声
- TYPE_ALARM:闹钟铃声
<2>内部存储与SD卡上的铃音文件,其Uri的获取方式举例如下:
Uri.parse("file:///system/media/audio/ui/camera_click.ogg")//相机快门音
<3>App工程中res/raw目录下的铃声文件,其Uri的获取方式举例如下:
Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.ring);//从资源文件中获取铃音
4.铃声对象Ringtone的主要方法
- play:开始播放铃声。
- stop:停止播放铃声。
- isPlaying:判断铃声是否正在播放。
5.代码示例
mRingtone = RingtoneManager.getRingtone(this,RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
mRingtone.play();