Tutorial sobre cómo compartir pantalla (Android)
Visión general
En este tutorial se explica cómo utilizar el SDK de OpenTok para Android para publicar un vídeo en el que se comparte la pantalla.
Configuración de tu proyecto
El código de esta sección está disponible en el proyecto Screen-Sharing-Java del proyecto vonage-android-sdk-samples repositorio. Si aún no lo has hecho, tendrás que clonar el repositorio en un directorio local. En la línea de comandos, ejecuta:
git clone git@github.com:opentok/opentok-android-sdk-samples.git
Abra el Screen-Sharing-Java proyecto en Android Studio para seguir el tutorial.
Explorar el código
El MainActivity usos de la clase WebView como fuente para el vídeo de pantalla compartida del flujo publicado.
En el initializePublisher() método del MainActivity después de crear un objeto Publisher.Builder, el código llama a la clase capturer() método del Publisher.Builder objeto, pasando un ScreenSharingCapturer como parámetro:
ScreenSharingCapturer screenSharingCapturer = new ScreenSharingCapturer(MainActivity.this, webViewContainer);
publisher = new Publisher.Builder(MainActivity.this)
.capturer(screenSharingCapturer)
.build();
ScreenSharingCapturer es una clase personalizada que hereda de la BaseVideoCapturer clase (definida en el SDK de OpenTok). Esta clase te permite definir un capturador de vídeo personalizado para que lo utilice un editor de OpenTok. El constructor de la ScreenSharingCapturer A la clase se le pasa un objeto View de Android, que el capturador utilizará como fuente del vídeo.
El getCaptureSettings() Este método inicializa los parámetros de captura que utilizará el capturador de vídeo personalizado:
@Override
public CaptureSettings getCaptureSettings() {
CaptureSettings captureSettings = new CaptureSettings();
captureSettings.fps = fps;
captureSettings.width = width;
captureSettings.height = height;
captureSettings.format = ARGB;
return captureSettings;
}
El startCapture() inicia el método frameProducer hilo tras 1/15 de segundo:
@Override
public int startCapture() {
capturing = true;
handler.postDelayed(newFrame, 1000 / fps);
return 0;
}
El frameProducer obtiene un Bitmap representación de la contentView(el objeto WebView), escribe sus píxeles en un búfer y, a continuación, llama a la función provideIntArrayFrame() pasando ese búfer como parámetro:
private Runnable newFrame = new Runnable() {
@Override
public void run() {
if (capturing) {
int width = contentView.getWidth();
int height = contentView.getHeight();
if (frame == null ||
ScreenSharingCapturer.this.width != width ||
ScreenSharingCapturer.this.height != height) {
ScreenSharingCapturer.this.width = width;
ScreenSharingCapturer.this.height = height;
if (bmp != null) {
bmp.recycle();
bmp = null;
}
bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
canvas = new Canvas(bmp);
frame = new int[width * height];
}
canvas.saveLayer(0, 0, width, height, null);
canvas.translate(-contentView.getScrollX(), - contentView.getScrollY());
contentView.draw(canvas);
bmp.getPixels(frame, 0, width, 0, 0, width, height);
provideIntArrayFrame(frame, ARGB, width, height, 0, false);
canvas.restore();
handler.postDelayed(newFrame, 1000 / fps);
}
}
};
El provideIntArrayFrame definido por el método BaseVideoCapturer envía una matriz entera de datos al editor, que se utilizará para el siguiente fotograma de vídeo publicado.
Si el editor sigue capturando vídeo, el ciclo vuelve a comenzar tras otro 1/15 de segundo, de modo que el capturador sigue proporcionando al editor nuevos fotogramas de vídeo para su publicación.
¡Enhorabuena! Has completado el tutorial sobre cómo compartir la pantalla en Android.
Puedes seguir probando y modificando el código que has creado aquí, o echar un vistazo a la Próximos pasos a continuación. Para obtener más información sobre cómo compartir pantalla con OpenTok, consulta el Guía para desarrolladores sobre el uso compartido de pantalla de OpenTok para Android.
Próximos pasos
Cuando hayas terminado aquí, sigue desarrollando y mejorando tu aplicación de OpenTok con estos útiles recursos:
- Conceptos básicos de la Video API: si aún no lo has hecho, dedica unos minutos a descubrir exactamente cómo funciona OpenTok
- Ejemplos de código: una recopilación de aplicaciones de ejemplo que exploran diversas funciones y casos de uso de OpenTok
- Guías para desarrolladores: documentación detallada sobre todas las características y funcionalidades de OpenTok
- Tutoriales adicionales: guías paso a paso para implementar otras funciones y casos de uso de OpenTok
- Referencia del SDK de Android: descubre los métodos y eventos asociados al SDK de OpenTok para Android