質問

MediaPlayer.create メソッドでは Raw ファイルへの ID を使用できますが、それを setDataSource メソッドで使用するにはどうすればよいですか?

役に立ちましたか?

解決

通常のストリームと同様に、生のオーディオを入力ストリームにロードし、MediaPlayer にロードできます。

InputStream ins = getResources().openRawResource(R.raw.example);

次に、次のようなストリーミングチュートリアルに従います ポケットジャーニー

しかし、これは非常に複雑です。

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 つの方法があります。

  1. リソース名の使用

構文:android.resource://[パッケージ]/[解像度タイプ]/[解像度名]

例 :Uri.parse("android.resource://com.my.package/drawable/icon");

  1. リソースIDの使用

構文:android.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));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top