Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从本地资源的Uri类中获取int?_Java_Android_Uri - Fatal编程技术网

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

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);

我试图用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);

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”