Intenzione di partecipare

"Intento di partecipazione" è una nuova funzionalità di Android Sender che consente a un'app del mittente di "partecipare" a una sessione di trasmissione avviata da altre app o da altre app vocali. Hai configurato l'avvio dell'app del mittente da un intent creato dall'SDK Cast.

Ad esempio, quando utilizzi i comandi vocali per avviare una sessione di trasmissione, l'SDK Cast crea una notifica che consente a un utente di controllare la riproduzione su tutti i telefoni Android collegati alla stessa rete. Quando l'utente tocca la notifica, l'SDK Cast crea l'intento di avviare l'app per partecipare alla sessione di trasmissione.

Consulta l'esempio di CastVideo per Android per un'implementazione funzionante di Intent to Join.

Con un mittente Android

Per attivare questa funzionalità, svolgi i seguenti passaggi nell'app:

Assicurati che la tua app utilizzi già una versione dell'SDK Android Sender successiva alla 11.4.0. Tra build.gradle:

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

Aggiungi un nuovo filtro per intent a un'attività in cui vuoi gestire l'intent. L'intent verrà utilizzato dalle notifiche di controllo remoto (RCN) per avviare l'app e partecipare a una sessione di trasmissione. Ti consigliamo di utilizzare l'attività in cui è ospitato SessionManagerListener e verrà chiamata onSessionStarted() o onSessionStartFailed(). Assicurati che il nuovo filtro per intent sia univoco nell'intero sistema Android. A questo scopo, ti consigliamo di utilizzare il tag <data>, come indicato di seguito:

<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>

Esempi di tag <data>:

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

Nell'attività in cui definisci il nuovo filtro per intent, chiama SessionManager.startSession(Intent) in 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);
    }
    ...
}

Configurazione della Console per gli sviluppatori di Google Cast

Per utilizzare la funzionalità Intenzione di partecipare, è necessario aggiungere l'URI dell'app e il nome del pacchetto nella Console per gli sviluppatori di Google Cast.

Il destinatario deve anche essere elencato e pubblicato affinché Intent to Join funzioni correttamente.

Per elencare la tua app, imposta l'opzione della scheda su "SÌ" e fornisci un titolo, una descrizione e un'immagine in formato 512 x 512 per la tua app.

Dopo la configurazione, puoi testare l'implementazione con Remote Control Notifications (RCN) come indicato di seguito:

  1. Installa l'app Google Home su un telefono Android e connettiti alla rete Wi-Fi sul telefono.
  2. Il dispositivo compatibile con Google Cast configura il dispositivo Google Home nella stessa rete.
  3. Avvia una sessione di trasmissione con il dispositivo Google Home utilizzando lo strumento Comando e controllo (CaC), un altro dispositivo Android o iOS oppure tramite comandi vocali e verifica se l'app ricevitore web è stata avviata.
  4. Attendi qualche secondo per visualizzare RCN sullo smartphone, quindi tocca la notifica per attivare l'intent. L'intent deve essere trasmesso a qualsiasi app che lo registra con i dati richiesti per partecipare alla sessione.

SessionManagerListener.onSessionStarted(T, String) per partecipare alla sessione.

Verifica

Se la tua app partecipa alla sessione correttamente, viene chiamata l'app SessionManagerListener.onSessionStarted(T, String). In caso contrario, viene chiamato SessionManagerListener.onSessionStartFailed(T, int). Se l'app gestisce già questi eventi correttamente (ad esempio, avviando un controller espanso o un mini controller), non devi fare altro.