如何从Uri类获取本地资源的int?

时间:2015-09-17 03:06:16

标签: java android uri

我正在尝试用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的教程我找不到很多关于如何使用它。

1 个答案:

答案 0 :(得分:1)

您可以使用Resources.getIdentifier()获取原始资源的数字ID,然后在播放功能中使用它:

  

int id = getResources()。getIdentifier(“sample_0”,“raw”,   getPackageName());