Media Playerクラスを使用してサウンドを再生するアプリケーションを作成しています。Android:Media Playerへの参照を維持するには?
メニューに戻ってアプリを再度開くと、音楽はまだ再生されていますが、別のトラックを再生すると、新しいメディアプレーヤーが作成されたようです。シリアル化されていないため、参照インスタンスを保存しておくことはできません。
リファレンスを保持するために推奨される手法は何ですか?
よろしくお願いいたします。
Media Playerクラスを使用してサウンドを再生するアプリケーションを作成しています。Android:Media Playerへの参照を維持するには?
メニューに戻ってアプリを再度開くと、音楽はまだ再生されていますが、別のトラックを再生すると、新しいメディアプレーヤーが作成されたようです。シリアル化されていないため、参照インスタンスを保存しておくことはできません。
リファレンスを保持するために推奨される手法は何ですか?
よろしくお願いいたします。
私はあなたがサービスの後ろにあなたのMediaPlayerを置く推薦する:wakelock権限のためのマニフェストにこれを追加し
onCreate(){
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "com.pzizz");
}
playSound(){
wl.acquire();
}
onDestroy(){
wl.release();
}
stopSound(){
wl.release();
}
を演奏音を維持するために
onCreate(){
mp=new MediaPlayer();
}
onDestroy(){
mp.release();
wl.release();
}
playSound(){
mp.reset();
mp.setDatasource();
mp.prepare();
mp.start();
}
stopSound(){
mp.reset();
}
。私は、これを行う方法とそのサービスにバインドしてメディアを再生する方法の本当に良い例が、オープンソースであるNPRラジオアプリであることを発見しました。あなたはソースを見つけることができますhere
Activityのライフサイクル図を見て、古いものを公開せずに複数のMediaPlayerオブジェクトを作成していないことを確認してください。 http://developer.android.com/reference/android/app/Activity.html
MediaPlayer.create()を使用していますか?これは新しいMediaPlayerオブジェクトを割り当てますが、古いものには何もしません。 create()をもう一度呼び出す前にrelease()を呼び出します。
playSound(){
mp.release();
mp = MediaPlayer.create();
mp.start();
}
手動で管理している場合は、これらの場所に通話を試みてください。
<uses-permission android:name="android.permission.WAKE_LOCK" />
私は、活動がアクティブでないときにサウンドを再生し続けたい場合、私はサービスを実装する必要がありますか? –
wakelocksを使用するようにコードを更新しました。これはサウンドの再生を維持します。 –