2012-09-20 13 views
10

Estoy usando un MediaPlayer en mi Activity.Error de MediaPlayer: pausa llamada en el estado 64

Cuando pulso el botón de retroceso, me sale este error:

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) 

Código

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); 
} 

Si uso mp.pause(), está funcionando bien. ¿Por qué?

+0

Sí: if (! Pf = null) mp.pause(). Aparte de eso super.onPause(); – erdomester

Respuesta

4

Es ilegal pausar un MediaPlayer detenido, y de acuerdo con ese mensaje de error que suena exactamente como lo que está haciendo.

Sugiero cambiar su de modo que no intente detener el MediaPlayer parado.

Tal vez:

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

            
 

En realidad no haga esto, acabo de encontrar esto en los documentos:

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(),

Debe mantener una variable local para comprobar si la había interrumpido MediaPlayer, y luego pruebe si debe o no llamar al pause().

+0

¿Qué sucede si uso .pause en todas partes y no uso .stop() en absoluto? – erdomester

+0

No puedo pensar inmediatamente en ninguna razón por la que no funcionaría, aunque no soy un experto en mediaplayer. – Tim

+1

Lo resolví usando mp.pause() en todas partes (si mp.isplaying()) y no usa mp.stop() en cualquier lugar. – erdomester

6

He venido aquí en busca de respuestas, aunque las respuestas anteriormente eran útiles en otras cosas, que no solucionaron mi problema ...

PERO ... me las arreglé para solucionar el problema:

cambiando mediaPlayer.stop();

a

mediaPlayer.reset();

ayudado Me deshacerse en las error(-38 , 0)

gracias de nuevo por señalar el problema :)

+1

Esto funciona como un encanto. Gracias. – newbieee

+0

gracias. No olvides calificar la respuesta haciendo clic en "Flecha arriba" junto a ella. Me alegro de poder ayudar :) –

11

utilicé el método de pausa y seekTo para reiniciar el reproductor.

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

Después de enfrentarse a un problema en el inicio del reproductor multimedia después de detenerlo, Tengo una excepción y un punto de fusión fue capaz de empezar de nuevo, a continuación, al sustituir mp.stop() con mp.reset() funcionó a la perfección.

1

Incluso he enfrentado el mismo problema con el mismo error.

que utilizan mplayer.pause() en lugar de mplayer.stop()

Cuestiones relacionadas