Cast SDK v2'den Android Gönderen Uygulamasını Cast Uygulama Çerçevesi'ne (CAF) Taşıma

Aşağıdaki prosedür, Android gönderen uygulamanızı Cast'ten dönüştürmenize olanak tanır. CAF Sender'a (CAF Gönderen) dayalı olarak CastContext singleton.

Cast CAF Gönderen SDK'sı, GoogleAPIClient'ı sizin adınıza yönetmek için CastContext'i kullanır. CastContext yaşam döngülerini, hataları ve geri çağırmaları sizin için yönetir. bir Cast uygulaması geliştirmeyi basitleştirir.

Giriş

  • CAF Sender, Google Play Hizmetleri'nin bir parçası olarak dağıtılmaya devam ediyor Android SDK yöneticisini kullanarak
  • Politikalara uyma sorumluluğunu üstlenen yeni paketler eklendi Google Cast Tasarımı kontrol listesi (com.google.android.gms.cast.framework.*)
  • CAF Sender, Cast kullanıcı deneyimi şartlarına uygun widget'lar sağlar; v2, hiçbir kullanıcı arayüzü bileşeni sağlamamış ve bu bileşenleri uygulamanızı widget'lar.
  • Cast API'yi kullanmak için artık GoogleApiClient'ın kullanımı gerekli değildir.
  • CAF Sender'daki altyazı özelliği v2'ye benzer.

Bağımlılıklar

V2 ve CAF, destek kitaplıklarında ve Google Play'de aynı bağımlılıklara sahiptir. hizmetlerini (9.2.0 veya üzeri) destekleyen Destek Kitaplığı Özellikleri Rehber

CAF'nin desteklediği minimum Android SDK sürümü 9'dur (Gingerbread).

Başlatma

CAF'de Cast çerçevesi için açık bir başlatma adımı gereklidir. Bu ilk adım olarak CastContext. tekli anahtar kelime, uygun bir OptionsProvider Web Alıcısı uygulama kimliğini ve diğer genel seçenekleri belirtin.

public class CastOptionsProvider implements OptionsProvider {

    @Override
    public CastOptions getCastOptions(Context context) {
        return new CastOptions.Builder()
                .setReceiverApplicationId(context.getString(R.string.app_id))
                .build();
    }

    @Override
    public List<SessionProvider> getAdditionalSessionProviders(Context context) {
        return null;
    }
}

OptionsProvider öğesini "application" (başvuru) sayfasında beyan edin uygulamanın etiketi AndroidManifest.xml dosyası:

<application>
...
    <meta-data
        android:name=
            "com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
        android:value="com.google.sample.cast.refplayer.CastOptionsProvider" />
</application>

Her etkinliğin onCreate yönteminde CastContext özelliğini geç başlatın:

private CastContext mCastContext;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.video_browser);
    setupActionBar();

    mCastContext = CastContext.getSharedInstance(this);
}

Bu adımlar v2'de gerekli değildi.

Cihaz bulma

CAF'de keşif süreci Google Ads tarafından arka plana gittiğinde arka planda çalışır. tıklayın. MediaRouteSelector ve MediaRouter.Callback olmamalıdır kullanılır.

Yayınla düğmesi ve Yayınla iletişim kutusu

v2'de olduğu gibi, bu bileşenler MediaRouter desteği tarafından sağlanır kitaplığı'nda bulabilirsiniz.

Yayın düğmesi hâlâ MediaRouteButton. ve etkinliğinize eklenebilir ( ActionBar veya Toolbar), menünüzde menü seçeneği olarak kullanabilirsiniz.

<item
    android:id="@+id/media_route_menu_item"
    android:title="@string/media_route_menu_title"
    app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
    app:showAsAction="always"/>

Her Etkinliğin onCreateOptionMenu() yöntemini aşağıdakileri kullanarak geçersiz kılın: CastButtonFactory MediaRouteButton cihazını Cast çerçevesine bağlamak için:

private MenuItem mediaRouteMenuItem;

public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.browse, menu);
    mediaRouteMenuItem =
        CastButtonFactory.setUpMediaRouteButton(getApplicationContext(),
                                                menu,
                                                R.id.media_route_menu_item);
    return true;
}

Bir kullanıcı düğmeye dokunduğunda, Yayınla iletişim kutusu otomatik olarak gösterilir.

Cihaz kontrolü

CAF'de cihaz kontrolü büyük ölçüde çerçeve tarafından yönetilir. Gönderen uygulamanın başlatmak ve Web Alıcısı uygulamasını başlatmak için GoogleApiClient Gönderen ve Web Alıcı arasındaki etkileşim artık temsil ediliyor "oturum" olarak nitelendirilir. İlgili içeriği oluşturmak için kullanılan SessionManager class, oturum yaşam döngüsünü yönetir ve oturumları otomatik olarak başlatıp durdurur kullanıcı hareketlerine yanıt olarak: Kullanıcı bir Yayınla düğmesini seçtiğinde bir oturum başlatılır cihazındaki yayın düğmesi gösterilir. Gönderen oturum yaşam döngüsü olayları hakkında bilgi almak için SessionManagerListener SessionManager ile. SessionManagerListener geri çağırmaları, tüm oturum yaşam döngüsü etkinlikleri için geri çağırma yöntemleridir.

İlgili içeriği oluşturmak için kullanılan CastSession sınıfı, yayın cihazı içeren bir oturumu temsil eder. Sınıfta Daha önce v2'de yapılıyordu. Bu işlem, cihazın ses düzeyini ve sesini kapatma durumlarını kontrol ediyor. (Cast.CastApi uygulamasında yöntemleri kullanarak).

v2'de Cast.Listener geri arama özelliği, şunlar da dahil olmak üzere cihaz durumundaki değişikliklerle ilgili bildirimler sağladı: ses seviyesi, sesi kapatma durumu, bekleme durumu vb.

CAF'de ses düzeyi/sesi durumu değişikliği bildirimleri, geri arama aracılığıyla teslim edilmeye devam eder Cast.Listener kapsamındaki yöntemler; kayıtlı olduğu kadar CastSession Diğer cihaz durumu bildirimlerinin tümü CastStateListener geri çağırma; bu dinleyiciler CastSession kapsamında kayıtlıdır. Şunları yaptığınızdan emin olun: ilişkili parçalar, etkinlikler veya uygulamalar gittiğinde dinleyicilerin kaydını silmeye devam etme kullanabilirsiniz.

Yeniden bağlanma mantığı

CAF, v2'de olduğu gibi geçici kablosuz sinyal kaybı veya diğer ağ hatalarından dolayı kaybedilir. Bu artık pek çok farklı görev bulunur. bir oturum "askıya alınmış" bağlantı kesildi ve tekrar "bağlı" durumuna geçecek eyalet Bağlantı yeniden kuruldu. Bu çerçeve, yeniden pazarlamayla Bu işlemin bir parçası olarak tüm Yayın kanallarını yeniden bağlamanız gerekir.

Ayrıca, CAF, bir kullanıcı tarafından etkinleştirilen otomatik oturum devam ettirme işlevi de ekler. varsayılandır (ve şu yöntemle devre dışı bırakılabilir: CastOptions. Gönderen uygulama arka plana gönderilirse veya sonlandırılırsa ( sağa doğru hızlıca kaydırma veya kilitlenme nedeniyle kayma) çerçeve, gönderen uygulaması bu oturumu devam ettirdiğinde Ön plana geri döndüğünde veya yeniden başlatıldığında; bu işlem, SessionManager: Bu özellik, kayıtlı olan tüm cihazlarda uygun geri aramaları yapar SessionManagerListener örnek.

Özel kanal kaydı

v2'de, özel kanallar ( Cast.MessageReceivedCallback) Cast.CastApi kapsamında kayıtlıdır. CAF'de özel kanallar bunun yerine CastSession örneği. Kayıt işlemi SessionManagerListener.onSessionStarted geri çağırma yöntemini kullanın. Medya uygulamalarında, verilerin her zaman açık bir şekilde Medya kontrol kanalını Cast.CastApi.setMessageReceivedCallbacks üzerinden kaydetmelidir; daha ayrıntılı bilgi için aşağıdaki bölüme bakın.

Medya kontrolü

v2 sınıfı RemoteMediaPlayer desteği sonlandırılmıştır ve kullanılmamalıdır. CAF'de ise yerini yeni RemoteMediaClient sınıfını kullanabilirsiniz. Evet bu nesneyi açıkça başlatmak veya kaydetmek için gerekli değildir; çerçeve nesneyi otomatik olarak somutlaştırır ve alttaki medyayı oturum başlangıç zamanında bir kanal oluşturun. medya ad alanını destekler.

RemoteMediaClient uygulamasına CastSession nesnesinin getRemoteMediaClient yöntemi.

v2'de, RemoteMediaPlayer'de gönderilen tüm medya istekleri bir PendingResult geri aramasıyla RemoteMediaPlayer.MediaChannelResult.

CAF'de, RemoteMediaClient tarihinde yayınlanan tüm medya istekleri bir RemoteMediaClient.MediaChannelResult aracılığıyla PendingResult sürecin ilerlemesini ve nihai sonucunu izlemek için kullanabileceğiniz isteği gönderin.

RemoteMediaPlayer sürümü, medyadaki değişikliklerle ilgili bildirim gönderir oynatıcı durumuna sahip verileri RemoteMediaPlayer.OnStatusUpdatedListener.

CAF'de RemoteMediaClient, RemoteMediaClient.Listener kullanır. RemoteMediaClient; birden fazla gönderen bileşeninin oturumla ilişkilendirilen tek bir RemoteMediaClient örneği.

Sürüm 2'de, gönderen uygulamanın, kullanıcıyı Google'a ait olmayan arayüzü, Web Alıcısı'ndaki medya oynatıcı durumuyla senkronize edilmiştir.

CAF'de ise UIMediaController bu sorumluluğun çoğunu üstleniyor.

Tanıtım yer paylaşımı

V2, yer paylaşımlı tanıtım kullanıcı arayüzü sağlamaz.

CAF, özel bir görünüm sağlar IntroductoryOverlay kullanıcılara ilk kez gösterildiğinde Yayınla düğmesini vurgulamanızı sağlar.

Mini kumanda

Sürüm 2'de, gönderen uygulamasında sıfırdan bir mini kumanda kullanmanız gerekir.

CAF'de SDK, özel bir görünüm sağlar. MiniControllerFragment, Bu öğeleri, ziyaret ettiğiniz etkinliklerin uygulama düzeni dosyasına mini kumandayı gösterin.

Bildirim ve kilit ekranı

2. sürümde, bildirim ve kilit ekranı denetleyicileri SDK tarafından sağlanmaz. Söz konusu SDK için bu özellikleri Android çerçevesi API'leri.

CAF'de SDK, NotificationsOptions.Builder bildirim ve kilit ekranı için medya denetimleri oluşturmanıza yardımcı olur gönderen uygulamasına gönderebilirsiniz. Bildirim ve kilit ekranı kontrolleri etkinleştirilebilir şununla: CastOptions şu işlemi yapıyor: CastContext.

public CastOptions getCastOptions(Context context) {
    NotificationOptions notificationOptions = new NotificationOptions.Builder()
            .setTargetActivityClassName(VideoBrowserActivity.class.getName())
            .build();
    CastMediaOptions mediaOptions = new CastMediaOptions.Builder()
            .setNotificationOptions(notificationOptions)
            .build();

    return new CastOptions.Builder()
            .setReceiverApplicationId(context.getString(R.string.app_id))
            .setCastMediaOptions(mediaOptions)
            .build();
}

Genişletilmiş denetleyici

v2'de, sıfırdan yeni bir genişletilmiş denetleyici uygulamanız gerekir. gönderen uygulaması.

CAF, UIMediaController geliştirmenizi kolaylaştıracak bir yardımcı sınıfla denetleyici.

CAF, önceden oluşturulmuş genişletilmiş bir denetleyici widget'ı ekler ExpandedControllerActivity veya uygulamanıza eklemeniz yeterlidir. Artık yapmanız gereken UIMediaController kullanarak özel bir genişletilmiş denetleyici uygulayın.

Ses odağı

2. sürümde, ses odağını yönetmek için MediaSessionCompat kullanmanız gerekir.

CAF'de ses odağı otomatik olarak yönetilir.

Hata ayıklama günlük kaydı

CAF'de günlük kaydı seçeneği yoktur.

Örnek uygulamalar

Şu anda codelab eğiticileri ve örnek uygulamalar reklam grupları oluşturabilirsiniz.