Aşağıdaki şemada Medya ile etkileşime giren bileşenler gösterilmektedir:
Şekil 1. Sistem bileşenleri
Bu şekildeki öğeler tabloda açıklanmıştır:
Bileşen | Tanım |
---|---|
Ana ekran | Araç kullanıcı arayüzünde o anda oynatılan medyayı görüntüleyen ve kontrol eden diğer yüzeyleri temsil eder. AOSP'de sistem başlatıldığında görüntülenen ana ekrandır. Kullanıcılar bu ekrandan oynatılan medya öğesinin ayrıntılarını görüntüleyebilir ve sınırlı sayıda standart ve özel eylem (örneğin Oynat ve Duraklat) gerçekleştirebilir. |
Sistem kullanıcı arayüzü | Medyaya gitmek gibi genel kullanıcı arayüzü gezinme seçeneklerini içeren işlevsellik sağlar. |
Asistanlar | Android, farklı sesli asistan uygulamalarının sistemle etkileşime girmesi için mekanizmalar sağlar. Bu uygulamalar arka planda Medya Kaynakları ile etkileşime girebilir (örneğin, sesli komutun sonucu olarak bir şarkıyı çalmak) veya ön planda Medya'ya gidebilir (örneğin, bir sesli asistan uygulamasına bir cihazın kullanıcı arayüzünü görüntülemesi talimatı verildiğinde). belirli Medya Kaynağı). |
Uygulama Başlatıcı | Medya Kaynakları dahil tüm Android uygulamaları Uygulama Başlatıcı'da başlar. Medya, medya için başlangıç yeri olarak Uygulama Başlatıcıyı tamamlayan veya onun yerini alan kendi Medya Kaynağı seçicisini sunabilir. |
Google Oyun mağazası | GAS kullanıldığında, burası kullanıcıların Android cihazında yeni uygulamaları bulup yüklediği yerdir. Medya için, uygulamalar yüklendikten sonra kullanıcılar, oturum açma işlemini tamamlamaları veya uygulamayla etkileşim kurmaya başlamaları için Medya'ya yönlendirilir. |
Medya Oturum Yöneticisi | Tüm medya kaynaklarından medya oturumlarını izleyen ve kontrol eden Android sistem hizmeti. Bir Medya Kaynağının ne zaman ön plandaki medya kaynağı haline geldiğini tespit edecek mekanizmalar sağlar. Medya ve o anda oynatılan medya kaynağını (örneğin Ana ekran) görüntüleyen tüm diğer uygulamalar, bu olayları tespit etmek ve kullanıcı arayüzünü buna göre güncellemek için Medya Oturum Yöneticisi'ni kullanır. Medya Kaynakları, Medya Oturumu API'si aracılığıyla Medya Oturumu Yöneticisi ile etkileşime girer. |
Radyo | Radyo donanımıyla etkileşime geçmek için özel uygulama. Radyo, radyo istasyonlarını arar, en son tanımlanan istasyonları hızla seçer ve radyo bantları arasında geçiş yapar. Hem Radyo hem de Medya tarafından paylaşılan kullanıcı arayüzü bileşenleri, kullanıcının iki deneyim arasında geçiş yapmasına olanak tanır. |
Sürücü Dikkat Dağıtma Motoru | Arabanın sürüş durumuna göre UX kısıtlamaları uygulamak için kullanılan Android sistem hizmeti. Medya kaynaklarında oturum açma ve UX ayarları (ekranın doğrudan medya kaynakları tarafından kontrol edildiği yer) için bu hizmet, araç sürüş durumundayken güvenli olmayan içeriğin görüntülenmemesini sağlar. OEM'ler bu durumların tanımını ve sistemin bu durumlarda nasıl tepki vereceğini özelleştirebilir (örneğin, bir engelleme ekranı katmanı görüntüleyerek). |
Kullanıcı akışları
Medya uygulamasının başlatılması
Medyayı başlatan süreç aşağıda görünmektedir.
Şekil 2. Medya uygulamasının başlatılması
Medya aşağıdaki örtülü CAR_INTENT_ACTION_MEDIA_TEMPLATE
kullanılarak başlatılmalıdır. Bu niyette ekstra olarak aşağıdaki bilgiler bulunabilir:
android.car.intent.extra.MEDIA_COMPONENT
( isteğe bağlı ). Medyanın bağlanacağı medya uygulamasındakiMediaBrowserService
düzleştirilmiş bileşen adını temsil eden ekstra dize. Sağlanmazsa Medya, o anda seçili olan medya uygulamasını görüntüler. Bu amaç aşağıdaki giriş noktalarından kullanılır:Sistem kullanıcı arayüzü. Medya deneyimine dönmek veya ilk kez kullanmaya başlamak için kullanılır. Bu durumda, Media'nın seçili medya uygulamasını görüntülemesini sağlamak için yukarıdaki Amaç herhangi bir ekstra olmadan kullanılacaktır.
Ana Ekran, Asistanlar ve Bildirim Merkezi. Kullanıcılar mevcut seçili medya uygulamasını görüntülemek için Medya'ya gidebilir. Her durumda, ekstralar olmadan örtülü Intent tetiklenir.
Uygulama Başlatıcı. Kullanıcılar Uygulama Başlatıcı'dan bir medya uygulaması seçtiğinde yukarıdaki amaç, seçilen medya uygulamasını içeren
CAR_EXTRA_MEDIA_COMPONENT
ekstrasını içerir. Medya bunu yeni seçilen uygulama olarak belirler ve ona bağlanır. Ayrıntılar için aşağıdaki Uygulama Başlatıcıdan Medya entegrasyonuna bakın.
Uygulama başlatıcıdan Medya entegrasyonuna
Medya uygulamalarının android.intent.category.LAUNCHER
kategorisiyle açıklamalı herhangi bir etkinlik sağlamasına izin verilmez. Sonuç olarak, Uygulama Başlatıcının (veya eşdeğerinin) medya kaynağı entegrasyonunu ele almak için özel bir mantık uygulaması gerekir:
Uygulama Başlatıcı,
MediaBrowserService.SERVICE_INTERFACE
uygulayan paketler için sistemi taramalıdır. Bu paketler için Uygulama Başlatıcı, diğer etkinlikleri getirmek için kullanılana benzer hizmet simgesini getirir.Uygulama Başlatıcı daha sonra bu paketleri
android.intent.category.LAUNCHER
etkinliklerini uygulayan paketlerle birleştirir. Bir uygulamaMediaBrowserService
uygulaması ve başlatıcı etkinliği sağlıyorsa hizmet önceliklidir.Bu yazının yazıldığı an itibarıyla hiçbir medya kaynağı uygulaması başlatıcı etkinliği sağlayamıyor.
- Bu mantığın bir örneğini
AppLauncherUtils#getAllLauncherApps()
adresindeki AOSP kodunda bulabilirsiniz.
Oturum açma akışı ve yapılandırma seçenekleri
Medya uygulamaları, araca göre optimize edilmiş Ayarlar etkinliği içerebilir. Böyle bir etkinlik, Android Media API'leri tarafından ele alınmayan kullanıcı akışlarını uygulamak için kullanılabilir, örneğin:
- Kayıt olmak
- Oturumu Kapat
- Hesap değiştirme
- Kullanıcının şu anda hangi oturum açmış olduğunu görüntüleyin (varsa)
- Hizmet yapılandırması
Şekil 3. Oturum açma akışı
Bu Ayarlar etkinliği, medya uygulaması tarafından aşağıdaki amaç filtresiyle bildirilir:
<activity android:name=".AppSettingsActivity" android:exported="true android:theme="@style/SettingsActivity" android:label="@string/app_settings_activity_title"> <intent-filter> <action android:name="android.intent.action.APPLICATION_PREFERENCES"/> </intent-filter> </activity>
Medya aşağıdaki mantığı uygulamalıdır:
Şu anda seçili medya uygulamasının belirtilen Amaç Filtresine sahip bir etkinlik içerip içermediğini kontrol edin.
Öyleyse kullanıcının etkinliğe gitmesine izin verin.
Araç UX Kısıtlamaları etkinse (örneğin, araç hareket ediyorsa), Ayarlar etkinliği Sürücü İçin Optimize Edilmiş Kullanıcı Arayüzü olmadığı için bu olanak devre dışı bırakılmalıdır.
Hata işleme ve gerekli oturum açma
Medya, Android Medya Oturumu API'si aracılığıyla medya uygulamalarıyla etkileşime girer. Bu API'nin bir parçası olarak Media, medya uygulamasının geçerli durumunu ileten bir PlaybackState
nesnesi alır.
Oturum açma işlemi, medya uygulaması PlaybackState
belirli bir hata koduyla birlikte STATE_ERROR
olarak değiştirdiğinde başlar (aşağıdaki ayrıntılara bakın). Bu durumda Media, hata açıklamasını ve medya uygulaması tarafından uygulanan oturum açma etkinliğine gitme olanağını görüntüler.
Aynı akış, uygulamalar tarafından diğer hata durumlarını (örneğin, sunucu bağlantı hatası) bildirmek için kullanılabilir.
Şekil 4. Hata yönetimi
Normal PlaybackState
hata işlemenin bir parçası olarak Media'nın aşağıdaki girişi kontrol etmesi gerekir.
PlaybackState
hata koduPlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED
eşittir. Bu, medya uygulamasının çalışmaya devam etmek için oturum açmayı gerektirdiğini gösterir. Diğer hata durumlarını gösteren başka hata kodları alınabilir.PlaybackState
hata mesajı (PlaybackStateCompat.Builder#setErrorMessage
yöntemini kullanan medya uygulamaları tarafından ayarlanır), insanlar tarafından okunabilen bir açıklama içerir (örneğin, "Oturum açmadınız."). Bu mesaj kullanıcıya görüntülenmeli ve dikkat dağıtmayı optimize edecek şekilde olmalıdır (DO).İsteğe bağlı olarak
PlaybackState
, aşağıdaki tuşlarla aşağıdaki ekstraları (PlaybackStateCompat.Builder#setExtras
yöntemiyle medya uygulamaları tarafından ayarlanır) içerebilir.android.media.extras.ERROR_RESOLUTION_ACTION_LABEL
. Oturum açma akışını başlatmak için kullanıcının dokunduğu düğmede görüntülenecek, insanların okuyabileceği mesajı içeren bir dizeye ayarlayın.android.media.extras.ERROR_RESOLUTION_ACTION_INTENT
. Kullanıcı yukarıda belirtilen düğmeye tıkladığında tetiklenecek birPendingIntent
ile ayarlayın. BuPendingIntent
aynı medya uygulaması tarafından uygulanan özel bir oturum açma etkinliğine işaret eder.
PlaybackState
durumuSTATE_ERROR
eşittir. Bu, oturum açma işlemi tamamlanana kadar başka bir işlemin mümkün olmadığını gösterir.