Android播放音樂

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