打开android的开发文档,里面的State Diagram
先了解一下MediaPlayer的生命周期:
Idle状态:在reset或者MediaPlayer player=new MediaPlayer()之后进入此状态
release状态:在调用release()之后进入此状态
MediaPlayer的2种创建
方法1:
MediaPlayer player=new MediaPlayer();
这种创建之后player处于Idle状态,必须对plyaer进行初始化操作:
player.setDataSource();//设置播放源
player.prepare();//设置处于Prepared状态
player.start();//可以开始播放了
方法2:
MediaPlayer player=MediaPlayer.create();
player.start();
这种方法创建之后player处于Prepared状态,所以只要调用player.start()就可以播放音乐了
在播放之前 player必须要处于Prepared状态
播放之后可以调用isPlaying()来测试是否正在播放
可以通过调用setLooping()函数来设置循环播放。
需要注意的2点
1:当player正在播放时,可以调用player.onPause();来暂停player的播放,此时player进入Paused状态,由生命周期图可以看出只要调用start()函数
就可以进入Started状态。所以恢复播放的时候只需要在此调用player.start();即可,而且会从暂停的位置继续播放。
2:当player正在播放时,可以调用player.stop();来停止player的播放。。但是调用了stop()方法之后,player处于Stopped状态,
从上面的生命周期图可以看出来,Stopped时不能直接到Started状态。必须先调用prepare()函数进入Prepared状态,然后才能调用
start()函数进入Started状态。进行正常的播放,此时经历了Prepared状态 ,所以播放的时候必然是从头开始播放。
具体的解释就写这么多。
下面上一个我今天写的代码:
MainActivity代码:
package com.example.apple.lightmusic;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity implements View.OnClickListener
{
private int pos=-1;
private Button start,stop,pause,loop;
private TextView showtv;
private String s="状态:";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView