Podobne zamiar

„Intent to Dołącz” to nowa funkcja w aplikacji Android Sender, która pozwala aplikacji nadawcy na „dołączenie” do sesji przesyłania zainicjowanej przez inne aplikacje lub głos. Konfigurujesz aplikację nadawcy tak, aby uruchamiała się przez intencję utworzoną przez pakiet SDK Cast.

Jeśli na przykład rozpoczynasz sesję przesyłania za pomocą głosu, SDK Cast tworzy powiadomienie, które pozwala użytkownikowi kontrolować odtwarzanie na wszystkich telefonach z Androidem w tej samej sieci. Po kliknięciu powiadomienia SDK Cast tworzy zamiar uruchomienia aplikacji, by dołączyć do sesji przesyłania.

Informacje o prawidłowej implementacji funkcji Intent to Join znajdziesz w tym przykładzie Cast z Androidem.

Nadawca na Androidzie

Aby włączyć tę funkcję, wykonaj te czynności w aplikacji:

Sprawdź, czy Twoja aplikacja korzysta z pakietu Android Sender SDK w wersji nowszej niż 11.4.0. W build.gradle:

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

Dodaj nowy filtr intencji do działania, w którym chcesz obsłużyć intencję. Zostanie ona użyta przez powiadomienia zdalnego sterowania (RCN) do uruchamiania aplikacji i dołączania do sesji przesyłania. Zalecamy użycie działania, w którym hostowana jest usługa SessionManagerListener, i powstanie wywołania onSessionStarted() lub onSessionStartFailed(). Upewnij się, że nowy filtr intencji jest unikalny w całym systemie Android. Zalecamy użycie tagu <data> w ten sposób:

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

Przykłady tagu <data>:

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

W aktywności, w której określisz nowy filtr intencji, wywołaj SessionManager.startSession(Intent) w 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);
    }
    ...
}

Konfiguracja konsoli programisty Google Cast

Aby użyć funkcji „Intent to Join”, musisz dodać identyfikator URI aplikacji i nazwę pakietu w Konsoli Google Cast.

Aby zamiar dołączyć, odbiorca musi też być wymieniony na liście i opublikowany.

Aby wyświetlić aplikację, przełącz opcję informacji na „TAK”, a następnie podaj tytuł, opis i grafikę w rozmiarze 512 x 512.

Po skonfigurowaniu możesz przetestować implementację za pomocą powiadomień zdalnego sterowania (RCN), jak pokazano poniżej:

  1. Zainstaluj aplikację Google Home na telefonie z Androidem i połącz się z Wi-Fi na telefonie.
  2. Urządzenie obsługujące Cast skonfiguruje urządzenie Google Home w tej samej sieci.
  3. Zainicjuj sesję przesyłania na urządzeniu Google Home za pomocą narzędzia poleceń i sterowania (CaC), innego urządzenia z Androidem lub iOS albo głosowo i sprawdź, czy aplikacja Web pickupr jest uruchomiona.
  4. Poczekaj kilka sekund na połączenie z RCN na telefonie, a następnie dotknij powiadomienia, aby wywołać intencję. Intencja powinna być przekazywana do każdej aplikacji, która rejestruje intencję z wymaganymi danymi do dołączenia do sesji.

Uruchomi się kod SessionManagerListener.onSessionStarted(T, String) i dołączy do sesji.

Weryfikacja

Jeśli aplikacja dołączy do sesji, wywoływana jest metoda SessionManagerListener.onSessionStarted(T, String). W przeciwnym razie SessionManagerListener.onSessionStartFailed(T, int) jest wywoływana. Zakładając, że aplikacja prawidłowo obsługuje te zdarzenia (np. uruchamia już rozwinięty kontroler lub minikontroler), nie musisz robić nic więcej.