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
arayüzü.
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.