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> 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!