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 context;

1行目は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で、ファイルのみを入力として受け入れます。RandomAccessFileほとんどの場合、実装に使用されるため、これは理解できます。

これでファイル名がわかると思ったかもしれ.openRawResource(...).toString()ませんが、そうではありません。.toString()からInputStream返されたを呼び出すだけopenRawResource(...)です。これはあなたが望むものではありません。

InputStream解決策は、自分で SD カードの新しいファイルを使用してデータを開きopenRawResource()、コピーすることです。そして、そのファイルを使用している Wav API に使用します。

于 2011-09-27T06:34:52.110 に答える