2015-12-09 2 views
0

Я просматриваю свою сырую папку для файлов, и я хочу, чтобы эти значения были отсканированы в путь R.raw.Android: Назначить R.raw с переменной

Функция для получения списка файлов в сырье:

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

    } 
} 

код для назначения пути для Soundpool

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

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

Я хочу что-то вроде:

«SOUND1 = sp.load (это, R.raw.fields [count] .getNa me(), 1);

ответ

1

Используйте getIdentifier метод доступа id файла, используя имя:

int rawId = getResources().getIdentifier("raw/"+fields[count].getName(), 
                null, getPackageName()); 
sound1 = sp.load(this, rawId, 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(); 
      } 

     } 
    } 
Смежные вопросы