Intenzione di partecipare

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

Ad esempio, se viene utilizzata la voce per avviare una sessione di trasmissione, l'SDK Cast crea un'immagine notifica che consente a un utente di controllare la riproduzione su tutti gli smartphone Android sulla stessa rete. Quando viene toccata la notifica, l'SDK Cast crea la avviare la tua app per partecipare alla sessione di trasmissione.

Consulta le CastVideo - Esempio per Android per un'implementazione funzionante di Intent to Join.

Utilizzo di un mittente Android

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

Assicurati che la tua app utilizzi già una versione dell'SDK Android Sender successiva a 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. La verrà utilizzato da Remote Control Notifications (RCN) per avviare l'app e partecipare a una sessione di trasmissione. Ti consigliamo di utilizzare l'attività in cui SessionManagerListener in hosting e onSessionStarted() o onSessionStartFailed() . Assicurati che il nuovo filtro per intent sia univoco nell'intero sistema Android. Me 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, richiama SessionManager.startSession(Intent) tra 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à Intent to Join, l'URI dell'app e il nome del pacchetto devono essere aggiunto nel Console per gli sviluppatori di Google Cast.

Inoltre, il destinatario deve essere in elenco e pubblicato affinché Intent to join funzioni correttamente.

Per visualizzare la tua app, imposta l'opzione di inserimento nell'elenco su "SÌ" e fornire un titolo, e un'immagine di 512 x 512 per l'app.

Dopo la configurazione, puoi testare l'implementazione con le notifiche del telecomando (RCN) come di seguito:

  1. Installa l'app Google Home su uno smartphone Android e connettiti al Wi-Fi sulla telefono.
  2. Il dispositivo compatibile con Google Cast configura il dispositivo Google Home con la stessa rete.
  3. Avvia una sessione di trasmissione con il dispositivo Google Home utilizzando: Strumento Comando e controllo (CaC), da un altro dispositivo Android o iOS oppure tramite comandi vocali e controlla se il ricevitore web viene avviata l'app.
  4. Attendi qualche secondo per ricevere RCN sullo smartphone e tocca la notifica per attivino l'intento. L'intent deve essere trasmesso a qualsiasi app che registra l'intent con i dati richiesti per partecipare alla sessione.

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

Verifica

Se la tua app partecipa alla sessione, SessionManagerListener.onSessionStarted(T, String) . Altrimenti, SessionManagerListener.onSessionStartFailed(T, int) . Supponendo che la tua app gestisca già questi eventi correttamente (ad ad esempio l'avvio di un controller espanso o di un mini controller), non è necessario fare altro.