在MediaPlayer.create方法中,可以使用原始文件的id但是如何在setDataSource方法中使用它?
答案 0 :(得分:46)
请参阅来源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。
答案 1 :(得分:16)
在这里解释@Kartik的回答Get URI of .mp3 file stored in res/raw folder in android
如果您想获取任何资源URI,则有两种方法:
语法: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);
这些是获取存储在drawable文件夹中的任何图像文件的URI的示例。 同样,您可以获取res / raw文件夹的URI。
IMO第二种方式是首选,因为重命名资源等可以 很容易重构。
像这样设置数据源:
CONSTANTS.RES_PREFIX = "android.resource://com.my.package/"
mp.setDataSource(getApplicationContext(), Uri.parse(CONSTANTS.RES_PREFIX + R.raw.id));
答案 2 :(得分:13)
您可以将原始音频加载到输入流中,并像普通流一样将其加载到MediaPlayer中:
InputStream ins = getResources().openRawResource(R.raw.example);
然后按照pocketjourney
之类的流媒体教程进行操作但是这太复杂了,因为你可以打电话给
mp = MediaPlayer.create(counterstrikesb.this, R.raw.example);