Android播放音樂

來源:互聯網
上載者:User

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>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.