質問

私は、ユーザーが特定のオブジェクトに触れるたびに小さなビープ音を再生する必要があるAndroidのゲームを作成しています。

これを行うには、メディアプレーヤーを作成するこの簡単なコードがあります。ビープ音は小さいです .ogg 〜1.5秒の長さのファイル。

MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.beep);
mp.setVolume(0.5f, 0.5f);

そして、このように使用します

mp.start();

私が抱えている問題は、私のゲームがAndroidキャンバスを使用していることと、キャンバスに描くスレッドも呼び出すことです。 mp.start(). 。音を演奏するにはかなりの時間がかかることを発見しました。時には1ms、時には15ms。 Androidキャンバスはとにかくかなり遅いため、これは私のゲームを少し著しく遅らせるようになっているようです。

私はログを見てきましたが、遅延を引き起こすゴミ収集があるようには見えません。誰かが私にこの遅延を減らすためにいくつかのアドバイスを与えることができるかどうか疑問に思っています

編集 - 私はそれを発見したばかりです MediaPlayer より長いサウンドファイル用に設計されています SoundPool より短いオーディオファイルに適しています。ただし、ファイルをにロードします mediaPlayer 一度だけなので、どうやって違いを生むべきかわかりません。ただし、テストします

役に立ちましたか?

解決

私の英語でごめんなさい

mediaplayerの代わりにsoundpoolを使用する原因メディアプラヤーは、各コールまたは通話方法の後にメモリを解放する必要があります mp.release() プレーヤーの各呼び出しの後

Soundpoolチュートリアルはこちら

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top