In meinem Projekt versuche ich einen Media Player zu erstellen, der einen Shoutcast Stream abspielt. Alles schien gut zu funktionieren, bis ich die Zurück-Taste auf meinem Gerät drückte, was meiner Meinung nach die Aktivität stoppt und dazu führt, dass das Gerät die Aktivität neu erstellt, wenn es erneut gestartet wird. Das Problem ist, wenn die Aktivität neu erstellt wird, verliere ich die Kontrolle über den Mediaplayer und ein neuer Mediaplayer wird erstellt.Ich verliere die Kontrolle über den Mediaplayer, wenn die Aktivität neu erstellt wird
Ich muss in der Lage sein, die Kontrolle des Mediaplayers zu diesem Zeitpunkt zurück zu haben. Wie ist es möglich?
Dieser Teil des Codes gehört
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button);
if (mediaPlayer == null){
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(getString(R.string.yayin));
} catch (Exception e) {
e.printStackTrace();
}
mediaPlayer.prepareAsync();
}
if(!isPlaying){
btn.setBackgroundResource(R.drawable.oynat);
}
else{
btn.setBackgroundResource(R.drawable.durdur);
}
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!isPlaying){
playOnReady();
isPlaying = true;
btn.setBackgroundResource(R.drawable.durdur);
}
else{
mediaPlayer.reset();
isPlaying = false;
btn.setBackgroundResource(R.drawable.oynat);
}
}
});
Dieser Teil des Codes onCreate gehört zur Funktion playOnReady()
private void playOnReady(){
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
}
Verwenden Sie eine einzelne Instanz von MediaPlayer wie folgt. http://stackoverflow.com/questions/14135459/create-only-one-object-for-a-class-and-reuse-same- object. So haben Sie überall in der App die gleiche Instanz. –
Ich habe das Problem mit einem Service gelöst! Danke trotzdem! –