Platzi
Platzi

¡Invierte en ti y celebremos! Adquiere un plan Expert o Expert+ a precio especial.

Antes:$349
$259
Currency
Antes:$349
Ahorras:$90
COMIENZA AHORA
29

Cómo funcionan las descargas en Android.

7155Puntos

hace un año

Curso de Patrones de Diseño en Android
Curso de Patrones de Diseño en Android

Curso de Patrones de Diseño en Android

Implementa las mejores prácticas para crear aplicaciones escalables, profesionales y altamente testeables en Android. Aprende a usar patrones diseño y patrones de arquitectura en Android. ¡Mejora tus aplicaciones con el Curso de Patrones de Diseño en Android de Platzi!

En Platzi nos preocupamos por los estudiantes, por lo que queríamos ofrecer una mejor experiencia descargando los cursos o clases. Esto condujo a estos tres casos de uso de descarga principales:

  1. Mejores videos ininterrumpidos en Internet.
  2. Reducción del uso de datos móviles.
  3. Ver los materiales sin conexión.

Desde la perspectiva del producto, teníamos muchas preguntas iniciales sobre cómo debería comportarse la función en la app nativa: ¿Cuánta configuración deberíamos ofrecer a los usuarios? ¿Qué estados mostrarle al usuario?

Elegimos una línea de tiempo agresiva para la función, ya que queríamos ofrecer la experiencia a nuestros estudiantes lo antes posible. Nuestro objetivo era crear una gran experiencia con la cantidad justa de alcance para nuestros estudiantes.

¿Cómo funcionan las descargas?

  • Manifiesto de contenido (URL para archivos de audio y video)
  • Tipo de archivo(audio y video con el tipo de formato)
  • Estados de las descargas y red.
  • Metadatos e ilustraciones de nivel de título (en caché en disco)

Mecanismo de descargas

Screenshot_2020-05-15-13-29-50 (1).png

Inicialmente vimos el DownloadManager de Android como el mecanismo para transferir archivos y datos al cliente. Este componente era fácil de usar y manejaba algunas de las funciones que queríamos. Sin embargo, en última instancia, no nos permitió crear la experiencia de usuario que necesitábamos.

Creamos una clase DownloadManager en Platzi por los siguientes motivos:

  • Notificaciones de descarga: muestra el progreso de la descarga en una notificación como un agregado de todos los archivos relacionados con un ‘video descargable’.
  • Pausar / Reanudar descargas: proporciona a los usuarios una forma de detener temporalmente la descarga.
  • Manejo de red: criterios de selección de red dinámica en caso de que el usuario cambie esta preferencia durante una descarga (solo WiFi frente a cualquier conexión).
  • Análisis: comprender los detalles del comportamiento de todos los usuarios y las razones por las que se detuvo una descarga.

Diagrama de funcionamiento de descargas.

Imagen tomada de ExoPlayer.com
  • DownloadService: Envuelve a DownloadManager, reenvía comandos a él. El servicio permite DownloadManager seguir funcionando incluso cuando la aplicación está en segundo plano.
  • DownloadManager: Gestiona múltiples descargas, cargando (y almacenando) sus estados desde (hasta) a DownloadIndex, iniciando y deteniendo descargas en función de requisitos como la conectividad de red, etc. Para descargar el contenido, el administrador generalmente leerá los datos que se descargan a HttpDataSource y los escribirá en a Cache.
  • DownloadIndex: Persiste los estados de las descargas.

Reanudar las descargas cuando se restablezca la conectividad

Encontramos dos problemas principales con JobScheduler. El primero fue cómo proporcionar las actualizaciones que necesitábamos de JobScheduler en dispositivos pre-Lollipop. Para estos dispositivos, escribimos una capa de abstracción sobre la parte superior del componente de programación de trabajos, y en los dispositivos anteriores a Lollipop usamos el receptor de conectividad de red del sistema y el servicio AlarmManager para programar tareas en segundo plano manualmente en horarios establecidos.

El segundo problema principal que encontramos con JobScheduler fue su problema de bloqueo en ciertas circunstancias. Si bien no pudimos solucionar directamente este bloqueo, pudimos determinar una solución alternativa por la cual evitamos llamar a JobService.onJobFinished () por completo en ciertos casos. El trabajo finalmente se agota por sí solo, por lo que el costo de operar de esta manera parecía mejor que permitir que la aplicación se bloquee.

Almacenamiento Descargas

La principal sugerencia que recibimos para Android fue sobre la falta de soporte de la tarjeta SD, que abordamos rápidamente. Ahora hemos establecido una experiencia de referencia para las descargas, Entre ellas están:

  • Podemos seleccionar el tipo de almacenamiento que deseamos en la sección de configuración de la app.
  • Automáticamente detecta cuando un almacenamiento externo es agregado estando la aplicación activa o inactiva.
Screen Shot 2020-05-15 at 3.02.29 PM.png

Reproducción de contenido

Existen varios métodos para reproducir videos en Android, que varían en su complejidad y nivel de control:

Además, la reproducción de contenido fuera de línea (sin transmisión) no es compatible con el reproductor DASH del sistema Android. No era la única opción, pero sentimos que las descargas eran una buena oportunidad para probar el nuevo Android ExoPlayer de Google . Las características que nos gustaron fueron:

  • Soporte para DASH, HLS, Smooth Streaming y fuentes locales.
  • Diseño extremadamente modular, extensible y personalizable.
  • Usado por los proveedores de Google / OEM / SoC como parte de la certificación de Android (va a soporte de dispositivos y fragmentación)
  • Gran documentación y tutoriales.

Conclusión

El equipo mobile se alineó a lanzar esta función bajo una ambiciosa línea de tiempo. Nos produjo satisfacción brindarles alegría a nuestros estudiantes y darles la posibilidad de llevar sus cursos favoritos con ellos mientras viajan o están sin Internet.

Si te gusta ver más blogs de este estilo o tienes dudas cuéntanos en los comentarios. NUNCA PARES DE APRENDER

Curso de Patrones de Diseño en Android
Curso de Patrones de Diseño en Android

Curso de Patrones de Diseño en Android

Implementa las mejores prácticas para crear aplicaciones escalables, profesionales y altamente testeables en Android. Aprende a usar patrones diseño y patrones de arquitectura en Android. ¡Mejora tus aplicaciones con el Curso de Patrones de Diseño en Android de Platzi!
Paulo
Paulo
DevPaulo

7155Puntos

hace un año

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
3
36337Puntos

Excelentes funcionalidades. Mil gracias.

2
36337Puntos

Gracias @teamplatzi por pensar en nosotros y ser leales a su misión “Nunca parar de aprender” para ofrecernos mejores herramientas cada día.
Me han servido mucho sus mejoras y por esto reto a toda la comunidad Platzi para que probemos las nuevas funcionalidades y califiquemos la APP para que mejoremos su puntaje en la Play Store:
Platzi app.png.

1
17036Puntos

Genial, por ahora estamos probando

1
9649Puntos

Lo gracioso es que yo había escrito al equipo feedback con muchos puntos que cambiaron y al otro día actualizó. Pareció magia 😃

1
40621Puntos

no me deja descargar los podcast 😦

1
102165Puntos

Que bueno que la app sigue mejorando, no la he utilizado, pero voy a probarla y justamente con el taller de design thinking

1
2878Puntos

Increíble que el mismo Team Platzi se dé la tarea de platicarnos cómo es su experiencia en el desarrollo de los productos que utilizamos los estudiantes. Sirve de mucho para una perspectiva fuera de nuestros equipos de trabajo. Ojalá puedan lanzar pronto una versión nativa para iOS. Lo esperaré. Ojalá también se puedan gestionar las suscripciones desde las apps móviles y no sólo desde el navegador.
Gracias por el post, @DevPaulo! 😃

1
12986Puntos

A probar las nuevas funcionalidades

1
31239Puntos

¡buena tigres!

1
398Puntos

Bello espíritu de compartir! ❤️

1
25608Puntos

Excelente, muchas gracias por todo el trabajo que hacen para que la app este mejor.