繁体   English   中英

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

[英]How to call resources with string name in android?

我现在正在尝试调用资源(在我的应用程序中,它们是mp3文件和图像)。 对于mp3文件,我的代码如下(显然无法正常工作!)

if(i==1)
{
hoho= MediaPlayer.create(getApplicationContext(), R.raw.univ_day1);
hoho.start();
}
else if (i==2)
{
hoho= MediaPlayer.create(getApplicationContext(), R.raw.univ_day2);
hoho.start();  
}

...

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

hoho=MediaPlayer.crate(getApplicationContet(), R.raw.univ_day+"i"); //This also looks really awkward.

如果我知道如何像上面一样写下代码。 如何处理原始文件的名称和“ R.raw ....”之类的格式? 如果可以,那么我也可以对图像资源应用类似的方法。

您可以使用public int getIdentifier (String name, String defType, String defPackage)方法按名称获取资源ID。 例如:

int id = getResources().getIdentifier("univ_day"+i, "raw", getPackageName());
hoho = MediaPlayer.create(getApplicationContext(), id);

我们可以列出所有原始资产的名称,基本上是没有扩展名的文件名,我们可以这样做-

public void listRaw(){
    Field[] fields=R.raw.class.getFields();
    for(int count=0; count < fields.length; count++){
        Log.i("Raw Asset: ", fields[count].getName());
    }
}

接下来,您需要通过分配给该资源名称的整数来引用它们。 您可以通过以下方式获取此整数:

int resourceID=fields[count].getInt(fields[count]);

这与引用R.raw.yourRawFileName所获得的int相同。

在您的代码中,您可以像这样使用-

hoho= MediaPlayer.create(getApplicationContext(), resourceID);
hoho.start();

接下来,您可以应用JAVA逻辑来播放上一个当前和下一个媒体文件。 如果您在这里也需要帮助,请告诉我们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM