我现在正试图调用资源(在我的应用程序中它们是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 ....”之类的表单?如果我能做到,那么我也可以对图像资源应用类似的方法。
答案 0 :(得分:2)
您可以使用public int getIdentifier (String name, String defType, String defPackage)
方法通过名称获取资源ID。
例如:
int id = getResources().getIdentifier("univ_day"+i, "raw", getPackageName());
hoho = MediaPlayer.create(getApplicationContext(), id);
答案 1 :(得分:0)
我们可以列出原始资产的所有名称,基本上是没有扩展名的文件名,我们可以这样做 -
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逻辑来播放以前的当前和下一个媒体文件。如果您还需要帮助,请告知我们。