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 archivobuild.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 SurfaceViewSurfaceHolder.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