Intention de participer

"Intent to Join" (Intent de participation) est une nouvelle fonctionnalité d'Android Sender. Elle permet à une application émettrice de "rejoindre" une session Cast lancée par d'autres applications ou d'autres voix. Vous configurez le lancement de votre application émettrice pour qu'elle soit lancée par un intent créé par le SDK Cast.

Par exemple, lorsqu'un utilisateur démarre une session Cast par commande vocale, le SDK Cast crée une notification qui permet à l'utilisateur de contrôler la lecture sur tous les téléphones Android du même réseau. Lorsque l'utilisateur appuie sur la notification, le SDK Cast crée l'intent pour lancer votre application afin de rejoindre la session Cast.

Consultez l'exemple CastVideos-Android pour découvrir une implémentation fonctionnelle de l'intent de jointure.

Utiliser un expéditeur Android

Pour activer cette fonctionnalité, procédez comme suit dans votre application:

Assurez-vous que votre application utilise déjà une version du SDK Android Sender supérieure à 11.4.0. Dans build.gradle :

dependencies {
    api 'com.google.android.gms:play-services-cast-framework:11.4.0'
}

Ajoutez un filtre d'intent à une activité pour laquelle vous souhaitez gérer l'intent. L'intent sera utilisé par les notifications de contrôle à distance (RCN) pour lancer votre application et rejoindre une session Cast. Nous vous recommandons d'utiliser l'activité où SessionManagerListener est hébergé, et onSessionStarted() ou onSessionStartFailed() sera appelé. Assurez-vous que le nouveau filtre d'intent est unique sur l'ensemble du système Android. Pour ce faire, nous vous recommandons d'utiliser la balise <data>, comme suit:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="your_app_scheme" android:host="your_app_host"
        android:path="your_app_path"/>
</intent-filter>

Exemples de balise <data>:

<data android:scheme="https" android:host="example.com"
      android:path="/cast/join"/>

Dans l'activité dans laquelle vous définissez le nouveau filtre d'intent, appelez SessionManager.startSession(Intent) dans onResume():

Kotlin
override fun onResume() {
    ...
    val intent = intent
    // Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>"
    val intentToJoinUri = Uri.parse("https://example.com/cast/join")
    if (intent.data != null && intent.data == intentToJoinUri) {
        mCastContext.sessionManager.startSession(intent)
    }
    ...
}
Java
@Override
protected void onResume() {
    ...
    Intent intent = getIntent();
    // Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>"
    Uri intentToJoinUri = Uri.parse("https://example.com/cast/join");
    if (intent.getData() != null && intent.getData().equals(intentToJoinUri)) {
        mCastContext.getSessionManager().startSession(intent);
    }
    ...
}

Configuration de la console Google Cast pour les développeurs

Pour utiliser la fonctionnalité Intent d'association, vous devez ajouter l'URI de l'application et le nom du package dans la console Google Cast.

Votre récepteur doit également être listé et publié pour que l'intent de jointure fonctionne correctement.

Pour présenter votre application, définissez l'option d'affichage sur "OUI" et fournissez un titre, une description et une image de 512 x 512 pixels pour votre application.

Après la configuration, vous pouvez tester l'implémentation avec les notifications de contrôle à distance (RCN) comme suit:

  1. Installez l'application Google Home sur un téléphone Android et connectez-vous au Wi-Fi sur le téléphone.
  2. L'appareil compatible Cast configure l'appareil Google Home sur le même réseau.
  3. Lancez une session de diffusion avec l'appareil Google Home à l'aide de l'outil de commande et de contrôle (CaC), sur un autre appareil Android ou iOS, ou par commande vocale, et vérifiez si l'application Web Receiver est lancée.
  4. Attendez quelques secondes pour obtenir RCN sur le téléphone, puis appuyez sur la notification pour déclencher l'intent. L'intent doit être diffusé à toute application qui l'enregistre avec les données requises pour rejoindre la session.

SessionManagerListener.onSessionStarted(T, String) sera déclenché et rejoint la session.

Validation

Si votre application parvient à rejoindre la session, SessionManagerListener.onSessionStarted(T, String) est appelé. Sinon, SessionManagerListener.onSessionStartFailed(T, int) est appelé. En supposant que votre application gère déjà ces événements correctement (par exemple, en lançant une télécommande agrandie ou une mini-télécommande), vous n'avez rien d'autre à faire.