Android播放音乐

mainActivity如下:

package cn.com;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.app.Activity;
/**
 * 重要错误总结:
 * Eclipse报错prepareAsync called in state 8
 * 原因:
 * 在initView()方法中:
 * mMediaPlayer=MediaPlayer.create(MainActivity.this, R.raw.big);
 * 为此mMediaPlayer设置了要播放的资源
 * 但是在点击stop按钮以后,执行了mMediaPlayer.release();
 * 这样的话就释放了资源.所以报错
 * 解决办法:
 * 在每次点击play的时候,都执行MediaPlayer.create()
 * 注意:
 * 可以在每次点击暂停的时候保存现在播放的位置即:
 * position=mMediaPlayer.getCurrentPosition();
 * 然后在每次播放的时候
 * mMediaPlayer.seekTo(position);
 * 这样就会从暂停处继续播放
 * 
 *
 */
public class MainActivity extends Activity {
	private TextView mTextView;
	private MediaPlayer mMediaPlayer;
    private ImageView mPlayerImageView;
    private ImageView mPauseImageView;
    private ImageView mStopImageView;
    private boolean isPause=false;
    private boolean isStop=false;
    private boolean isStart=false;
    private int currentPosition=0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initView();
    }
   private void initView(){
	   mTextView=(TextView) findViewById(R.id.textView);
	   mPlayerImageView=(ImageView) findViewById(R.id.playerImageButton);
	   mPlayerImageView.setOnClickListener(new ButtonOnClickListener());
	   mPauseImageView=(ImageView) findViewById(R.id.pauseImageButton);
	   mPauseImageView.setOnClickListener(new ButtonOnClickListener());
	   mStopImageView=(ImageView) findViewById(R.id.stopImageButton);
	   mStopImageView.setOnClickListener(new ButtonOnClickListener());
	   mMediaPlayer=new MediaPlayer();
	  // mMediaPlayer=MediaPlayer.create(MainActivity.this, R.raw.big);
	   mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
		public void onCompletion(MediaPlayer mp) {
			mMediaPlayer.release();
			mTextView.setText("音乐播放完毕");
		}
	});
	   mMediaPlayer.setOnErrorListener(new OnErrorListener() {
		public boolean onError(MediaPlayer mp, int what, int extra) {
			mMediaPlayer.release();
			mTextView.setText("音乐播放错误");
			return false;
		}
	});
   }
   
	private class ButtonOnClickListener implements OnClickListener {
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.playerImageButton:
				if (!isStart) {
					try {
						 mMediaPlayer=MediaPlayer.create(MainActivity.this, R.raw.big);
						//mMediaPlayer.prepare();
						mMediaPlayer.seekTo(currentPosition);
						mMediaPlayer.start();
						mMediaPlayer.setLooping(true);
						mTextView.setText("开始音乐播放");
						isStart = true;
						isPause = false;
						isStop = false;
					} catch (Exception e) {
					}
				}

				break;
			case R.id.pauseImageButton:
				if (mMediaPlayer != null) {
					if (!isStop) {
						if (!isPause) {
							mMediaPlayer.pause();
							mTextView.setText("暂停音乐播放");
							currentPosition=mMediaPlayer.getCurrentPosition();
							isPause = true;
							isStop = false;
							isStart = false;
						} else {
							mMediaPlayer.start();
							mTextView.setText("继续播放音乐");
							isStart = true;
							isPause = false;
							isStop = false;
						}
					}
				}
				break;
			case R.id.stopImageButton:
				if (mMediaPlayer != null) {
					if (isStart) {
						if (!isStop) {
							mMediaPlayer.stop();
							mMediaPlayer.release();
							mTextView.setText("停止音乐播放");
							currentPosition=0;
							isStop = true;
							isPause = false;
							isStart = false;
						}
					}
				}
				break;

			default:
				break;
			}
		}

	}
  
}


main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="测试MediaPlayer"
        android:textSize="30sp"
    />
    <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="70dip"
        android:orientation="horizontal"
        android:layout_below="@id/textView"
     >
        <ImageView 
            android:id="@+id/playerImageButton"
            android:layout_width="70dip"
            android:layout_height="70dip"
            android:src="@drawable/player"
         />
        <ImageView 
            android:id="@+id/pauseImageButton"
            android:layout_width="70dip"
            android:layout_height="70dip"
            android:src="@drawable/pause"
            android:layout_marginLeft="20dip"
         />
        <ImageView 
            android:id="@+id/stopImageButton"
            android:layout_width="70dip"
            android:layout_height="70dip"
            android:src="@drawable/stop"
            android:layout_marginLeft="20dip"
         />
    </LinearLayout>

</RelativeLayout>


 

你可能感兴趣的:(Android播放音乐)