2

ゲームを開発していて、いくつかのサウンドをロードしたいときに、「サウンドプールがサンプルをロードできません (null)」というエラーが発生しました (logcat に表示され、例外はスローされません)。

私はそれをグーグルで検索しましたが、何も見つかりません。

ご意見をお聞かせください。ご清聴ありがとうございました。

これは私のコードです:

        SoundPool soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
        ObjSound = soundPool.load(context, R.raw.objs, 1);
4

2 に答える 2

1

したがって、問題の原因は次のとおりであり、順序に従って破棄する必要があります。

  1. ファイルがありません。
  2. ファイルはそこにありますが、何らかの理由で読み取ることができません。
  3. ファイルはそこにあり、読み取り可能ですが、破損しているか、オーディオ ファイルではありません。
  4. ファイルはそこにあり、読み取り可能で、破損していないオーディオ ファイルですが、SoundPool はそれを嫌います。
  5. 高周波のオーディオは時々悪くなります。頻度の低いものを試してください
于 2016-10-19T04:16:12.960 に答える
0

この問題は、初期化とメモリへの読み込みが不適切だったことが原因でした。私はすべてのオブジェクトに対してそのコードを実行しました (9 つの同じサウンドを持つ 5 つのオブジェクトがあるため、soundPool.load は 45 回繰り返されました!) ただし、これらのサウンドはサイズが大きくなく、メモリの問題は発生しません。

それでも問題の原因はわかりません。

しかし、最後に、soundPool と ObjSound のすべてをstaticに定義し、ゲームの開始時に一度だけ init してロードし、プロジェクト 全体で使用することで、この問題を修正します。

于 2016-10-19T10:40:44.507 に答える