我正在尝试使用媒体播放器类播放mp3.当我硬编码它的mp3资源时,我希望资源来自一个字符串,而不是直接访问它R.raw.mp3name.
Bundle bundle = getIntent().getExtras();
String Choice= bundle.getString("bundledChoice");
Uri myUri = Uri.parse("R.raw." + Choice);
mPlayer = MediaPlayer.create(activity.this, myUri);
mPlayer.start();
Run Code Online (Sandbox Code Playgroud)
如果我将第二行更改为最后一行mPlayer = MediaPlayer.create(activity.this, R.raw.song)它将起作用,问题是从包中获取的字符串动态创建资源URI.
请指教.
我用于这个小挑战的解决方案是基于@ Creator对这篇文章的回答:Android - 将图像资源转换为Uri:IllegalArgumentException.
解决方案是使用
Uri uri = Uri.parse("android.resource://[package]/[res type]/[res name]");
Run Code Online (Sandbox Code Playgroud)
[package]你要么知道(com.company.blah.superdooperthing),要么可以使用getPackageName()来确定.
[res type]是(我认为,似乎工作)你从中提取资源的"res"里面的目录.因此,对于音频文件.../res/raw/nicemusic.mp3,res将是"原始".
[res name]是(我认为,似乎工作)资源的文件名(扩展名较少).因此,对于上面的例子,它将是"nicemusic".
因此,更系统的方法可能是:
String dataResourceDirectory = "raw";
String dataResoruceFilename = "nicemusic";
Uri uri=Uri.parse("android.resource://" + getPackageName() + "/" +
dataResourceDirectory + "/" + dataResoruceFilename);
Run Code Online (Sandbox Code Playgroud)
更好的方案欢迎!
| 归档时间: |
|
| 查看次数: |
3147 次 |
| 最近记录: |