Название ресурса Android в виде строки для использования WavFile - PullRequest
0 голосов
/ 27 сентября 2011

Я использую инструменты Wave, загруженные отсюда: http://www.labbookpages.co.uk/audio/javaWavFiles.html

Чтобы начать читать wav-файл в моем каталоге res / raw, я сделал следующее в подклассе, который расширяет мою основную деятельность.

WavFile wavFile = WavFile.openWavFile(new File(context.getResources().openRawResource(R.raw.xsp11_10db).toString()));

Где контекст определен как:

Context context;

Первая строка возвращает исключение NullPointerException, поэтому тип класса WaveFile (wavfile) возвращает значение NULL.Это ставит под сомнение способ определения строки файла:

new File(context.getResources().openRawResource(R.raw.xsp11_10db).toString());

Я знаю, что это грубый способ получения wavfile ресурса "xsp11_10db", но я не знаю других методов доступа к файлу.Я пытался использовать URI, но каталог не был найден.

Кто-нибудь знает, как лучше прочитать волновой файл из ресурса, или что вызывает мое исключение нулевого указателя.

Буду признателен за любую помощь, спасибо в продвинутом.

1 Ответ

1 голос
/ 27 сентября 2011

Похоже, что Wav API, который вы используете, не поддерживает InputStream и принимает только Файл в качестве входных данных. Это понятно, потому что, скорее всего, они используют RandomAccessFile для реализации.

Вы, вероятно, думали, что .openRawResource(...).toString() даст вам имя файла, но это не так. Он просто вызовет .toString() на InputStream, возвращенном с openRawResource(...). Что не то, что вы хотите.

Решение - открыть InputStream с помощью openRawResource() и скопировать данные в новый файл на SD-карте самостоятельно. А затем используйте этот файл для используемого вами Wav API.

...