我正在尝试用Uri做一些感觉它应该相对简单,但我没有在任何地方找到一个直接的答案,也许我正在尝试做的不需要使用Uri。
在我的项目的res / raw文件夹中,我有一堆.wav文件名称相同但以不同的数字结尾:
res/
raw/
sample_0.wav
sample_1.wav
sample_2.wav
sample_3.wav
我想在SoundPool
中加载其中一个,如下所示:
Soundpool sp = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
public void playSound(int i, Activity a){
spPath = Uri.parse("android.resource://jgjp.com.appname/raw/R.raw.sample_"+i);
int spID = sp.load(a, spPath, 1);
sp.play(spID, 1, 1, 1, 0, 1);
}
我正在使用Uri对象,因为我希望能够根据收到的参数更改资源文件名的最后一位数。
我的问题在于行int spID = sp.load(a, spPath, 1);
,它期望spPath是一个int而不是一个Uri。我知道像R.raw.sample_1
这样的资源标识符实际上返回了int值,在用Uri.parse()设置之后如何从Uri类中获取相应的int?
通过Android文档检查Uri类并没有产生太多,虽然我可以找到很多关于设置Uri的教程我找不到很多关于如何使用它。
答案 0 :(得分:1)
您可以使用Resources.getIdentifier()获取原始资源的数字ID,然后在播放功能中使用它:
int id = getResources()。getIdentifier(“sample_0”,“raw”, getPackageName());