Android-SDK

Mit dem Vonage Video API Android SDK können Sie von der Vonage Video API unterstützte Videositzungen in Anwendungen verwenden, die Sie für Android-Geräte entwickeln.

Die Vonage Video API Android SDK-Referenz finden Sie hier hier.

Wichtige Hinweise:

  • Android SDK 2.30.0+ unterstützt sowohl Geräte mit 4 KB als auch mit 16 KB Seitengröße.
  • Android SDK 2.29.1+ erfordert Genehmigung ACCESS_NETWORK_STATE und auf Android API-Level 35+ erfordert auch die Erlaubnis REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. Sehen Sie sich die vollständige Liste der Berechtigungen.
  • Android SDK 2.28.0+ erfordert eine Android-API-Stufe von mindestens 24.
  • Für Android SDK 2.24.3+, 2.25.4+ und 2.26.0+ ist mindestens die Android API-Stufe 23 erforderlich.
  • Android SDK 2.24.0 und höher unterstützen keine 32-Bit-x86-Architekturen mehr.
  • Applications, die auf API-Level 31 und höher abzielen, benötigen jetzt eine Genehmigung READ_PHONE_STATE. Sehen Sie sich die vollständige Liste der Berechtigungen.

Client-SDKs sind auch für Web, iOS, Windows, macOS, Linux und React Native verfügbar. Alle Client-SDKs können miteinander interagieren. Mehr über die Grundlagen von Vonage Video Clients, Servern, Sitzungen und mehr erfahren Sie auf der Video API-Grundlagen Seite.

Code-Beispiele

Für Beispielcode besuchen Sie unsere vonage-video-android-sdk-beispiele repo auf GitHub.

Interoperabilität

Apps, die mit dem Video Android SDK 2.32.1 geschrieben wurden, können mit Vonage Video-Apps interagieren, die mit Version 2.30+ des Video Client SDKs geschrieben wurden:

  • OpenTok.js
  • iOS-SDK
  • Windows-SDK
  • macOS-SDK
  • Linux-SDK
  • React Native SDK

Einrichtung

Eine Maven-Version ist verfügbar unter https://search.maven.org/artifact/com.vonage/client-sdk-video. Die Artefakt-ID lautet "client-sdk-video".

Weitere Informationen finden Sie unter Erstellen einer eigenen Anwendung mit dem Android SDK.

Anforderungen der Entwickler und Kunden

Das Android SDK unterstützt einen veröffentlichten Audio-/Videostream, einen abonnierten Audio-/Videostream und bis zu fünf zusätzliche abonnierte reine Audiostreams gleichzeitig (dies ist die Basisunterstützung auf einem Samsung Galaxy S3).

Um mehr als zwei Clients in einer Sitzung mit dem Android SDK zu verbinden, erstellen Sie eine Sitzung, die den Vonage Video Media Router verwendet (eine Sitzung, bei der der Medienmodus auf geroutet eingestellt ist). Siehe Der Vonage Video Media Router und die Medienmodi.

Das SDK wird in Hochgeschwindigkeits-Wi-Fi- und 4G-LTE-Netzen unterstützt.

Das Android SDK wird unterstützt von armeabi-v7a, armeabi64-v8aund x86_64 Architekturen.

Das SDK unterstützt ab Version 2.30.0 sowohl Geräte mit 4 KB als auch mit 16 KB Seitengröße. Dies gewährleistet die Funktionalität, verbessert die Kompatibilität und verhindert Abstürze. Für weitere Informationen siehe diese Android-Dokumentation auf Seite Größen.

Das Android SDK funktioniert mit jedem Android 7.0+ Gerät (Nougat, API Level 24), das über eine Kamera (für die Veröffentlichung von Videos) und eine ausreichende CPU- und Speicherunterstützung verfügt.

Erstellen einer eigenen Anwendung mit dem Android SDK

Eine Maven-Version ist verfügbar unter https://search.maven.org/artifact/com.vonage/client-sdk-video.

Die Artefakt-ID lautet "client-sdk-video". Ändern Sie Ihre Anwendung, um das Android-SDK herunterzuladen von https://search.maven.org/artifact/com.vonage/client-sdk-video. Zum Beispiel:

  1. Bearbeiten Sie die build.gradle für Ihr Projekt und fügen Sie den folgenden Codeschnipsel in die allprojects/repositories Abschnitt: mavenCentral()
  2. Ändern Sie die Datei build.gradle der Anwendung und fügen Sie den folgenden Codeschnipsel in die Datei dependencies Abschnitt: implementation 'com.vonage:client-sdk-video:2.32.1'
  3. Stellen Sie sicher, dass die build.gradle-Datei der Anwendung den folgenden Codeausschnitt enthält android Abschnitt (ab Android Studio 4.1 ist dieses Snippet beim Erstellen eines neuen Projekts vorhanden).

Für Android SDK-Versionen größer als 2.28.1:

compileOptions {
      sourceCompatibility JavaVersion.VERSION_17
      targetCompatibility JavaVersion.VERSION_17
}

Für Android SDK-Versionen zwischen 2.22.0 und 2.28.1:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}

Berechtigungen

Das Android SDK verwendet die folgenden Berechtigungen:

  • android.permission.ACCESS_NETWORK_STATE -- Das Vonage Video Android SDK benötigt diese Berechtigung ab Version 2.29.1.
  • android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS -- Das Vonage Video Android SDK benötigt diese Berechtigung ab Version 2.29.1 in API Level 35 und höher.
  • android.permission.BLUETOOTH_CONNECT -- Sie müssen dies für API-Level 31 und höher aktivieren. Wenn Sie das Bluetooth-Gerät mit Android SDK DefaultAudioDevice für API-Level 31 und höher verwenden möchten, fragen Sie bitte in der App nach Laufzeitberechtigungen oder aktivieren Sie die Berechtigung ("Nearby devices/Bluetooth") manuell in den App-Einstellungen.
  • android.permission.READ_PHONE_STATE -- Das Vonage Video Android SDK fordert diese Berechtigung in den API-Stufen 22 und niedriger sowie 31 und höher an.
  • android.permission.CAMERA -- Wenn Ihre Anwendung nicht den Standard-Video-Capturer verwendet und nicht auf die Kamera zugreift, können Sie diese Berechtigung entfernen.
  • android.permission.INTERNET -- Erforderlich.
  • android.permission.RECORD_AUDIO -- Wenn Ihre Anwendung nicht das Standard-Audiogerät verwendet und nicht auf das Mikrofon zugreift, können Sie diese Berechtigung entfernen.
  • android.permission.MODIFY_AUDIO_SETTINGS -- Wenn Ihre Anwendung nicht das Standard-Audiogerät verwendet und nicht auf das Mikrofon zugreift, können Sie diese Berechtigung entfernen.
  • android.permission.BLUETOOTH -- Das Standard-Audiogerät unterstützt Bluetooth-Audio. Wenn Ihre Anwendung nicht das Standard-Audiogerät und nicht Bluetooth verwendet, können Sie diese Berechtigung entfernen.
  • android.permission.BROADCAST_STICKY -- Wir haben festgestellt, dass diese Berechtigung vom Android-SDK nicht genutzt wird, und werden sie in einer der nächsten Versionen entfernen.

Sie müssen diese nicht zu Ihrem App-Manifest hinzufügen. Das Android SDK fügt sie automatisch hinzu. Bei API-Level 21 und höher müssen Sie jedoch bei bestimmten Berechtigungen den Benutzer dazu auffordern.

Ihre Anwendung kann jede dieser nicht benötigten Berechtigungen entfernen. Siehe diese Stelle und diese Android-Dokumentation. Dadurch wird zum Beispiel die android.permission.CAMERA Erlaubnis:

<uses-permission android:name="android.permission.CAMERA" tools:node="remove"/>

ProGuard-Regeln für das Vonage Video Android SDK

Die empfohlene ProGuard-Konfiguration ist:

-keeppackagenames
-keep class com.opentok.** { *; }
-keep class com.vonage.** { *; }

Wenn Sie Android Studio 3.4 oder das Android Gradle Plugin 3.4.0+ verwenden, sind Verkleinerung, Obfuskation und Optimierung standardmäßig automatisch aktiviert. Die Verkleinerung und Verschleierung des Vonage Video Android SDK wird nicht empfohlen. Die obige Konfiguration erzwingt die Beibehaltung des Vonage Video Android SDK-Quellcodes und verhindert nicht, dass der Rest der App verkleinert wird. Behalten Sie die Vonage Video Android SDK Paketnamen mit dem Flag -keeppackagenames. Der Compiler führt standardmäßig automatisch eine Reihe von Optimierungen durch. Andere Optimierungen werden nicht empfohlen, aber es ist möglich, zusätzliche Optimierungen zu aktivieren, die möglicherweise die Aufnahme zusätzlicher ProGuard-Regeln erfordern, um Laufzeitprobleme zu vermeiden, indem Sie das Folgende in die gradle.properties-Datei des Projekts hinzufügen:

android.enableR8.fullMode=true

Die Verkleinerung des Vonage Video Android SDK wird nicht empfohlen. Die Verkleinerung und Verschleierung des Vonage Video Android SDK mit der vorangegangenen Optimierung führt zu Warnungen. Diese sollten deaktiviert werden.

# 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

Siehe diese Android-Dokumentation um ein besseres Verständnis der allgemeinen ProGuard-Regeln und seiner Funktionen zu erlangen.

Integration von Android ConnectionService

Verwenden Sie die Android ConnectionService um eine VoIP-Anwendung zu erstellen, die die Audio-Video-Funktionen des Android SDK nutzt. So erstellen Sie eine einfache VoIP-App:

  • Registrieren Sie die android.telecom.ConnectionService in der Datei 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>
  • Erstellen Sie eine Klasse, die die Klasse android.telecom.ConnectionService Klasse. Implementieren Sie Methoden der ConnectionService Klasse, einschließlich onCreateIncomingConnection(), onCreateOutgoingConnection, onCreateIncomingConnectionFailed()und onCreateOutgoingConnectionFailed().
  • Erstellen Sie eine Klasse, die die Klasse android.telecom.Connection Klasse. Implementieren Sie Methoden der Connection Klasse, einschließlich onAnswer() und onDisconnect. Bei der Umsetzung der onAnswer() Methode können Sie eine Verbindung zu einer Vonage Video-Sitzung herstellen, einen Stream in der Sitzung veröffentlichen und Code zum Abonnieren von in der Sitzung erstellten Streams aktivieren. In der Implementierung der Methode onDisconnect() Methode können Sie die Verbindung mit der Sitzung trennen (und die Veröffentlichung und das Abonnieren von Streams beenden).
  • Sie können Dienste wie Google Firebase verwenden, um Push-Benachrichtigungen für die App zu implementieren. Sie können Benachrichtigungen einrichten, um zu erfahren, wann Ihre App im Hintergrund läuft oder geschlossen ist. Auf diese Weise kann Ihre App einen VoIP-Anruf erhalten, während sie geschlossen ist.

Bei der Verwendung von ConnectionServiceverwenden Sie die AudioDeviceManager.getAudioFocusManager() Methode und implementieren Methoden der zurückgegebenen AudioFocusManager Instanz, um die Kontrolle über den Audio-Fokus an Ihre App zu delegieren. Diese sind im Vonage Android SDK definiert:

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();
}

Wenn Sie den Audio-Fokus an die Anwendung delegieren, stoppt das SDK sein automatisches Audio-Routing. Stattdessen wird diese Routing-Logik von ConnectionServicedie die App über verfügbare Audiogeräte durch die Verbindung benachrichtigt. CallEndpoint und CallAudioState APIs. Ihre Anwendung muss Unterstützung für die Aufzählung von Audiogeräten und die Auswahllogik implementieren.

Diese Delegation gewährleistet die ordnungsgemäße Weiterleitung von Audiodaten und die Koordination mit dem Android-Telekommunikationssystem.

Siehe die Beispiel VOIP-Anwendung im opentok-android-sdk-samples Repo. Es zeigt, wie man die ConnectionService Klasse, um eine VoIP-Anwendung zu erstellen, die das Android SDK verwendet.

Dienstleistungen im Vordergrund

Vordergrunddienste in Android sind wichtig, um den Zugriff auf Kamera- und Mikrofonfunktionen aufrechtzuerhalten, auch wenn Ihre App im Hintergrund läuft. Für Video-Chat-Apps bedeutet dies, dass Sie während des Multitaskings weiterhin Video und Audio aufnehmen können. Ab Android 14 (API-Ebene 34) müssen Sie für jeden Vordergrunddienst in Ihrem App-Manifest einen entsprechenden Diensttyp deklarieren - zum Beispiel den Diensttyp "Kamera" zusammen mit dem entsprechenden FOREGROUND_SERVICE_CAMERA Berechtigung. Darüber hinaus müssen Sie die erforderlichen Laufzeitberechtigungen anfordern, z. B. die CAMERA-Berechtigung, die während der Nutzung Einschränkungen unterliegt. Diese Einrichtung stellt sicher, dass Ihre App über die erforderlichen Berechtigungen verfügt, um Kamera- und Mikrofonfunktionen im Hintergrund zu betreiben, und entspricht damit den neuesten Android-Anforderungen und Best Practices.

Dokumentation

Eine ausführliche Dokumentation der einzelnen Android-Methoden finden Sie in der Referenzhandbuch.

Weitere Informationen

Eine Liste der neuen Funktionen und bekannten Probleme finden Sie in der Versionshinweise.