Cómo detener reproductor multimedia correctamente, android

He creado una lista de canciones al hacer clic en la canción que soy capaz de reproducir la canción utilizando MedaiPlayer. Mientras que una canción se está reproduciendo si el usuario hace clic en otra canción, entonces estoy deteniendo el reproductor de medios e iniciar el reproductor de nuevo. Pero estoy recibiendo ilegalstateexception en reset (). Aquí está el código donde estoy recibiendo la excepción. ¿Cómo detener un jugador correctamente? También por qué estoy recibiendo esta excepción. ¿Cómo evitarlo?

public void stopPlayer() { try { if (player != null) { // Log.e("Trying to Stop "," Player "); player.stop(); player.release(); player.reset();// causes IllegalstateException player = null; } } catch (Exception e) { player = null; playerStatus = false; e.printStackTrace(); } } 

prueba esto :

 player.reset(); player.release(); 

Y también tener una mirada en el diagrama del estado del jugador de medios.

Si desea reproducir de nuevo, use player.reset() , player.release() significa que libera el objeto del reproductor para que tenga que reinicializar el reproductor. Primero usas reset() y luego release() . release() se utiliza cuando el objeto de reproductor ya no funciona. Cuando su actividad destruye el método release() para ser usado para la buena práctica.

Siempre que quiera detenerlo:

 if(player!=null) { if(player.isPlaying()) player.stop(); player.reset();//It requires again setDataSource for player object. } 

Siempre que su jugador ya no sea necesario:

 if(player!=null) { if(player.isPlaying()) player.stop(); player.reset();//It requires again setDataSource for player object. player.release(); player=null; // fixed typo. } 

Aunque la respuesta aceptada funciona, esta es una mejor manera de lograr la tarea

 private void stopSong() { if(mediaPlayer!=null) { if(mediaPlayer.isPlaying()) { mediaPlayer.reset();// It requires again setDataSource for player object. mediaPlayer.stop();// Stop it mediaPlayer.release();// Release it mediaPlayer = null; // Initialize it to null so it can be used later } } } 

¿Está planeando reutilizar el reproductor de nuevo, o está hecho con el jugador? Si has terminado con el reproductor, llama a release () y no reset (). Si planea reutilizar el reproductor, llame a reset () y no lo libere ().

Reset () restablece el reproductor en su estado no inicializado. Release () libera todos los recursos asociados con el reproductor.

  • Reproducción de archivos de audio en registros de Android Error extraño
  • Android MediaPlayer toma mucho tiempo para preparar y almacenar
  • ¿El reproductor de medios de Android suministra id de sesión en los encabezados de peticiones HTTP?
  • Tiempo de espera predeterminado de Android MediaPlayer
  • Java.lang.IllegalStateException en el método MediaPlayer.isplaying ()
  • ¿Cómo hacer que AAC se busque en streaming HTTP usando MediaPlayer para Android?
  • Android WebView HTML5 Video Spawns MediaPlayer que vive para siempre en Samsung S4
  • Transmisión de archivos de audio y almacenamiento en caché
  • Android MediaPlayer leer desde un InputStream
  • Android obtener captura de pantalla de videoview actual
  • Reproducción de un video después de que un video en TextureView de Android tenga problemas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.