Android仿虾米音乐播放器之MediaPlayer使用
2015-07-16 20:49
513 查看
MediaPlayer是Android中用来播放媒体文件的一个类,我们用其来播放音乐文件,先介绍用法。
首先MediaPlayer需要实例化对象,我们在onStratCommand中进行实例化。
音乐总有开始播放,和播放完毕的时候,我们需要继承两个接口OnPreparedListener,OnCompletionListener,并且实现接口的回调方法。
其中的prepareMusic是将播放音乐的过程抽象出来的方法
当然音乐也需要暂停功能
当继续播放的时候,我们设置当前播放进度为current,然后start就可以了
首先MediaPlayer需要实例化对象,我们在onStratCommand中进行实例化。
private MediaPlayer player;
// api2.0以后采用onStartCommand @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i("music service", "onstartcommand"); player = new MediaPlayer(); mp3Infos = intent.getParcelableArrayListExtra("mp3Infos"); return super.onStartCommand(intent, flags, startId); }
音乐总有开始播放,和播放完毕的时候,我们需要继承两个接口OnPreparedListener,OnCompletionListener,并且实现接口的回调方法。
/** * 音乐准备完成的回调函数 */ @Override public void onPrepared(MediaPlayer arg0) { Log.i("music service", "onprepare"); player.start(); }
/** * 音乐播放完成的回调函数 */ @Override public void onCompletion(MediaPlayer arg0) { Log.i("music service", "oncompletion"); if ((Myapp.state % 3) == 2) { prepareMusic(position); } else { Intent intent = new Intent(); intent.setAction(Constants.ACTION_NEXT); sendBroadcast(intent); } }
其中的prepareMusic是将播放音乐的过程抽象出来的方法
<span style="font-size:14px;">/* * 准备播放音乐并添加播放与完结的事件监听 */ private void prepareMusic(int position) { player.reset(); player.setAudioStreamType(AudioManager.STREAM_MUSIC); // 设置播放类型 String url = mp3Infos.get(position).getUrl(); try { player.setDataSource(url); } catch (Exception e) { e.printStackTrace(); } player.setOnPreparedListener(this); player.setOnCompletionListener(this); player.prepareAsync(); // prepare是阻塞的 prepareAsync是异步的 }</span>
当然音乐也需要暂停功能
public void pauseMusic() { Log.i("pause", "pause"); player.pause(); current = player.getCurrentPosition(); }这里的current是返回的暂停时的milliseconds,可以看源码了解
当继续播放的时候,我们设置当前播放进度为current,然后start就可以了
player.seekTo(current); player.start();
相关文章推荐
- Android修改桌面快捷方式的图片和名称
- android如何提供SDK给别人使用
- Android Configuration横竖屏切换时Activity生命周期调用
- Android SDK版本和ADT版本
- Android性能优化相关资料
- 我的Android进阶之旅------>Android中的布局优化 include、merge 、ViewStub
- Android颜色大全
- Android Studio中获取sha1证书指纹数据的方法
- android屏幕适配详解
- Android解析四种启动模式
- android wheelView
- ]获取android应用的MD5签名
- Android学习2——Activity之间跳转
- android关于实现滑动界面
- Android中的命名规范
- Android清单文件详解(四) ---- backupAgent的用法
- 动态调试android, ddms&ida
- Android HandlerThread 源码分析
- Android串口通信
- android菜鸟学习笔记27----Fragment的简单使用