

# Démarrez avec le SDK de diffusion Android IVS \$1 Streaming en temps réel
<a name="broadcast-android-getting-started"></a>

Ce document explique les étapes nécessaires pour le démarrage avec le SDK de diffusion Android IVS en temps réel.

## Installer la bibliothèque
<a name="broadcast-android-install"></a>

Il existe plusieurs façons d’ajouter la bibliothèque de diffusion Android d’Amazon IVS à votre environnement de développement Android : utiliser Gradle directement, utiliser les catalogues de versions de Gradle ou installer le kit SDK manuellement.

**Utiliser Gradle directement** : ajoutez la bibliothèque dans le fichier `build.gradle` de votre module, comme indiqué ici (pour la dernière version du kit SDK de diffusion IVS) :

```
repositories {
    mavenCentral()
}
 
dependencies {
     implementation 'com.amazonaws:ivs-broadcast:1.40.0:stages@aar'
}
```

**Utiliser les catalogues de versions de Gradle** : ajoutez d’abord ceci dans le fichier `build.gradle` de votre module :

```
implementation(libs.ivs){
   artifact {
      classifier = "stages"
      type = "aar"
   }
}
```

Ajoutez ensuite les éléments suivants dans le fichier `libs.version.toml` (pour la dernière version du kit SDK de diffusion IVS) :

```
[versions]
ivs="1.40.0"

[libraries]
ivs = {module = "com.amazonaws:ivs-broadcast", version.ref = "ivs"}
```

**Installer le kit SDK manuellement** : téléchargez la dernière version à partir de l’emplacement suivant :

[https://search.maven.org/artifact/com.amazonaws/ivs-broadcast](https://search.maven.org/artifact/com.amazonaws/ivs-broadcast)

N’oubliez pas de télécharger le `aar` en ajoutant le suffixe `-stages`.

**Autoriser le contrôle du haut-parleur par le kit SDK** : indépendamment de la méthode d’installation choisie, ajoutez également l’autorisation suivante dans votre manifeste pour permettre au kit SDK d’activer et de désactiver le haut-parleur :

```
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
```

## Utilisation du kit SDK avec des symboles de débogage
<a name="broadcast-android-using-debug-symbols-rt"></a>

Nous publions également une version du kit SDK de diffusion Android incluant des symboles de débogage. Vous pouvez utiliser cette version pour améliorer la qualité des rapports de débogage (traces de pile) dans Firebase Crashlytics, en cas de plantages dans le kit SDK de diffusion IVS, par exemple `libbroadcastcore.so`. Lorsque vous signalez ces plantages à l’équipe SDK IVS, des traces de pile de meilleure qualité facilitent la résolution des problèmes.

Pour utiliser cette version du kit SDK, ajoutez la ligne suivante dans vos fichiers de configuration Gradle :

```
implementation "com.amazonaws:ivs-broadcast:$version:stages-unstripped@aar"
```

Utilisez la ligne ci-dessus au lieu de celle-ci :

```
implementation "com.amazonaws:ivs-broadcast:$version:stages@aar"
```

### Téléchargement des symboles vers Firebase Crashlytics
<a name="android-debug-symbols-rt-firebase-crashlytics"></a>

Assurez-vous que vos fichiers de configuration Gradle sont bien configurés pour Firebase Crashlytics. Suivez les instructions de Google ici :

[https://firebase.google.com/docs/crashlytics/ndk-reports](https://firebase.google.com/docs/crashlytics/ndk-reports)

Veillez à ajouter `com.google.firebase:firebase-crashlytics-ndk` en tant que dépendance.

Lorsque vous créez votre application en vue de sa publication, le plug-in Firebase Crashlytics devrait automatiquement télécharger les symboles. Pour ce faire, exécutez l’une des commandes suivantes :

```
gradle uploadCrashlyticsSymbolFileRelease
```

```
./gradlew uploadCrashlyticsSymbolFileRelease
```

(Il n’y a aucun risque si les symboles sont téléchargés deux fois, automatiquement et manuellement.)

### Prévention de l’augmentation de la taille du fichier .apk en version finale
<a name="android-debug-symbols-rt-sizing-apk"></a>

Avant de générer le fichier `.apk` en version finale, le plug-in Android Gradle tente automatiquement de supprimer les informations de débogage des bibliothèques partagées (y compris la bibliothèque `libbroadcastcore.so` du kit SDK de diffusion IVS). Cependant, cela ne fonctionne pas toujours. En conséquence, votre fichier `.apk` pourrait augmenter en taille et vous pourriez recevoir un message d’avertissement du plug-in Android Gradle indiquant qu’il n’a pas pu supprimer les symboles de débogage et qu’il inclut les fichiers `.so` tels quels. Si cela se produit, procédez comme suit :
+ Installez un NDK Android. Toute version récente fonctionnera.
+ Ajoutez `ndkVersion <your_installed_ndk_version_number>` au fichier `build.gradle` de votre application. Procédez ainsi même si votre application elle-même ne contient pas de code natif.

Pour plus d’informations, consultez ce [problème connu](https://issuetracker.google.com/issues/353554169).

## Demander des autorisations
<a name="broadcast-android-permissions"></a>

Votre appli doit demander l’autorisation d’accéder à la caméra et au micro de l’utilisateur. (Ce n’est pas spécifique à Amazon IVS ; cette autorisation est requise pour toute application devant accéder aux caméras et aux micros.)

Ici, nous vérifions si l’utilisateur a déjà accordé des autorisations et, dans le cas contraire, nous les demandons :

```
final String[] requiredPermissions =
         { Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO };

for (String permission : requiredPermissions) {
    if (ContextCompat.checkSelfPermission(this, permission) 
                != PackageManager.PERMISSION_GRANTED) {
        // If any permissions are missing we want to just request them all.
        ActivityCompat.requestPermissions(this, requiredPermissions, 0x100);
        break;
    }
}
```

Ici, nous obtenons la réponse de l’utilisateur :

```
@Override
public void onRequestPermissionsResult(int requestCode, 
                                      @NonNull String[] permissions,
                                      @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode,
               permissions, grantResults);
    if (requestCode == 0x100) {
        for (int result : grantResults) {
            if (result == PackageManager.PERMISSION_DENIED) {
                return;
            }
        }
        setupBroadcastSession();
    }
}
```