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(); } }
- Transmisión al MediaPlayer de Android
- MediaPlayer deja de funcionar después de 30 usos?
- Reproducción de audio desde URI Dentro de ListView, pero Seekbar no se está actualizando en el elemento ListView de Android
- Android MediaPlayer Live Streaming detiene después de aproximadamente 1 minuto en Samsung Galaxy S4 y S5
- SeekBar y reproductor multimedia en android
- Android: reproducir sonido en el botón de clic - Excepción de puntero nulo
- ¿Cómo puede reproducir medios de ftpserver sin descargarlo en android?
- MediaPlayer salta hacia adelante unos 6 segundos en rotación
- Cómo jugar radio en línea url de streaming en Android. Cómo jugar .pls radio streaming url en android
- No se puede crear un reproductor multimedia (mediante url)
- (Android MediaPlayer) ¿Cómo se supone que llamar a setAudioStreamType () si MediaPlayer.create () implícitamente llamadas prepare ()?
- Cómo reproducir el archivo de sonido cuando se dispara GCMIntentService onMessage?
- ¿El video de Android VideoView almacenó videos en streaming?
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.
- Glide – carga un solo fotograma del video en un momento específico?
- No se encontró el elemento de fuente de ejecución de Android Runtime