Creación de una serie de aplicaciones de podcasts: 3. Exoplayer
Inicio a escribir aquí … ¿Qué es una aplicación de podcast sin el paquete de un reproductor multimedia? Por otra parte, si hablamos de Android, solo hay un reproductor multimedia que vale la pena considerar, el ExoPlayer hecho por los ingenieros de Google. Veamos cómo conectar todas las partes que hemos construido hasta ahora y cómo conectar en realidad ExoPlayer con las vistas en la aplicación.
ExoPlayer
Exoplayer es muy potente y modular, solo usaremos una pequeña parte de las características que en realidad proporciona ExoPlayer. ExoPlayer tiene varios componentes centrales, estos componentes deben funcionar juntos para reproducir cualquier cosa y no hay un orden específico:
- Instancia de ExoPlayer
- Fuente de medios
Necesitamos crear una instancia de ExoPlayer y guardarla en la memoria porque es muy costosa de crear. Reutilizaremos una sola instancia en toda la aplicación. Para reproducir cualquier cosa, necesitamos crear un MediaSource. Estas fuentes son básicamente diferentes tipos de transmisiones que ExoPlayer debe deletrear para obtener datos de audio y reproducirlos. Hay otras partes importantes del ecosistema ExoPlayer, pero para los principiantes, necesitamos estas dos cosas.
Instancia de ExoPlayer
Este es el corazón de ExoPlayer y el objeto en sí. Simplemente podemos crear una instancia y aprobar o abortar un montón de opciones de configuración. Mantengamos las cosas simples y creemos un ejemplo fundamental:
val player = SimpleExoPlayer.Builder(context).build()
Por lo tanto, el nombre de esta categoría es evidente, y debemos ser conscientes del próximo hecho: Según la fuente efectivo del contenido proporcionado, existen dos fuentes de medios diferentes:
- DashMedia Fuente de DASH.
- SsMediaSource se utiliza para SmoothStreaming.
- HlsMediaSource para HLS.
- ProgressiveMediaSource para archivos multimedia normales.
Creemos una fuente de medios simple:
val mediaSource =
ProgressiveMediaSource.Factory(dataSourceFactory).
createMediaSource(Uri.parse(it.mp3Url))
exoPlayer.prepare(mediaSources)
Eso es. ¡Podemos reproducir un episodio ahora!
Entregado que estamos construyendo un reproductor de podcasts, es seguro responsabilizarse que no reproduciremos un episodio a la vez, por lo que necesitamos una forma de decirle a ExoPlayer que reproduzca el próximo sujeto cuando termine de reproducirse un sujeto. Para resolver este problema, ExoPlayer tiene el concepto de conectar fuentes de medios. Podemos agrupar un montón de fuentes de medios, no es necesario que tengan el mismo tipo, y luego adjuntar la fuente de medios a la instancia de ExoPlayer.
val mediaSources = (listOf(currentEpisode) + _playlist).map
ProgressiveMediaSource.Factory(dataSourceFactory).
createMediaSource(Uri.parse(it.mp3Url))
.toTypedArray()
exoPlayer.prepare(ConcatenatingMediaSource(*mediaSources)
Por lo tanto, podemos ocurrir una fuente de medios en tándem, no solo ocurrir una fuente de medios, y ExoPlayer reproducirá automáticamente todos los episodios en la cinta de reproducción.
Explore el código completo en este enlace, en el próximo artículo, discutiremos la escazes de ejecutar nuestro ExoPlayer y ayudar el primer plano en segundo plano, para que Android no vallado nuestra aplicación para obtener más fortuna. .