Android中播放音乐的几种方式(3)

电脑杂谈  发布时间:2019-08-26 23:03:20  来源:网络整理

android 音频播放_android ios 音频格式_android 音频播放框架

Ringtone为铃声、通知和其它类似声音提供迅速播放的方式,这里还不得不提到一个管理类”RingtoneManager”,提供平台铃声列表检索方式,并且,Ringtone实例必须从RingtoneManager获取。

获取实例方法,均为RingtoneManager类提供
//通过铃声uri获取
static Ringtone getRingtone(Context context, Uri ringtoneUri)
//通过铃声检索位置获取
Ringtone getRingtone(int position)

其实android 音频播放,Rington这个类非常简单,只应该掌握,播放、停止(paly(),stop())等方式就可以了,而RingtoneManager却是比较重要的。

1. // 两个构造方法
RingtoneManager(Activity activity)
RingtoneManager(Context context)
2. // 获取指定声音类型(铃声、通知、闹铃等)的默认声音的Uri
static Uri getDefaultUri(int type)
3. // 获取系统所有Ringtone的cursor
Cursor getCursor()
4. // 获取cursor指定位置的Ringtone uri
Uri getRingtoneUri(int position)
5. // 判断指定Uri是否为默认铃声
static boolean isDefault(Uri ringtoneUri)
6. //获取指定uri的所属类型
static int getDefaultType(Uri defaultRingtoneUri)
7. //将指定Uri设置为指定声音类型的默认声音
static void setActualDefaultRingtoneUri(Context context, int type, Uri ringtoneUri)

从api看,Ringtone和RingtoneManager还是非常简单的,不多做解释了,直接放上一段使用代码。

 /**
 * 播放来电铃声的默认音乐
*/
private void playRingtoneDefault(){
    Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE) ;
    Ringtone mRingtone = RingtoneManager.getRingtone(this,uri);
    mRingtone.play();
}
/**
* 随机播放一个Ringtone(有可能是提示音、铃声等)
*/
private void ShufflePlayback(){
    RingtoneManager manager = new RingtoneManager(this) ;
    Cursor cursor = manager.getCursor();
    int count = cursor.getCount() ;
    int position = (int)(Math.random()*count) ;
    Ringtone mRingtone = manager.getRingtone(position) ;
    mRingtone.play();
    }
    //记得添加下面两个权限
    <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

以上介绍了几种播放模式,可以说各有优劣。

本文写的不够详细,只是一般的介绍一下几种播放模式。在此做下简单的小结。

对于延迟度要求不高android 音频播放,并且期望才能更全面的控制音乐的播放,MediaPlayer比较合适 声音短小,延迟度小,并且还要几种声音同时播放的画面,适合使用SoundPool 对于简洁的播放,不需要复杂控制的播放,可以给使用AsyncPlayer,所有操作均在子线程不阻塞UI 播放大文件音乐,如WAV无损音频和PCM无压缩音频,可使用更底层的播放模式AudioTrack。它支持流式播放,可以调用(可来自本地和网络)音频流,却播放延迟较小。

ps:据我测试AudioTrack直接支持WAV和PCM,其他音频必须解码成PCM格式能够播放。(其他无损格式没有尝试,有兴趣可以使本文提供的举例测试一下) .jet的音频非常少见(有的游戏中在使用),可使用专门的播放器JetPlayer播放 对于平台类声音的播放和操作,Ringtone更合适(主要是掌握好RingtoneManager)

android.media包中提供的播放音频的形式,远不止这些,本文只是参考api和其它大牛的博客做一些研究和记录,android.media种还有好多不过等着我们探索……

贴出Demo,仅供参考(其中有一点RxJava2的应用,有兴趣可看一下)

点击下载Demo源码


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-120691-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 昭文帝慕容熙
      昭文帝慕容熙

      大学很多寝室都会生各种虫

    热点图片
    拼命载入中...