Android仿虾米音乐播放器之MediaPlayer使用

来源:互联网 发布:05年流行歌曲网络歌曲 编辑:程序博客网 时间:2024/04/29 20:05

     MediaPlayer是Android中用来播放媒体文件的一个类,我们用其来播放音乐文件,先介绍用法。

   首先MediaPlayer需要实例化对象,我们在onStratCommand中进行实例化。

private MediaPlayer player;

// api2.0以后采用onStartCommand@Overridepublic 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,并且实现接口的回调方法。

/** * 音乐准备完成的回调函数 */@Overridepublic void onPrepared(MediaPlayer arg0) {Log.i("music service", "onprepare");player.start();}

/** * 音乐播放完成的回调函数 */@Overridepublic 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();



0 0
原创粉丝点击