Intenzione di partecipare

"Intent di partecipare" è una nuova funzionalità di Android Sender che consente a un'app di mittente di "partecipare" a una sessione di trasmissione avviata da altre app o voci. Configura l'app mittente in modo che venga avviata da un intent creato dall'SDK Cast.

Ad esempio, quando si utilizza la voce per avviare una sessione di trasmissione, l'SDK di trasmissione crea una notifica che consente a un utente di controllare la riproduzione su tutti i telefoni Android sulla stessa rete. Quando viene toccata la notifica, l'SDK Cast crea l'intenzione di lanciare la tua app per partecipare alla sessione di trasmissione.

Vedi l'esempio di CastVideo-Android per un'implementazione funzionante dell'intenzione di partecipare.

Utilizzo di un mittente Android

Per attivare questa funzionalità, svolgi i seguenti passaggi nella tua app:

Assicurati che la tua app utilizzi già la versione dell'SDK Android Sender successiva alla 11.4.0. In 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 gestire l'intent. L'intento verrà utilizzato dalle notifiche di controllo remoto (RCN) per lanciare l'app e partecipare a una sessione di trasmissione. Ti consigliamo di utilizzare l'attività in cui è ospitato SessionManagerListener e di chiamare onSessionStarted() o onSessionStartFailed(). Assicurati che il nuovo filtro per intent sia univoco in tutto il sistema Android. Ti consigliamo di utilizzare il tag <data> per farlo:

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

Per utilizzare la funzionalità Intent di unione, l'URI dell'app e il nome del pacchetto devono essere aggiunti nella Console per gli sviluppatori di Google Cast.

Affinché l'intent possa partecipare correttamente, è necessario che anche il destinatario sia in elenco e pubblicato.

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

Dopo la configurazione, puoi testare l'implementazione con le Notifiche di controllo remoto (RCN) come segue:

  1. Installa l'app Google Home su un telefono Android e connettiti alla rete Wi-Fi dal 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) o un altro dispositivo Android o iOS oppure tramite comandi vocali e controlla se è stata avviata l'app Ricevitore web.
  4. Aspetta qualche secondo per ricevere RCN sul telefono e tocca la notifica per attivare l'intent. L'intent deve essere trasmesso a qualsiasi app che registra l'intent con i dati richiesti per partecipare alla sessione.

SessionManagerListener.onSessionStarted(T, String) verrà attivato e verrà visualizzato nella sessione.

Verifica

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