Anleitung zur Bildschirmfreigabe (Android)
Übersicht
In diesem Tutorial wird gezeigt, wie man mit dem OpenTok Android SDK ein Video zur Bildschirmfreigabe veröffentlicht.
Einrichten Ihres Projekts
Der Code für diesen Abschnitt ist im Screen-Sharing-Java-Projekt des vonage-android-sdk-Beispiele Repo. Wenn Sie dies noch nicht getan haben, müssen Sie das Projektarchiv in ein lokales Verzeichnis klonen. Führen Sie in der Befehlszeile Folgendes aus:
git clone git@github.com:opentok/opentok-android-sdk-samples.git
Öffnen Sie die Bildschirm-Sharing-Java Projekt in Android Studio, um die Entwicklung zu verfolgen.
Den Code erkunden
Die MainActivity Klasse verwendet WebView Objekt als Quelle für das Screen-Sharing-Video des veröffentlichten Streams.
In der initializePublisher() Methode der MainActivity Klasse, ruft der Code nach dem Erstellen eines Publisher.Builder-Objekts die capturer() Methode der Publisher.Builder Objekt und übergibt eine ScreenSharingCapturer Objekt als Parameter:
ScreenSharingCapturer screenSharingCapturer = new ScreenSharingCapturer(MainActivity.this, webViewContainer);
publisher = new Publisher.Builder(MainActivity.this)
.capturer(screenSharingCapturer)
.build();
ScreenSharingCapturer ist eine benutzerdefinierte Klasse, die die BaseVideoCapturer Klasse (definiert im OpenTok-SDK). Mit dieser Klasse können Sie einen benutzerdefinierten Video-Capturer definieren, der von einem OpenTok-Publisher verwendet wird. Der Konstruktor der ScreenSharingCapturer Klasse wird ein Android-Ansichtsobjekt übergeben, das der Capturer als Quelle für das Video verwenden wird.
Die getCaptureSettings() Methode initialisiert die Aufnahmeeinstellungen, die vom benutzerdefinierten Video-Capturer verwendet werden sollen:
@Override
public CaptureSettings getCaptureSettings() {
CaptureSettings captureSettings = new CaptureSettings();
captureSettings.fps = fps;
captureSettings.width = width;
captureSettings.height = height;
captureSettings.format = ARGB;
return captureSettings;
}
Die startCapture() Methode startet die frameProducer Thread nach 1/15 Sekunde:
@Override
public int startCapture() {
capturing = true;
handler.postDelayed(newFrame, 1000 / fps);
return 0;
}
Die frameProducer Thread erhält eine Bitmap Darstellung der contentViewObjekt (das WebView), schreibt seine Pixel in einen Puffer und ruft dann die provideIntArrayFrame() Methode und übergibt diesen Puffer als Parameter:
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);
}
}
};
Die provideIntArrayFrame Methode, definiert durch den BaseVideoCapturer Klasse sendet ein ganzzahliges Datenfeld an den Herausgeber, das für das nächste veröffentlichte Videobild verwendet werden soll.
Wenn der Herausgeber immer noch Videos aufnimmt, wird der Thread nach einer weiteren 1/15-Sekunde erneut gestartet, so dass der Aufzeichner den Herausgeber weiterhin mit neuen Videobildern zur Veröffentlichung versorgt.
Herzlichen Glückwunsch! Du hast das Tutorial zur Bildschirmfreigabe für Android abgeschlossen.
Du kannst den Code, den du hier entwickelt hast, weiter ausprobieren und anpassen oder dir die Nächste Schritte unten. Weitere Informationen zur Bildschirmfreigabe mit OpenTok finden Sie unter OpenTok-Entwicklerhandbuch zur Bildschirmfreigabe für Android.
Nächste Schritte
Wenn Sie hier fertig sind, können Sie Ihre OpenTok-Application mit diesen hilfreichen Ressourcen weiter ausbauen und verbessern:
- Grundlagen der Video API – Falls Sie es noch nicht getan haben, nehmen Sie sich ein paar Minuten Zeit, um genau zu erfahren, wie OpenTok funktioniert.
- Code-Beispiele – eine Sammlung von Beispiel-Apps, die verschiedene OpenTok-Funktionen und Anwendungsfälle veranschaulichen
- Entwicklerhandbücher – ausführliche Dokumentation zu allen Funktionen und Merkmalen von OpenTok
- Weitere Tutorials – Anleitungen zur Implementierung weiterer OpenTok-Funktionen und Anwendungsfälle
- Android SDK-Referenz – Entdecken Sie die Methoden und Ereignisse des OpenTok Android SDK