MediaPlayer.create メソッドでは、Raw ファイルの ID を使用できますが、setDataSource メソッドでそれを使用するにはどうすればよいですか?
3 に答える
ここで@Kartikの答えを言い換えると、Androidのres / rawフォルダーに保存されている.mp3ファイルのURIを取得します
リソース URI を取得する場合は、次の 2 つの方法があります。
- リソース名の使用
構文 : android.resource://[パッケージ]/[res タイプ]/[res 名]
例: Uri.parse("android.resource://com.my.package/drawable/icon");
- リソース ID の使用
構文 : android.resource://[パッケージ]/[resource_id]
例: Uri.parse("android.resource://com.my.package/" + R.drawable.icon);
これらは、drawable フォルダーに保存されている任意の画像ファイルの URI を取得する例です。同様に、res/raw フォルダーの URI を取得できます。
リソースの名前変更などは簡単にリファクタリングできるため、IMO 2 番目の方法が推奨されます。
次のようにデータ ソースを設定します。
CONSTANTS.RES_PREFIX = "android.resource://com.my.package/"
mp.setDataSource(getApplicationContext(), Uri.parse(CONSTANTS.RES_PREFIX + R.raw.id));
生のオーディオを入力ストリームにロードし、通常のストリームと同じように MediaPlayer にロードできます。
InputStream ins = getResources().openRawResource(R.raw.example);
そして、ポケットジャーニーのようなストリーミングチュートリアルに従ってください
しかし、これは非常に複雑です。
mp = MediaPlayer.create(counterstrikesb.this, R.raw.example);