Android:使用变量分配R.raw

时间:2015-12-09 12:52:47

标签: android arrays soundpool

我正在扫描我的原始文件夹中的文件,我想将这些值分配给R.raw-path。

以原始文件列出文件的功能:

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

    }
}

为声池分配路径的代码

   sp = new SoundPool(99, AudioManager.STREAM_MUSIC, 0);

    sound1 = sp.load(this, R.raw.kick, 1); 

我想要类似的内容:

“sound1 = sp.load(this,R.raw.fields [count] .getName(),1);”

2 个答案:

答案 0 :(得分:1)

使用getIdentifier方法使用名称访问id文件:

int rawId = getResources().getIdentifier("raw/"+fields[count].getName(),
                                                   null, getPackageName());
sound1 = sp.load(this, rawId, 1);

答案 1 :(得分:0)

另一种选择可以是:

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

            try {

                //get the value(the ID) of the field
                int value= fields[count].getInt(R.raw.class);
                Log.i("value",value+"");
                sound1 = sp.load(this, value, 1);

            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }

        }
    }