これは非常に古い質問ですが、しかし、同じ問題を持つ他の人々は、おそらくこの時に来るので、これは私の検索結果に最初に思い付きました最終的にページ。
他の人の言われたこととは違って、実際には、たくさんのメモリを使わずに小さな音でMediaPlayerを使うことができます。サウンドボードのアプリからちょっとした変更を加えて、私が何を得ているかを見せてくれるでしょう。私はそれを設定する方法と
private MediaPlayer mp;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
mp = new MediaPlayer();
}
private void playSound(int soundID){
mp.reset();
AssetFileDescriptor sound = getResources().openRawResourceFd(soundID);
try {
mp.setDataSource(sound.getFileDescriptor(),sound.getStartOffset(),sound.getLength());
mp.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mp.start();
}
、あなたはあまりにも多くのスペースを使用しないように、あなたがサウンドを再生毎回を再利用MediaPlayerのオブジェクトの上に作成します。
.release()は、オブジェクトを破棄してもMediaPlayerオブジェクトを保持したい場合にのみ使用されるため、.release()の代わりに.reset()を呼び出します。
新しいオブジェクトをメディアプレーヤのアドレスに設定するのではなく、メディアプレーヤーが再生する新しいサウンドファイルを設定するためにassetfiledescriptorを使用します。これは、メソッド内で新しいオブジェクトを作成して、説明したのと同じエラーが発生します。
これはMediaPlayerを使用する多くの方法のうちの1つに過ぎませんが、小さなサウンドアプリケーションにしか使用しない場合は、私が個人的に考えると最も効率的です。唯一の問題は、あなたが達成できるものでは比較的制限されていることですが、小さなサウンドアプリケーションに実際に使用している場合はそれほど問題にならないはずです。
完了したら、自動リリースプレーヤーのために完全に動作します、ありがとう、多くのおかげで – Pelanes
それは魅力のように動作します。 –