MediaPlayerについて調べたり触ったりしたので、いろいろとざっくりまとめてみた。
#MediaPlayeを使う
参考:MediaPlayer overview
公式ドキュメントには3つの使用例が記載されてる
・リソースファイルを再生する場合
・URIから再生する場合
・ストリーミング再生する場合
これに沿って3つの使用例を記載しておく
リソースファイルを再生する場合
リソースファイルを再生
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.hoge);
mediaPlayer.start();
URIから再生する場合
URIから再生
Uri myUri = ....;
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();
URLからストリーミング再生をする場合
URLからストリーミング再生
String url = "http://........";
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
mediaPlayer.start();
AndroidManifest.xml
<!--ネットワークにアクセスするための権限を設定-->
<uses-permission android:name="android.permission.INTERNET" />
よく使うかもしれないMediaPlayerのメソッド
参考:MediaPlayer
戻り値 | メソッド | 説明 |
---|---|---|
void | start() | 再生 |
〃 | pause() | 一時停止 |
〃 | stop() | 停止 |
〃 | prepare() | 準備(同期) |
〃 | release() | リソースを開放する |
〃 | reset() | プレイヤーをリセットする |
〃 | setVolume(float leftVolume,float rightVolume) | 左右の音量設定する |
〃 | seekTo(int msec) | 再生位置を指定する |
boolean | isPlaying() | 再生中かどうか返す |
〃 | isLooping(boolean looping) | ループ再生の設定をする。trueはループ、falseはループなし |
int | getDuration() | ファイルの再生時間を返す |
ストレージから音声ファイルのURIを取得する
端末毎にある、標準のPickerUIを通じてファイルにアクセスする
参考:一般的なインテント
ACTION_OPEN_DOCUMENT
ストレージ アクセス フレームワーク
[Android] Storage Access Framework で画像を取り出す
MainActivity.java
static final int CHOSE_FILE_CODE = 1;//任意の整数
Uri uri;
public void selectAudio() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("audio/*");
startActivityForResult(intent, CHOSE_FILE_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CHOSE_FILE_CODE && resultCode == RESULT_OK) {
uri = data.getData();
//やりたいこと
...
...
}
}