So geben Sie Android MediaPlayer ordnungsgemäß frei
Ich versuche, meiner Android-App eine Schaltfläche hinzuzufügen, über die beim Tippen auf die Schaltfläche eine MP3-Datei abgespielt wird. Ich habe es zum Laufen gebracht, aber es gibt keine Möglichkeit, das mediaPlayer-Objekt freizugeben - daher wird es auch dann wiedergegeben, wenn ich die Aktivität verlasse. Wenn ich das MediaPlayer-Objekt außerhalb meiner react () -Methode initialisiere (was beim Drücken der Schaltfläche aufgerufen wird), wird das Schließen der App beim Öffnen der Aktivität erzwungen. Wenn ich den MediaPlayer jedoch innerhalb der react () -Methode initialisiere, kann ich mplayer.release nicht in der onQuit () -Methode verwenden. Was sehe ich hier nicht?
public void react(View view) {
MediaPlayer mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
mediaPlayer.start();
}
protected void onStop(){
mediaPlayer.release();
mediaPlayer = null;
}
Funktioniert aus offensichtlichen Gründen nicht und
MediaPlayer mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
public void react(View view) {
mediaPlayer.start();
}
protected void onStop(){
mediaPlayer.release();
mediaPlayer = null;
}
Bewirkt das erzwungene Schließen.
Aktualisieren: Hier ist die ganze Java-Klasse.
public class ToBeOrNot extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_to_be_or_not);
}
MediaPlayer mediaPlayer;
public void react(View view) {
mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
mediaPlayer.start();
}
protected void onStop(){
mediaPlayer.release();
mediaPlayer = null;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.activity_to_be_or_not, menu);
// Locate MenuItem with ShareActionProvider
return true;
}
}
Ich denke, was es tut, ist relativ selbsterklärend. Wenn es aufgerufen wird, werden Text und eine Schaltfläche angezeigt, die beim Antippen eine Aufnahme startet. Wenn jemand die Zurück-Taste drückt, sollte er zur vorherigen Aktivität zurückkehren und die Aufnahme stoppen. Danke für die Hilfe!