Intención de unirse

"Intención de unirse" es una nueva función de Android Sender que permite que un la app del remitente debe “unirse” una sesión de transmisión iniciada por otras aplicaciones o voz. Configuraste tu app emisora para que se inicie con un intent creado por Cast de Google Cloud.

Por ejemplo, cuando usas la voz para iniciar una sesión de transmisión, el SDK de Cast crea un notificación que permite al usuario controlar la reproducción en todos los teléfonos Android en la misma red. Cuando se presiona la notificación, el SDK de Cast crea la iniciar tu app para unirse a la sesión de transmisión.

Consulta la Ejemplo de CastVideos-Android para realizar una implementación funcional de la intención de unirse.

Cómo usar un remitente de Android

Para habilitar esta función, sigue estos pasos en la app:

Asegúrate de que tu app use una versión del SDK de Android Sender posterior a 11.4.0. En build.gradle:

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

Agrega un filtro de intents nuevo a una actividad en la que quieras controlar el intent. El las notificaciones de Control remoto (RCN) usarán el intent para iniciar tu app y unirte a una sesión de transmisión. Te recomendamos que uses la actividad SessionManagerListener está alojado y onSessionStarted() o onSessionStartFailed() se llamará. Asegúrate de que el nuevo filtro de intents sea único en todo el sistema Android. Mié te recomendamos que uses la etiqueta <data> para hacerlo, de la siguiente manera:

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

Ejemplos de la etiqueta <data>:

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

En la actividad en la que defines el nuevo filtro de intents, llama a SessionManager.startSession(Intent) en 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);
    }
    ...
}

Configuración de Google Cast Developer Console

Para utilizar la función de intención de unirse, el URI de la aplicación y el nombre del paquete deben agregado en la Consola para desarrolladores de Google Cast.

Tu receptor también debe estar en la lista y publicado para que funcione la intención de unirse. correctamente.

Para incluir tu app en la lista, activa la opción "SÍ" en la ficha. y le proporcionas un título, y un gráfico de 512 x 512 para la app.

Después de la configuración, puedes probar la implementación con las notificaciones del control remoto (RCN), como se muestra a continuación:

  1. Instala la app de Google Home en un teléfono Android y conéctate a Wi-Fi en el teléfono.
  2. El dispositivo compatible con Cast configura el dispositivo Google Home en la misma red.
  3. Inicia una sesión de transmisión con el dispositivo Google Home a través del Herramienta de comando y control (CaC), desde otro dispositivo Android o iOS, o a través de la voz y comprueba si el receptor web se inicia la app.
  4. Espera unos segundos para que RCN aparezca en el teléfono y toca la notificación para activar el intent. El intent debe transmitirse a cualquier app que registra el intent con los datos requeridos para unirse a la sesión.

SessionManagerListener.onSessionStarted(T, String) se activará y podrás unirte a la sesión.

Verificación

Si tu app se une a la sesión correctamente, SessionManagerListener.onSessionStarted(T, String) se llama. De lo contrario, SessionManagerListener.onSessionStartFailed(T, int) se llama. Si suponemos que tu app ya maneja esos eventos correctamente (por como lanzar un control expandido o un minicontrol), no es necesario hacer algo más.