0

ほぼ完成したゲームを作成しましたが、まだ 1 つの問題があります。ボタンを押すと、サウンドを再生したいので、次のコードでこれを行いました。

                    MediaPlayer planeSound = MediaPlayer.create(ObjectCanvas.getDrawContext(), R.raw.plane);
                planeSound.start();

それは完全に機能しますが、唯一の問題は、何度も押すと、MediaPlayer がエラー (-19,0) を返すことです。検索しましたが、これに対する解決策が見つかりません。エラーが発生した場合、アクティビティが再作成されるまで MediaPlayer はサウンドを再生しません。ゲームは FC を取得しませんが、エラー (-19,0) のみを取得します。

修正方法がわかりません。誰かが提案や説明をしてくれることを願っています。

4

1 に答える 1

0

サウンド プールを利用するか、メディア プレーヤーの 1 つのインスタンスを再利用するか、使い終わったら各インスタンスを解放します。

MediaPlayer を使い終わったら、release() を呼び出してリソースを解放する必要があります。リリースされていない場合、MediaPlayer インスタンスが多すぎると例外が発生します。

MediaPlayer オブジェクトが使用されなくなったら、すぐに release() を呼び出して、MediaPlayer オブジェクトに関連付けられた内部プレーヤー エンジンによって使用されるリソースをすぐに解放できるようにすることもお勧めします。リソースには、ハードウェア アクセラレーション コンポーネントなどのシングルトン リソースが含まれる場合があり、release() の呼び出しに失敗すると、MediaPlayer オブジェクトの後続のインスタンスがソフトウェア実装にフォールバックするか、完全に失敗する可能性があります。MediaPlayer オブジェクトが End 状態になると、それは使用できなくなり、他の状態に戻す方法はありません。

ドキュメントを参照してください: http://developer.android.com/reference/android/media/MediaPlayer.html

于 2013-05-12T22:28:10.940 に答える