簡単化のため,機能は以下のように定義した.
- 再生/停止ボタンを実装
- Androidアプリ自体が再生するオーディオファイルをリソースとして持つ
1. に関しては,MediaPlayerの仕様上,pause()により一時停止し,seekTo()で先頭に戻すことで停止を実現している.
これは,stop()→prepare()で停止できないというレポートがあったためである.
参考: 適当えんじにあ( ´д`): Android サウンドの MediaPlayer.stop() の罠?
2. に関しては,今回は res/raw 以下の sample.mp3 というファイルを指定したため,"R.raw.sample"となっている.
ここは再生するファイルのパスに応じて変えればよいが,オーディオ/ビデオファイルは res/raw 以下に配置しなければならない.
もしAndroid端末ローカルのファイルやWeb上のファイルを参照する場合は setDataSource() を用いる。
前者はファイルパス、後者はURLを指定すれば再生できるはずだ。
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener{
private Button playBt;
private Button stopBt;
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
playBt = (Button)findViewById(R.id.button1);
stopBt = (Button)findViewById(R.id.button2);
playBt.setOnClickListener(this);
stopBt.setOnClickListener(this);
mediaPlayer = MediaPlayer.create(this, R.raw.sample);
}
// Button-control
public void onClick(View v) {
switch(v.getId()){
case R.id.button1:
if (!mediaPlayer.isPlaying())
mediaPlayer.start();
break;
case R.id.button2:
mediaPlayer.pause();
mediaPlayer.seekTo(0);
break;
}
}
//Key-control
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK ||
keyCode==KeyEvent.KEYCODE_HOME){
mediaPlayer.stop();
mediaPlayer.release();
finish();
return true;
}
return false;
}
}
0 件のコメント:
コメントを投稿