SoundPoolの使用中にパフォーマンスの問題が発生しています。サウンドを再生するたびに、フレームレートが低下します。私はいくつかのログを追加し、私はlogcatで "再生"機能が8msかかることがあることがわかります。ゲームでSoundPoolを正しく使うには?
私は* .OGGファイルを使用していますし、SoundPoolの初期化は、アプリの起動時に行われます。
:サウンドを再生するにはmAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
mSoundPool = new SoundPool(size, AudioManager.STREAM_MUSIC, 0);
mSoundPoolMap = new HashMap<Integer, Integer>();
mSoundPoolMap.put(index, mSoundPool.load(context, R.raw.shot, 1));
、私は(ゲームループの内側)に次のコードを使用します
mSoundPool.play(id, streamVolume, streamVolume, 1, loop, 1f);
私の質問は以下のとおりです。
- 私はゲームループの外に、別のスレッドの「遊び」と呼ぶべきでしょうか?
- サービスを通じて「再生」する必要がありますか?
- 何か間違っていますか?
ありがとう!
UPDATE:私はちょうど別のスレッドでサウンドを再生し、サービスを介して音を再生するテストしますが、タイムラグがまだ存在する
。
は、それから私は、次のテストをしました: * 1000ミリ秒間隔で音を再生する - >ラグは常に200ミリ秒間隔で音を再生* を起こる - >ラグは決して起こりませんどうということは可能ですか?!? !? これらのテストの後、何も再生されていないとき、SoundPoolがリセットされていて、再生を再開すると、初期化に時間がかかるようです...非常に奇妙です!
奇妙ですが、これはうまくいきます。ありがとう! –
これはどのようにバッテリ寿命に影響しますか? – Phil
特定の周波数で音を鳴らすときに同様の遅れの問題があります。しかし、私は解決策を得られません。それがミュートされている場合、なぜあなたはプレイする必要がありますか?他の音も聞こえませんでした。 –