Android: mediaplayer se fue con eventos no controlados
Necesito obtener la duración de un archivo de audio para una serie de anuncios de voz que deben reproducirse desde una aplicación. He añadido los archivos de audio como recursos y que juegan muy bien. El código de ejemplo siguiente realmente funciona perfecto para su propósito previsto: devuelve la duración de los archivos de audio.
Aquí está el código:
- Android Streaming Video - Necesita la relación de aspecto
- Android: ¿Cómo configurar el volumen de MediaPlayer mediante programación?
- Reproductor de medios de Android devuelve IllegalStateException
- Reproducir un archivo m3u8 local en android mostrando setDataSourceFD failed .: status = 0x80000000
- La reproducción de una canción tras otra provoca un error en MP3Extractor
float getDurationOfAudioResource(LocationEnum loc, Context context){ float duration = 0; try { MediaPlayer mp; mp = MediaPlayer.create(context, getAudioResource(loc)); duration = mp.getDuration(); mp.release(); mp = null; } catch (IllegalStateException e) {e.printStackTrace(); logError(25, "TestDescItem:Fault::Could not open mediaplayer object with audio resource.");} return duration; }
Aquí está lo extraño. Este código se llama en una actividad principal que prepara el conjunto de instrucciones de audio para una prueba dada. No hay errores dentro de esta actividad. Pero tan pronto como se llama la segunda actividad, obtengo una larga cadena de errores en logcat.
03-07 13:23:43.820: I/ActionLogger(21435): GenTest_Info_Test #0 successfully created. 03-07 13:23:43.830: I/ActionLogger(21435): GenTest_Info_Test #1 successfully created. 03-07 13:23:43.840: I/ActionLogger(21435): GenTest_Info_Test #2 successfully created. 03-07 13:23:43.850: I/ActionLogger(21435): GenTest_Info_Test #3 successfully created. <snip> 03-07 13:23:43.910: I/ActionLogger(21435): GenTest_Info_all tests successfully created. 03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events 03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events 03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events 03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events 03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events 03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events 03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events 03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events 03-07 13:23:47.270: W/MediaPlayer(21435): mediaplayer went away with unhandled events <snip>
He avanzado solo hasta el final de la actividad principal (sin errores) y desde la primera línea de la segunda actividad. Los errores definitivamente se lanzan entre las actividades.
Además, si comento las ocho líneas del bloque try (volviendo sólo a cero), se evitan los errores logcat. Cuando restauro las ocho líneas los errores vuelven. He cavado a través de la documentación y buscado en la web, y creo que estoy construyendo correctamente, liberando y destruyendo el objeto mediaplayer, así que no puedo ver por qué estoy recibiendo un error. Dicho esto, debo estar haciendo algo mal. ¿Algunas ideas?
Gracias,
Kevin
- ¿Cómo permitir a los usuarios ver y reproducir canciones en Android a las que ya tienen acceso (por ejemplo, a través de Google Play)?
- Android: función de setVolume de MediaPlayer
- Android MediaPlayer no reproducir archivos mp3
- ¿Cómo continúan los reproductores de medios de Android la reproducción de canciones cuando se cierra la aplicación?
- Cómo reproducir la transmisión de audio / vídeo desde una url?
- ¿Cómo puedo configurar el permiso de archivo a MODE_WORLD_READABLE?
- Error de MediaPlayer de Android al usar las llamadas de reinicio () y de liberación ()
- Android: ¿Cómo detener los medios (mp3) en el juego cuando vienen milisegundos específicos?
Sólo mp.reset();
poner mp.reset();
Antes de mp.release();
.
Los cinco santos:
if(mp!=null) { if(mp.isPlaying()) mp.stop(); mp.reset(); mp.release(); mp=null; }
- Barra de herramientas android popupTheme vs theme
- Eliminación de compilaciones de actualización de Android Studio (o Intellij) ignoradas