Java 如何从本地资源的Uri类中获取int?
我试图用Uri做一些事情,感觉应该相对简单,但我还没有找到一个直接的答案,也许我尝试做的事情不需要使用Uri 在我的项目的res/raw文件夹中,我有一堆.wav文件,它们的名称相同,但以不同的数字结尾:Java 如何从本地资源的Uri类中获取int?,java,android,uri,Java,Android,Uri,我试图用Uri做一些事情,感觉应该相对简单,但我还没有找到一个直接的答案,也许我尝试做的事情不需要使用Uri 在我的项目的res/raw文件夹中,我有一堆.wav文件,它们的名称相同,但以不同的数字结尾: res/ raw/ sample_0.wav sample_1.wav sample_2.wav sample_3.wav 我想在声音池中加载其中一个,如下所示: Soundpool sp = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
res/
raw/
sample_0.wav
sample_1.wav
sample_2.wav
sample_3.wav
我想在声音池
中加载其中一个,如下所示:
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对象,是因为我希望能够根据收到的参数更改资源文件名的最后一位数字
我的问题是行intspid=sp.load(a,spPath,1)代码>其中它希望spPath是int而不是Uri。我知道像R.raw.sample_1
这样的资源标识符实际上返回int值,在使用Uri.parse()设置Uri类之后,如何从Uri类中获取相应的int
查看android文档中的Uri类并没有产生太多结果,虽然我可以找到很多关于设置Uri的教程,但我找不到太多关于如何使用它的教程。您可以使用Resources.getIdentifier()获取原始资源的数字ID,然后在播放函数中使用它:
int id=getResources().getIdentifier(“示例0”,“原始”,
getPackageName())
load(uri.toString(),1)感谢您的快速回复,有什么原因不允许您这样设置上下文吗?我希望playsound()是一个可以从另一个类调用的方法,但我可能可以解决这个问题。由于某些原因,在不传递上下文的情况下使用字符串路径会在logcat中显示“sample 0 not READY”(示例0 not READY)错误消息,并且不会播放声音。。。我现在在我的activity java类中使用它,但它不起作用..可能与我所寻找的完全相同,我怀疑解决方案可能不涉及Uri,谢谢!实际上我用的是DuckDuckGo:P我很好奇,你觉得我应该用谷歌搜索什么?“安卓通过名字获取原始id”