LoginSignup
0
0

More than 3 years have passed since last update.

【Android】MediaPlayerで音楽を一時停止して途中から再生する方法

Posted at

プログラミング勉強日記

2021年1月16日
MediaPlayerで音楽を一時停止して、止めたところから再生する方法を簡単にまとめる。

MediaPlayerで音楽を再生する方法

MainActivity.java
mp = MediaPlayer.create(this, R.raw.musicFile); // 音楽ファイルを読み込み
mp.start(); // 再生開始

MediaPlayerで音楽を一時停止する方法

MainActivity.java
mp.pause();

サンプルプログラム

 ポイントはstartする際にMediaPlayerのインスタンスを生成しないこと。そのまえにonResumeの中でインスタンスを生成することで、一時停止してその途中からまた再生することができる。

public class Sample20120802Activity extends Activity {
    MediaPlayer mp = null;
    Button[] btn = new Button[3];

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        setContentView(ll);

        btn[0] = new Button(this);
        btn[1] = new Button(this);
        btn[2] = new Button(this);

        btn[0].setText("再生");
        btn[1].setText("一時停止");
        btn[2].setText("停止");

        btn[0].setEnabled(true);
        btn[1].setEnabled(false);
        btn[2].setEnabled(false);

        ll.addView(btn[0]);
        ll.addView(btn[1]);
        ll.addView(btn[2]);
        btn[0].setOnClickListener( new sampleClickListener() );
        btn[1].setOnClickListener( new sampleClickListener() );
        btn[2].setOnClickListener( new sampleClickListener() );
    }

    public void onResume(){
        super.onResume();
        mp = MediaPlayer.create(this, R.raw.musicFile); 
        mp.setOnCompletionListener(  new SampleCompListener() );
    }

    public void onPause(){
        super.onPause();
        mp.release();
    }

    class SampleCompListener implements OnCompletionListener{
        @Override
        public void onCompletion(MediaPlayer mp) {
            btn[0].setEnabled(true);
            btn[1].setEnabled(false);
            btn[2].setEnabled(false);
        }
    }

    class sampleClickListener implements OnClickListener{
        @Override
        public void onClick(View v) {
            if( v == btn[0] ){
                btn[0].setEnabled(false);
                btn[1].setEnabled(true);
                btn[2].setEnabled(true);
                try{
                    mp.prepare();
                } catch ( Exception e ){ }
                mp.start();
            }else if( v == btn[1] ){
                btn[0].setEnabled(false);
                btn[1].setEnabled(true);
                btn[2].setEnabled(true);
                if( mp.isPlaying() ){
                    mp.pause();
                } else {
                    mp.start();
                }
            } else {
                btn[0].setEnabled(true);
                btn[1].setEnabled(false);
                btn[2].setEnabled(false);
                mp.pause();
                mp.seekTo(0);
            }
        }
    }
}

参考文献

【Android】MediaPlayerクラスを使ってmp3形式の音楽ファイルを再生してみる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0