SDK para Android
El SDK para Android de la API de video de Vonage te permite usar sesiones de video impulsadas por la API de video de Vonage en aplicaciones que crees para dispositivos Android.
Puedes encontrar la referencia del SDK para Android de la API de Video de Vonage aquí.
Notas importantes:
- Android SDK 2.30.0+ admite dispositivos con tamaños de página de 4 KB y 16 KB.
- Android SDK 2.29.1+ requiere permiso
ACCESS_NETWORK_STATEy en Android API nivel 35+ también requiere permisoREQUEST_IGNORE_BATTERY_OPTIMIZATIONS. Consulte la lista completa de permisos. - Android SDK 2.28.0+ requiere un nivel API de Android mínimo de 24.
- Android SDK 2.24.3+, 2.25.4+ y 2.26.0+ requiere un nivel API de Android mínimo de 23.
- Android SDK 2.24.0 y superiores ya no son compatibles con arquitecturas x86 de 32 bits.
- Applications targeting API level 31 and above now require permission
READ_PHONE_STATE. Consulte la lista completa de permisos.
Los SDK de cliente también están disponibles para web, iOS, Windows, macOS, Linux y React Native. Todos los SDK de cliente pueden interactuar entre sí. Puedes obtener más información sobre los aspectos básicos de los clientes, servidores, sesiones y más de Vonage Video en la página web Conceptos básicos de la Video API página.
Ejemplos de códigos
Para ver ejemplos de código, visite nuestra página repo vonage-video-android-sdk-samples en GitHub.
Interoperabilidad
Las aplicaciones escritas con Video Android SDK 2.33.0 pueden interoperar con las aplicaciones de Vonage Video escritas con la versión 2.31+ de los Video Client SDK:
- OpenTok.js
- SDK para iOS
- SDK para Windows
- SDK para macOS
- SDK para Linux
- SDK de React Native
Instalación
La versión Maven está disponible en https://search.maven.org/artifact/com.vonage/client-sdk-video. El ID del artefacto es "client-sdk-video".
Para más información, consulte Crear su propia aplicación utilizando el SDK de Android.
Requisitos del promotor y del cliente
El SDK de Android admite un flujo de audio-vídeo publicado, un flujo de audio-vídeo suscrito y hasta cinco flujos adicionales de sólo audio suscritos simultáneamente.
Para conectar más de dos clientes en una sesión usando el Android SDK, crea una sesión que use el enrutador de medios con video de Vonage (una sesión con el modo de medios configurado en enrutado). Consulta El enrutador de medios de video de Vonage y los modos de medios.
El SDK es compatible con redes Wi-Fi de alta velocidad y 4G LTE.
El SDK de Android es compatible con armeabi-v7a, armeabi64-v8ay x86_64 arquitecturas.
El SDK es compatible con dispositivos de tamaño de página de 4 KB y 16 KB a partir de la versión 2.30.0. Esto garantiza la funcionalidad, mejora la compatibilidad y evita fallos. Para más información, consulte esta documentación de Android en tamaños de página.
El SDK de Android funciona con cualquier dispositivo Android 7.0+ (Nougat, nivel de API 24) que tenga una cámara (para publicar vídeo) y un soporte adecuado de CPU y memoria.
Crear su propia aplicación utilizando el SDK de Android
La versión Maven está disponible en https://search.maven.org/artifact/com.vonage/client-sdk-video.
El ID del artefacto es "client-sdk-video". Modifica tu aplicación para descargar el SDK de Android desde https://search.maven.org/artifact/com.vonage/client-sdk-video. Por ejemplo:
- Edite el build.gradle de su proyecto y añada el siguiente fragmento de código al archivo
allprojects/repositoriessección:mavenCentral() - Modifique el archivo build.gradle de la aplicación y añada el siguiente fragmento de código al archivo
dependenciessección:implementation 'com.vonage:client-sdk-video:2.33.0' - Asegúrese de que el archivo build.gradle de la aplicación contiene el siguiente fragmento de código
android(a partir de Android Studio 4.1 este fragmento está presente al crear un nuevo proyecto).
Para versiones del SDK de Android superiores a la 2.28.1:
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
Para versiones del SDK de Android comprendidas entre la 2.22.0 y la 2.28.1:
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
Requisitos del sistema
Para una transmisión de vídeo fiable, asegúrate de que tu dispositivo Android cumple estas especificaciones recomendadas:
- CPU: Un procesador reciente de doble núcleo; ARM64 (ARMv8) Quad-core o superior a 2,0 GHz+ (por ejemplo, Qualcomm Snapdragon serie 600+, Samsung Exynos serie 7 o superior, Google Tensor (dispositivos Pixel)).
- GPU: Adreno serie 500+ (Qualcomm), Mali-G71+ (ARM); para codificación/decodificación de vídeo acelerada por hardware.
- RAM: Al menos 6 GB de RAM para llamadas en grupo y multitarea.
- Pantalla: 5"+ para una mejor experiencia de usuario.
- Capacidad de la batería: 3000+ mAh para videollamadas prolongadas.
- Red: Conectividad fiable a Internet; funciona por Wi-Fi o móvil.
Estas recomendaciones garantizan una reproducción estable, un menor uso de la CPU y un rendimiento fluido al transmitir vídeo.
Ejemplos de dispositivos por categoría: Samsung Galaxy A12, Moto G Play y Nokia G10 son de gama básica; Google Pixel 6a, Samsung Galaxy A52/A53 y OnePlus Nord son de gama media; y Samsung Galaxy S23/S24, Google Pixel 8 Pro y OnePlus 11 son de gama alta.
Permisos
El SDK de Android utiliza los siguientes permisos:
android.permission.ACCESS_NETWORK_STATE-- El SDK de Vonage Video para Android requiere este permiso a partir de la versión 2.29.1.android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS-- El SDK de Vonage Video para Android requiere este permiso a partir de la versión 2.29.1 en el nivel de API 35 y superiores.android.permission.BLUETOOTH_CONNECT-- Es necesario habilitarlo para el nivel de API 31 y superiores. Si desea utilizar el dispositivo Bluetooth con Android SDK DefaultAudioDevice orientado al nivel de API 31 y superior, solicite permisos de tiempo de ejecución en la aplicación o habilite el permiso ("Dispositivos cercanos/Bluetooth") manualmente en la configuración de la aplicación.android.permission.READ_PHONE_STATE-- El SDK para Android de Vonage Video solicita este permiso en el nivel de API 22 e inferior, y 31 y superior.android.permission.CAMERA-- Si tu aplicación no utiliza el capturador de vídeo predeterminado y no accede a la cámara, puedes eliminar este permiso.android.permission.INTERNET-- Requerido.android.permission.RECORD_AUDIO-- Si tu aplicación no utiliza el dispositivo de audio predeterminado y no accede al micrófono, puedes eliminar este permiso.android.permission.MODIFY_AUDIO_SETTINGS-- Si tu aplicación no utiliza el dispositivo de audio predeterminado y no accede al micrófono, puedes eliminar este permiso.android.permission.BLUETOOTH-- El dispositivo de audio por defecto soporta audio Bluetooth. Si tu app no utiliza el dispositivo de audio predeterminado y no usa Bluetooth, puedes eliminar este permiso.android.permission.BROADCAST_STICKY-- Hemos determinado que esto no es utilizado por el SDK de Android, y vamos a eliminar este permiso de una próxima versión.
No es necesario que los añada al manifiesto de su aplicación. El SDK de Android los añade automáticamente. Sin embargo, a partir del nivel 21 de la API, algunos permisos requieren que se pregunte al usuario.
Tu aplicación puede eliminar cualquiera de estos permisos que no sean necesarios. Consulte esta entrada y esta documentación de Android. Por ejemplo, esto elimina el android.permission.CAMERA permiso:
<uses-permission android:name="android.permission.CAMERA" tools:node="remove"/>
Reglas de ProGuard para el SDK de Vonage Video para Android
La configuración recomendada de ProGuard es:
-keeppackagenames
-keep class com.opentok.** { *; }
-keep class com.vonage.** { *; }
Cuando se utiliza Android Studio 3.4 o Android Gradle plugin 3.4.0+, la contracción, ofuscación y optimización están, por defecto, automáticamente habilitadas. No se recomienda reducir y ofuscar el SDK de Vonage Video para Android. La configuración anterior obliga a conservar el código fuente del SDK para Android de Vonage Video, sin impedir que se reduzca el resto de la aplicación. Conserva los nombres de los paquetes de Vonage Video Android SDK con la bandera -keeppackagenames. El compilador realiza automáticamente un conjunto de optimizaciones por defecto. Cualquier otra optimización no se recomienda, pero es posible habilitar optimizaciones adicionales, que pueden requerir incluir reglas ProGuard adicionales para evitar problemas en tiempo de ejecución, añadiendo lo siguiente en el archivo gradle.properties del proyecto:
android.enableR8.fullMode=true
No se recomienda reducir el SDK para Android de Vonage Video. Reducir y ofuscar el SDK de Vonage Video para Android con la optimización anterior generará advertencias. Estas deben ser deshabilitadas.
# Please add these rules to your existing keep rules in order to suppress warnings.
# This is generated automatically by the Android Gradle plugin.
-dontwarn org.bouncycastle.jsse.BCSSLParameters
-dontwarn org.bouncycastle.jsse.BCSSLSocket
-dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider
-dontwarn org.conscrypt.Conscrypt$Version
-dontwarn org.conscrypt.Conscrypt
-dontwarn org.conscrypt.ConscryptHostnameVerifier
-dontwarn org.openjsse.javax.net.ssl.SSLParameters
-dontwarn org.openjsse.javax.net.ssl.SSLSocket
-dontwarn org.openjsse.net.ssl.OpenJSSE
Véase esta documentación de Android para comprender mejor las reglas generales de ProGuard y sus funcionalidades.
Integración de Android ConnectionService
Utiliza Android Servicio de conexión para crear una aplicación VoIP que utilice las funciones de audio y vídeo del SDK de Android. Para crear una aplicación VoIP básica:
- Registre el
android.telecom.ConnectionServiceen el archivo AndroidManifest.xml.
<service android:name="com.example.package.MyConnectionService"
android:label="@string/some_label_for_my_connection_service"
android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
<intent-filter>
<action android:name="android.telecom.ConnectionService" />
</intent-filter>
</service>
- Crear una clase que extienda la clase
android.telecom.ConnectionServiceclase. Implementar métodos de la claseConnectionServiceclase, incluyendoonCreateIncomingConnection(),onCreateOutgoingConnection,onCreateIncomingConnectionFailed()yonCreateOutgoingConnectionFailed(). - Crear una clase que extienda la clase
android.telecom.Connectionclase. Implementar métodos de la claseConnectionclase, incluyendoonAnswer()yonDisconnect. En la aplicación delonAnswer()puedes conectarte a una sesión de Vonage Video, publicar una transmisión en la sesión y habilitar el código para que se suscriba a las transmisiones creadas en la sesión. En la implementación del métodoonDisconnect()puede desconectarse de la sesión (y dejar de publicar y suscribirse a flujos). - Puedes utilizar servicios como Google Firebase para implementar notificaciones push para la aplicación. Puedes configurar las notificaciones para saber cuándo tu aplicación está en segundo plano o cerrada. De este modo, tu aplicación puede recibir una llamada VoIP mientras está cerrada.
Al utilizar ConnectionServiceutilice el botón AudioDeviceManager.getAudioFocusManager() y aplicar los métodos del método AudioFocusManager para delegar el control del enfoque de audio a tu aplicación. Se definen en el SDK para Android de Vonage:
private AudioDeviceManager audioDeviceManager;
private BaseAudioDevice.AudioFocusManager audioFocusManager;
public void setupAudioFocusManager(Context context) {
audioDeviceManager = new AudioDeviceManager(context);
audioFocusManager = audioDeviceManager.getAudioFocusManager();
audioFocusManager.setRequestAudioFocus(false);
}
public void notifyAudioFocusIsActive() {
audioFocusManager.audioFocusActivated();
}
public void notifyAudioFocusIsInactive() {
audioFocusManager.audioFocusDeactivated();
}
Al delegar el foco de audio a la aplicación, el SDK detiene su enrutamiento automático de audio. En su lugar, esta lógica de enrutamiento es manejada por ConnectionServiceque notifica a la aplicación acerca de los dispositivos de audio disponibles a través de la conexión de CallEndpoint y CallAudioState API. Tu aplicación debe ser compatible con la lógica de enumeración y selección de dispositivos de audio.
Esta delegación garantiza el correcto enrutamiento del audio y la coordinación con el sistema Android Telecom.
Véase el ejemplo de aplicación VOIP en el vonage-video-android-sdk-samples repo. Muestra cómo implementar el ConnectionService para crear una aplicación VoIP que utilice el SDK de Android.
Servicios en primer plano
Los servicios de primer plano en Android son esenciales para mantener el acceso a las funciones de cámara y micrófono incluso cuando la aplicación está en segundo plano. Para las aplicaciones de chat de vídeo, esto significa que puedes seguir capturando vídeo y audio mientras realizas varias tareas a la vez. A partir de Android 14 (nivel 34 de la API), debes declarar un tipo de servicio apropiado para cada servicio en primer plano en el manifiesto de tu aplicación; por ejemplo, declarando el tipo de servicio "cámara" junto con el correspondiente elemento FOREGROUND_SERVICE_CAMERA permiso. Además, debes solicitar los permisos de ejecución necesarios, como el permiso de CÁMARA, que está sujeto a restricciones de uso. Esta configuración garantiza que tu aplicación tenga los privilegios necesarios para utilizar las funciones de cámara y micrófono en segundo plano, de acuerdo con los requisitos y las mejores prácticas más recientes de Android.
Documentación
Encontrará documentación detallada sobre cada método de Android en la sección guía de referencia.
Más información
Para obtener una lista de las nuevas funciones y los problemas conocidos, consulte la página notas de la versión.