Introducción al SDK del reproductor para Android de IVS - Amazon IVS

Introducción al SDK del reproductor para Android de IVS

En este documento, se explican los pasos para comenzar a usar el SDK del reproductor para Android de Amazon IVS.

Instalación de la biblioteca

A fin de agregar la biblioteca del reproductor para Android de Amazon IVS a su entorno de desarrollo de Android, agregue la biblioteca al archivo build.gradle del módulo (para la versión más reciente del reproductor de Amazon IVS).

repositories { mavenCentral() } dependencies { implementation 'com.amazonaws:ivs-player:1.43.0' }

Alternativamente, para instalar el SDK de forma manual, descargue la última versión desde esta ubicación:

Uso del SDK con símbolos de depuración

También publicamos una versión del SDK del reproductor para Android que incluye símbolos de depuración. Puede usar esta versión para mejorar la calidad de los informes de depuración (seguimientos de pila) en Firebase Crashlytics si se produce algún fallo en el SDK del reproductor de IVS, es decir, libplayercore.so. Cuando notifica estos bloqueos al equipo del SDK de IVS, los rastreos de pila de mayor calidad facilitan la solución de los problemas.

Para usar esta versión del SDK, reemplace la siguiente línea en sus archivos de compilación de Gradle:

implementation "com.amazonaws:ivs-player:$version@aar"

por esta:

implementation "com.amazonaws:ivs-player:$version:unstripped@aar"

Carga de símbolos en Firebase Crashlytics

Asegúrese de que los archivos de compilación de Gradle estén configurados para Firebase Crashlytics. Siga las instrucciones de Google aquí:

https://firebase.google.com/docs/crashlytics/ndk-reports

Asegúrese de incluir com.google.firebase:firebase-crashlytics-ndk como dependencia.

Al crear la aplicación para su lanzamiento, el complemento de Firebase Crashlytics debería cargar los símbolos automáticamente. Para cargar los símbolos manualmente, ejecute cualquiera de los comandos siguientes:

gradle uploadCrashlyticsSymbolFileRelease
./gradlew uploadCrashlyticsSymbolFileRelease

(No pasará nada si los símbolos se cargan dos veces, automática y manualmente).

Cómo evitar que el archivo .apk de la versión aumente de tamaño

Antes de empaquetar el archivo .apk de la versión, el complemento de Gradle para Android intenta eliminar automáticamente la información de depuración de las bibliotecas compartidas (incluida la biblioteca libplayercore.so del SDK del reproductor de IVS). Sin embargo, a veces esto no sucede. En ese caso, el archivo .apk podría aumentar de tamaño y podría recibir un mensaje de advertencia del complemento de Gradle para Android indicándole que no puede eliminar los símbolos de depuración y que está empaquetando los archivos .so tal como están. Si esto sucede, haga lo siguiente:

  • Instale un NDK de Android. Cualquier versión reciente funcionará.

  • Agregue ndkVersion <your_installed_ndk_version_number> al archivo build.gradle de la aplicación. Haga esto incluso si la propia aplicación no contiene código nativo.

Para obtener más información, consulte este informe de problemas.

Creación del reproductor y configuración del agente de escucha de eventos

La interfaz del reproductor es com.amazonaws.ivs.player.Player. Inicialícelo como se muestra a continuación:

// Create a player instance // <this> refers to the current Android Activity player = Player.Factory.create(this); // Set up to receive playback events and errors player.addListener(this);

Alternativamente, inicialícelo mediante PlayerView:

// Create a player instance // <this> refers to the current Android Activity PlayerView playerView = new PlayerView(this); Player player = playerView.getPlayer(); // Set up to receive playback events and errors player.addListener(this);

Nota: Los métodos de devolución de llamada del agente de escucha se ejecutan en el subproceso principal de la aplicación de Android.

Configurar la vista superficial del video

Si no se utiliza la PlayerView agregue una SurfaceView a su diseño de interfaz de usuario de Android para mostrar un video. Esta Surface debe estar disponible antes de poder reproducir transmisiones de video. Puede acceder a la superficie subyacente a través de la interfaz de SurfaceHolder, que se recupera al llamar a getHolder(). (Consulte SurfaceView en la referencia para desarrolladores de Android). Utilice la SurfaceHolder.Callback para recibir eventos sobre cambios de superficie (consulte SurfaceHolder.Callback).

surfaceView = (SurfaceView) findViewById(R.id.surfaceView); surfaceView.getHolder().addCallback(this); @Override public void surfaceCreated(SurfaceHolder holder) { this.surface = holder.getSurface(); if (player != null) { player.setSurface(this.surface); } } @Override public void surfaceDestroyed(SurfaceHolder holder) { this.surface = null; if (player != null) { player.setSurface(null); } }

Reproducción de una transmisión

Debido a que la transmisión se carga de forma asíncrona, el reproductor debe estar en el estado READY antes de que su aplicación pueda llamar al método play para comenzar la reproducción. Utilice la interfaz Player.Listener para determinar cuándo el reproductor está en el estado correcto.

Consulte el siguiente código de muestra:

player.load(Uri.parse(url)); @Override public void onStateChanged(Player.State state) { switch (state) { case BUFFERING: // player is buffering break; case READY: player.play(); break; case IDLE: break; case PLAYING: // playback started break; } }

Liberar el reproductor

Se debe llamar al método player.release() cuando el reproductor ya no se usa, para liberar los recursos que utiliza la biblioteca. Normalmente esto se realiza en la devolución de llamada onDestroy de la actividad o fragmento que contiene el reproductor.

@Override protected void onDestroy() { super.onDestroy(); player.removeListener(this); player.release(); }

Después de que se llama al método player.release() el reproductor ya no se puede utilizar.

Permisos

El Reproductor SDK de Android requiere el siguiente permiso:

<uses-permission android:name="android.permission.INTERNET" />

Además, estos permisos opcionales pueden mejorar la experiencia de reproducción:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

Seguridad de los subprocesos

La API del reproductor no es segura para los subprocesos. Todas las llamadas hechas a una instancia de reproductor deben provenir del mismo hilo.

Tamaño de SDK

Los SDK del reproductor de Amazon IVS están diseñados para ser lo más ligeros posible. Para obtener información actualizada sobre el tamaño del SDK, consulte las Notas de la versión.

Importante: Al evaluar el impacto en el tamaño, el tamaño del AAB o APK producido por Android Studio no es representativo del tamaño de la aplicación descargada en el dispositivo de un usuario. Google Play Store realiza optimizaciones para reducir el tamaño de la aplicación. Le recomendamos que utilice Paquetes de la aplicación Android a fin de servir a las aplicaciones optimizadas para cada configuración de dispositivo.