Java 访问手机上的资源/原始资源时出现问题。。。在emulator中工作良好
我试图以编程方式访问Java 访问手机上的资源/原始资源时出现问题。。。在emulator中工作良好,java,android,resources,Java,Android,Resources,我试图以编程方式访问/res/raw文件夹中的资源(特别是…mp3文件)。在emulator中,以下模板适用于我 Uri uri = Uri.parse("android.resource://com.foo.bar/raw/name_of_resource"); MediaPlayer mp3 = MediaPlayer.create(this, uri); 在实际手机上,MediaPlayer.create()方法返回null。有什么好处?有没有更好的方式以编程方式访问资源 附言 我没有使
/res/raw
文件夹中的资源(特别是…mp3文件)。在emulator中,以下模板适用于我
Uri uri = Uri.parse("android.resource://com.foo.bar/raw/name_of_resource");
MediaPlayer mp3 = MediaPlayer.create(this, uri);
在实际手机上,MediaPlayer.create()
方法返回null。有什么好处?有没有更好的方式以编程方式访问资源
附言
我没有使用MediaPlayer.create(这是资源的R.raw.name)是有原因的。在我的特殊情况下,对我来说,生成资源的名称要比计算资源的id
容易得多。(也就是说,我可以相当容易地计算出资源的字符串名称,\u,但是推断实际的整数id
将需要更多的工作和更多的switch
语句
有没有更好的方式以编程方式访问资源
使用MediaPlayer
上的静态create()
方法
在我的特殊情况下,对我来说,生成资源的名称要比计算资源的id容易得多
使用getResources().getIdentifier()
获取您的资源ID。可能是权限问题?我认为仿真器比实际设备提供更多访问权限。使用反射如何?我不认为这是权限问题。如果我给程序播放任意mp3,它工作正常。您建议我如何使用反射?谢谢您的回复。正如您所建议的,我没有对getResources().getIdentifier()进行了ried,但没有任何效果(尽管它仍然可以在模拟器上工作)。我不太清楚您所说的“使用静态创建()是什么意思MediaPlayer上的方法。我在原始帖子中使用的方法是静态的。你能详细说明一下吗?因为代码在模拟器中工作,我感觉它很好。还有其他原因吗?我的手机无法访问原始资源吗?@dfetter88:下面是一个示例项目,它可以播放存储为原始资源的音频:--在har上工作良好谢谢你的帮助。我最终恢复到一个早期版本并进行了一些重写。现在一切都正常了,尽管我仍然不知道我最初哪里出了问题。