2012-09-20 7 views
10

Ich verwende eine MediaPlayer in meinem Activity.MediaPlayer Fehler: Pause aufgerufen Zustand 64

Wenn ich die Zurück-Taste getroffen, ich diesen Fehler:

09-20 19:44:16.540: E/MediaPlayer(1822): pause called in state 64 
09-20 19:44:16.540: E/MediaPlayer(1822): error (-38, 0) 

-Code

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     if (mp!= null && mp.isPlaying()) { 
      mp.stop(); 
     } 

     Intent intentstart = new Intent(X.this, Y.class); 
     intentstart.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intentstart); 
    } 

    return super.onKeyDown(keyCode, event); 
} 

Wenn ich mp.pause() verwenden, es funktioniert gut. Warum?

+0

Ja: if (! Mp = null) mp.pause(). Abgesehen davon super.onPause(); – erdomester

Antwort

4

Es ist illegal, eine gestoppte MediaPlayer anzuhalten, und entsprechend dieser Fehlermeldung, die genau wie das, was Sie tun, klingt.

Ich schlage vor, dass Sie Ihre so ändern, dass sie nicht versucht, die gestoppte MediaPlayer anzuhalten.

Vielleicht:

            
 
  
              
    if(mp!= null) { 
     if(mp.isPlaying()) mp.pause(); 
    } 

            
 

Eigentlich dies nicht tun, ich habe gerade dies in der Dokumentation:

Note that the transition from the Started state to the Paused state and vice versa happens asynchronously in the player engine. It may take some time before the state is updated in calls to isPlaying(),

Sie eine Variable beibehalten sollten lokal überprüfen, ob Sie bereits gestoppt haben MediaPlayer, und testen Sie dann, ob Sie pause() anrufen sollten oder nicht.

+0

Was passiert, wenn ich .pause überall verwende und nicht .stop() verwende? – erdomester

+0

Ich kann mir keinen Grund vorstellen, warum es nicht funktionieren würde, obwohl ich kein Experte für Mediaplayer bin. – Tim

+1

Ich löste es mit mp.pause() überall (wenn mp.display()) und nirgends mp.stop() verwenden. – erdomester

6

Ich bin hierher gekommen, der Suche nach Antworten, obwohl die Antworten oben nützlich waren in andere Dinge, sie haben nicht mein Problem lösen ...

ABER ... ich es geschafft, das Problem zu beheben:

mediaPlayer.stop();

zu

mediaPlayer.reset(); Wechsel

geholfen hol mir das Problem für den Hinweis auf die error(-38 , 0)

Dank wieder los off :)

+1

Das funktioniert wie ein Zauber. Vielen Dank. – newbieee

+0

danke. Vergessen Sie nicht, die Antwort zu bewerten, indem Sie auf den "Pfeil nach oben" klicken. Ich bin froh, dass ich helfen konnte :) –

11

habe ich Pause und seekto Methode, um die Spieler zu setzen.

player.pause(); 
player.seekTo(0); 
1

Nach einem Problem mit Blick auf den Media-Player nach dem Abstellen in Start, ich erhielt eine Ausnahme und mp war wieder in der Lage zu starten, dann, wenn mp.stop() mit mp.reset() ersetzt es funktionierte perfekt.

1

Auch ich habe das gleiche Problem mit dem gleichen Fehler konfrontiert.

I verwendet mplayer.pause() statt mplayer.stop()