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