4

プログラムで短い音 (/res/raw 内) を再生する関数を作成しようとしています。これは、プログラム全体で効果的にランダムな時間に呼び出されます。これまでのところ、私はこの機能を持っています:

public void playSound() {
    MediaPlayer mp = new MediaPlayer();
    mp = MediaPlayer.create(this, R.raw.ShortBeep);
    mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
    mp.setLooping(false);
    mp.start();
}

しばらくは正常に動作しますが、ちょうど 30 回の再生で音が出なくなります。

4

2 に答える 2

8

ドキュメントによると

... release() の呼び出しに失敗すると、MediaPlayer オブジェクトの後続のインスタンスがソフトウェア実装にフォールバックするか、完全に失敗する可能性があります。

完了したらmp.release()、リソースを解放できるように呼び出します。制限が何であるかはわかりませんが、それは多くの要因に依存していると確信しています。MediaPlayerいずれにしても、特に複数回使用する場合は、オブジェクトでこの関数を呼び出す必要があります。

于 2013-09-12T20:19:02.837 に答える