将字符串转换为资源Uri以进行mp3播放

bru*_*rux 1 java android

我正在尝试使用媒体播放器类播放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.

请指教.

Nei*_*end 5

我用于这个小挑战的解决方案是基于@ 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)

更好的方案欢迎!