MediaPlayer でサウンド再生 ~リソース版

 BGMとVoiceを想定して、MediaPlayer でサウンド・ファイルを再生してみたよ。
 作ってみたのは、下記ソース。

public class mySound extends Activity {

	private MediaPlayer mp;
	private MediaPlayer mp1;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// トラック 0
		mp = MediaPlayer.create(this, R.raw.bgm);
		mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
		mp.setLooping(true);
		mp.start();
		//--

		// トラック 1
		mp1 = MediaPlayer.create(this, R.raw.voice);
		mp1.setAudioStreamType(AudioManager.STREAM_MUSIC); 
		mp1.start();
		//--

	}

	@Override
	public void onDestroy(){

		if(mp.isPlaying()){
			mp.stop();
		}

		if(mp1.isPlaying()){
			mp1.stop();
		}

		super.onDestroy();
		// アクティビティの終了
		finish();
	}

}
  • 再生トラックを2つ設け、片方をループ再生、もう片方をループなしの再生をしている。
  • 再生するファイルは、リソース・ファイル。
     サウンド・ファイルは、res の中に raw というディレクトリを作って、その中に格納する。
  • ファイル・フォーマットは、mp3, midi, ogg。それぞれ再生されることを確認。

 13行目のsetAudioStreamType は、実行しなくても再生される。
 ただし、今回のような、複数トラック時に再生されない時があった。

onDestroy

 MediaPlayer での再生は、アプリ終了後も継続される。
 そのため、onDestroy メソッドで再生停止するようにしているよ。
 ※.onDestroy は、アプリの終了時に実行されるmethod。

 またアプリに実装する場合、onPause, onStop でも同様に、pause や stop を実行する必要がある。
 じゃないと、アプリを切り替えられた時に、サウンドが再生され続けてしまうよ。

prepare ってナニよ?

 MediaPlayer のprepare メソッドは、再生準備をするものらしい。
 けれど、「create 直後はしなくていい」らしい。
 どうも仕様の変更があったみたいで、昔はするものだったみたいだね。
 今はcreate やstop と共に行われるようになっているみたいだ。
※.参考
https://groups.google.com/group/android-group-japan/msg/fdff0b4d0af94b4b?hl=ja
http://developer.android.com/reference/android/media/MediaPlayer.html

Comments are closed.