2014年2月21日金曜日

Android::MediaPlayer による Audio Player の実装

Android のオーディオ/ビデオ再生用クラス MediaPlayer を用いて簡単なオーディオ再生プログラムを作成する.

簡単化のため,機能は以下のように定義した.

  1. 再生/停止ボタンを実装
  2. 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 件のコメント:

foobar2000でYouTubeの音楽を聞く

foo_youtube: Home インストール方法はこちら:  Foobar2000:How to install a component メリットとしては、 1) foobar 上で Youtube の音楽を聞ける(スペクトラムアナライザーやスペクトログラムを見た...