Katılma Amacı

"Intent to Join", Android Gönderen'in yeni bir özelliğidir. Bu özellik, gönderen uygulamasının başka uygulamalar veya ses tarafından başlatılan bir Cast oturumuna "katılmasına" olanak tanır. Gönderen uygulamanızı, Cast SDK'sı tarafından oluşturulan bir niyet tarafından başlatılacak şekilde ayarlarsınız.

Örneğin, Cast SDK'sı bir Cast oturumu başlatmak için ses kullanıldığında kullanıcının aynı ağdaki tüm Android telefonlarda oynatmayı kontrol etmesine olanak tanıyan bir bildirim oluşturur. Bildirime dokunulduğunda Cast SDK, uygulamanızı Cast oturumuna katılmak için başlatma niyetini oluşturur.

Intent to Join'in çalışan bir uygulaması için CastVideos-Android örneğine bakın.

Android Gönderen Kullanma

Bu özelliği etkinleştirmek için uygulamanızda aşağıdaki adımları uygulayın:

Uygulamanızın zaten Android Gönderen SDK'sının 11.4.0'dan sonraki bir sürümünü kullandığından emin olun. build.gradle ürününde:

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

Amacı işlemek istediğiniz bir etkinliğe yeni bir intent filtresi ekleyin. Amaç, uygulamanızı başlatmak ve bir Yayın oturumuna katılmak için Uzaktan Kumanda Bildirimleri (RCN) tarafından kullanılır. SessionManagerListener barındırıldığı ve onSessionStarted() veya onSessionStartFailed() çağrılacak olan etkinliği kullanmanızı öneririz. Yeni intent filtresinin tüm Android sistemi genelinde benzersiz olduğundan emin olun. Bunun için <data> etiketini aşağıdaki şekilde kullanmanızı öneririz:

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

<data> etiketi örnekleri:

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

Yeni amaç filtresini tanımladığınız etkinlikte, onResume() içinde SessionManager.startSession(Intent) çağrısı yapın:

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);
    }
    ...
}

Google Cast Geliştirici Konsolu kurulumu

Katılma Amacı özelliğini kullanmak için uygulama URI'si ve paket adı Google Cast Developer Console'da eklenmelidir.

Ayrıca alıcınızın, Katılma Amacıyla düzgün şekilde çalışması için listelenip yayınlanmış olması gerekir.

Uygulamanızı listelemek için listeleme seçeneğini "EVET" olarak değiştirin ve uygulamanız için bir başlık, açıklama ve 512x512 boyutunda bir grafik ekleyin.

Kurulumdan sonra, uygulamayı Uzaktan Kumanda Bildirimleri (RCN) ile aşağıdaki gibi test edebilirsiniz:

  1. Google Home uygulamasını bir Android telefona yükleyin ve telefonda kablosuz ağa bağlanın.
  2. Cast uyumlu cihaz, Google Home cihazını aynı ağ altında kurar.
  3. Komut ve Kontrol Aracı (CaC) Aracı kullanarak, başka bir Android veya iOS cihazı kullanarak ya da sesle Google Home cihazıyla bir Yayın oturumu başlatın ve Web Alıcısı uygulamasının başlatılıp başlatılmadığını kontrol edin.
  4. Telefonda RCN'yi etkinleştirmek için birkaç saniye bekleyin ve niyeti tetiklemek için bildirime dokunun. Niyet, oturuma katılmak için gerekli verilerle birlikte niyeti kaydeden tüm uygulamalara yayınlanmalıdır.

SessionManagerListener.onSessionStarted(T, String) tetiklenir ve oturuma katılır.

Doğrulama

Uygulamanız oturuma başarıyla katılırsa SessionManagerListener.onSessionStarted(T, String) çağrılır. Aksi takdirde SessionManagerListener.onSessionStartFailed(T, int) çağrılır. Uygulamanızın bu etkinlikleri zaten düzgün bir şekilde işlediğini varsayarsak (örneğin, genişletilmiş kumandayı veya mini kumandayı başlatmak) başka bir işlem yapmanız gerekmez.