0

我正在使用从这里下载的 Wave 工具:http ://www.labbookpages.co.uk/audio/javaWavFiles.html

为了开始读取我的 res/raw 目录中的 wav 文件,我在扩展我的主要活动的子类中完成了以下操作。

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,但找不到该目录。

有谁知道从资源中读取波形文件的更好方法,或者是什么导致我的空指针异常。

任何帮助将不胜感激,谢谢您。

4

1 回答 1

1

看起来您使用的 Wav API 不支持InputStream,并且只接受 File 作为输入。这是可以理解的,因为它们很可能RandomAccessFile用于实现。

您可能认为这.openRawResource(...).toString()会给您文件名,但事实并非如此。它只会调用.toString()InputStream. openRawResource(...)这不是你想要的。

解决方案是自己打开InputStream使用openRawResource()并将数据复制到 SD 卡上的新文件。然后将该文件用于您正在使用的 Wav API。

于 2011-09-27T06:34:52.110 回答