将数据源设置为 MediaPlayer 中的原始 ID
-
16-09-2019 - |
题
在 MediaPlayer.create 方法中,可以使用原始文件的 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 添加到块中。
意译@卡尔蒂克的答案在这里 获得URI。mp3文件存储在res/原文件夹在安卓
如果你想得到任何资源URI然后有两种方式:
- 使用资源的名字
语法:序。资源://[包]/[res类型]/[res名]
例如:Uri。parse("序。资源://com.我的。包装冲/标");
- 使用的资源Id
语法:序。资源://[包]/[resource_id]
例如:Uri。parse("序。资源://com.我的。包装/"+ R.可画.图标);
这些例子得到的URI的任何图像文件储存在绘制文件夹。同样,你可以得到的Uri res/原文件夹。
海事组织第二种方法是首选,因为重新命名的资源可以等 够容易地重构。
集的数据来源如下所示:
CONSTANTS.RES_PREFIX = "android.resource://com.my.package/"
mp.setDataSource(getApplicationContext(), Uri.parse(CONSTANTS.RES_PREFIX + R.raw.id));
不隶属于 StackOverflow