MediaPlayer.createメソッドではRawファイルのIDを使用できますが、それをsetDataSourceメソッドで使用するにはどうすればよいですか?
通常のストリームの場合と同様に、生のオーディオを入力ストリームにロードしてMediaPlayerにロードできます。
InputStream ins = getResources().openRawResource(R.raw.example);
pocketjourney のようなストリーミングチュートリアルに従います
しかし、これは単に呼び出すことができるため、過度に複雑です
mp = MediaPlayer.create(counterstrikesb.this, R.raw.example);
ソースを参照してください Android.media.MediaPlayer
AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid);
if (afd == null) return;
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();
ブロックにtry-catchを追加することもできます。
@Kartikの答えをここで言い換えると Androidのres/rawフォルダーに保存されている.mp3ファイルのURIを取得
リソースURIを取得する場合、2つの方法があります:
構文:Android.resource:// [package]/[res type]/[res name]
例:Uri.parse( "Android.resource://com.my.package/drawable/icon");
構文:Android.resource:// [package]/[resource_id]
例:Uri.parse( "Android.resource://com.my.package/" + R.drawable.icon);
これらは、ドローアブルフォルダーに保存されている画像ファイルの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));