Пул звуков — не загружается файл

#android

#Android

Вопрос:

Я пытаюсь добавить звук в свой пул звуков

Я застрял на этом уже более недели, пробовал различные методы загрузки через URL и т. Д., Но ничего не работает. Любая помощь будет высоко оценена.

Я получаю сообщение об ошибке: android.content.res.Resources$NotFoundException: файл res / raw / claps.wav из идентификатора извлекаемого ресурса.

Я знаю, что файл находится в apk, потому что я разархивировал apk, чтобы найти его в /res/raw/claps.wav.

 SoundPool mySoundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
        int myAudioFile = context.getResourceId("raw.claps");
        try{
            mySoundPool.load(context.getActivity(),myAudioFile,1);
        } catch (Exception e){
            message = String.valueOf(e);
        }
  

Спасибо!

Ответ №1:

Попробуйте это:

     SoundPool mySoundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
    int myAudioFile = getResId("claps", R.raw.class);
    try{
        mySoundPool.load(context.getActivity(),myAudioFile,1);
    } catch (Exception e){
        message = String.valueOf(e);
    }

public static int getResId(String variableName, Class<?> c) {
    Field field = null;
    int resId = 0;
    try {
        field = c.getField(variableName);
        try {
            resId = field.getInt(null);
        } catch (Exception e) {
            e.printStackTrace();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return resId;
}
  

Комментарии:

1. Это должно сработать, убедитесь, что параметры getResId() указаны правильно.

2. Хорошо, claps — это имя моего звукового файла, и мне нужно изменить R.raw.class к чему-нибудь конкретному? Спасибо за вашу помощь, кстати

3. Это должно быть хорошо, не могли бы вы дважды проверить, есть ли claps в R.class и это под сырым. или, возможно, он находится в другом классе (внутри R)? Вы можете найти R.class файл в папке gen.

4. Да, он находится в необработанном общедоступном статическом конечном классе raw { public static final int claps= 0x7f040000;

5. Извините, я понятия не имею, в чем может быть проблема, getResId() должен вернуть значение int. единственное, что вы могли бы попробовать, это переименовать claps. очистите проект и запустите снова.

Ответ №2:

У меня была похожая проблема; половина моих звуков загружалась, а половина вызывала исключение android.content.res.Resources $NotFoundException. Причина заключалась в том, что один из моих файлов ресурсов в eclipse не синхронизирован с файловой системой. Когда я обновил файл, с этого момента все звуки загружались.