音楽ファイルを読み込んで再生する方法です。
Androidには音を鳴らす方法としてはSoundPoolクラスを使った方法もありますね。
SoundPoolクラスは短い音(効果音)を鳴らす時に使うと良いそうです(^ω^)
再生に使用するmp3ファイルを用意する
今回はリソースファイルから読み込んで再生する方法を紹介します。
resディレクトリの下に「raw」というディレクトリを作成してそこに読み込むmp3ファイルを置いておきます。

これにより、プログラム中で「R.raw.test」というリソース名で音楽ファイルを扱うことができます(^ω^)
MediaPlayerクラスのオブジェクトを取得して読込み、再生する
MediaPlayerクラスのオブジェクトをcreateメソッドで作成して、prepareメソッドで呼び出し、startメソッドで再生開始です。
createメソッドの引数には自身のコンテキスト(thisで問題無いです)とリソース名を指定します。
例外が発生する可能性があるのでtyu/catch文でくくっておきます。
MediaPlayer mp = MediaPlayer.create( this, R.raw.test );
try{
mp.prepare();
}catch( Exception e ){ }
mp.start();
MediaPlayerクラスのメソッド例
取得したオブジェクトの関数を使って停止やシークができます。
アプリの停止するタイミングでreleaseメソッドを使わないとメモリに残り続けてしまうので注意です。
| pauseメソッド | 再生の停止 |
|---|---|
| seetToメソッド | 引数で指定した秒数にシーク |
| releaseメソッド | リソースの開放 |
| setVolumeメソッド | 音量の設定 |
サンプルプログラム
再生、一時停止、停止ボタンを付けた簡単なサンプルです。
・Sample20120802Activity.java
※importは省略
public class Sample20120802Activity extends Activity {
MediaPlayer mp;
Button[] btn = new Button[3];
/** Called when the activity is first created. */
@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.test );
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);
}
}
}
}
【実行結果】
