Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
如何在android中使用字符串名称调用资源?_Android_Resources_Mp3 - Fatal编程技术网

如何在android中使用字符串名称调用资源?

如何在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…”之类的

我现在尝试调用这些资源(在我的应用程序中,它们是mp3文件和图像)。 对于mp3文件部分,我的代码是这样的(显然不起作用!)

在我的应用程序中,应用程序中有数百个mp3文件。所以我想做的是简单地将代码总结成这样

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