プログラミング勉強日記
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);
}
}
}
}