動かざることバグの如し

近づきたいよ 君の理想に

MediaPlayerクラスで音楽ファイルを再生してみる

以下をインポートする必要がある

import android.media.MediaPlayer;

プロジェクトフォルダ内の\res\rawに再生したいファイルを用意しておく。以下はtest.mp3を再生したい場合

MediaPlayer mp = MediaPlayer.create(this, R.raw.test);
mp.start();

が、どうもSDカード内のファイルなど、外部ファイルを再生したい場合はMediaPlayer.createが使えないっぽいのでsetDataSourceを使う必要がある。
importがひとつ増える

import java.io.IOException;

MediaPlayer.createよりも工程が増える。setDataSource()→prepare()→start()の順番。

MediaPlayer mp = new MediaPlayer();
try {
	mp.setDataSource("/sdcard/test.mp3");
	mp.prepare();
	mp.start();
	}catch(IllegalArgumentException e) {
		// TODO 自動生成された catch ブロック
		e.printStackTrace();
	} catch (SecurityException e) {
		// TODO 自動生成された catch ブロック
		e.printStackTrace();
	} catch (IllegalStateException e) {
		// TODO 自動生成された catch ブロック
		e.printStackTrace();
	} catch (IOException e) {
		// TODO 自動生成された catch ブロック
		e.printStackTrace();
	}

無駄にTryCatchしているように見えるが実際無駄である。だがこうやらないとエラー吐いてビルドできないからこういうものだという精神でやってる。
ちなみに以下でループ再生が有効になる

mp.setLooping(true);