如何在android中使用字符串名称调用资源?
我现在尝试调用这些资源(在我的应用程序中,它们是mp3文件和图像)。 对于mp3文件部分,我的代码是这样的(显然不起作用!) 在我的应用程序中,应用程序中有数百个mp3文件。所以我想做的是简单地将代码总结成这样如何在android中使用字符串名称调用资源?,android,resources,mp3,Android,Resources,Mp3,我现在尝试调用这些资源(在我的应用程序中,它们是mp3文件和图像)。 对于mp3文件部分,我的代码是这样的(显然不起作用!) 在我的应用程序中,应用程序中有数百个mp3文件。所以我想做的是简单地将代码总结成这样 hoho=MediaPlayer.crate(getApplicationContet(), R.raw.univ_day+"i"); //This also looks really awkward. 如果我知道如何像上面一样写下代码。如何处理原始文件的名称和“R.raw…”之类的
hoho=MediaPlayer.crate(getApplicationContet(), R.raw.univ_day+"i"); //This also looks really awkward.
如果我知道如何像上面一样写下代码。如何处理原始文件的名称和“R.raw…”之类的表单?如果可以,那么我也可以对图像资源应用类似的方法。我们可以列出所有原始资产的名称,这些名称基本上是没有扩展名的文件名,我们可以这样做-
public void listRaw(){
Field[] fields=R.raw.class.getFields();
for(int count=0; count < fields.length; count++){
Log.i("Raw Asset: ", fields[count].getName());
}
}
这与通过引用R.raw.yourRawFileName得到的int相同
在您的代码中,您可以像这样使用-
hoho= MediaPlayer.create(getApplicationContext(), resourceID);
hoho.start();
接下来,您可以应用JAVA逻辑来播放上一个当前和下一个媒体文件。如果您还需要帮助,请告知。您可以使用
public int getIdentifier(String name、String defType、String defPackage)
方法通过名称获取资源id。
例如:
int id = getResources().getIdentifier("univ_day"+i, "raw", getPackageName());
hoho = MediaPlayer.create(getApplicationContext(), id);
将音频文件放入assets目录并设置字符串/文件名数组,然后遍历它
AssetFileDescriptor descriptor=contex.getAssets().openFd(文件名+i)代码>mp.setDataSource(descriptor.getFileDescriptor(),descriptor.getStartOffset(),descriptor.getLength())
descriptor.close()
可能重复的No-its-not。这里的问题是从res文件夹中获取媒体文件列表,而不是所有字符串资源名称的列表。请确保检查id!=0
。因为资源id 0表示找不到该资源。谢谢!这就是我一直在寻找的!!:)
hoho= MediaPlayer.create(getApplicationContext(), resourceID);
hoho.start();
int id = getResources().getIdentifier("univ_day"+i, "raw", getPackageName());
hoho = MediaPlayer.create(getApplicationContext(), id);