Aşağıdaki şemada, Media ile etkileşime geçen bileşenler gösterilmektedir:
Şekil 1. Sistem bileşenleri
Bu şekildeki öğeler tabloda açıklanmaktadır:
Bileşen | Açıklama |
---|---|
Ana ekran | Araç kullanıcı arayüzünde, oynatılan medyayı gösteren ve kontrol eden diğer yüzeyleri temsil eder. AOSP'de bu, sistem başladığı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 işlem (ör. Oynat ve Duraklat) gerçekleştirebilir. |
Sistem kullanıcı arayüzü | Medya'ya gitme gibi genel kullanıcı arayüzü gezinme seçeneklerini içeren işlevler sağlar. |
Asistanlar | Android, farklı sesli asistan uygulamalarının sistemle etkileşime geçmesi için mekanizmalar sağlar. Bu uygulamalar, arka planda medya kaynaklarıyla etkileşime geçebilir (ör. sesli komut sonucunda bir şarkı çalmak) veya ön planda medyaya gidebilir (ör. sesli asistan uygulamasına belirli bir medya kaynağının kullanıcı arayüzünü gösterme talimatı verildiğinde). |
Uygulama Başlatıcısı | Medya Kaynakları da dahil olmak üzere tüm Android uygulamaları Uygulama Başlatıcı'da başlar. Medya, kendi medya kaynağı seçicisini sunarak medya için başlangıç noktası olarak uygulama başlatıcıyı tamamlayabilir veya değiştirebilir. |
Google Play Store | GAS kullanılırken kullanıcılar Android cihazlarda yeni uygulamaları burada bulup yükler. Medya için, uygulamalar yüklendikten sonra kullanıcılar oturum açma işlemini tamamlamak veya uygulamayla etkileşime geçmeye başlamak için Medya'ya yönlendirilir. |
Medya Oturumu Yöneticisi | Tüm medya kaynaklarından medya oturumlarını izleyip kontrol eden Android sistem hizmeti. Bir medya kaynağının ön plan medya kaynağı haline geldiğini algılamak için mekanizmalar sağlar. Medya ve şu anda oynatılan medya kaynağını gösteren diğer tüm uygulamalar (ör. ana ekran), bu etkinlikleri algılamak ve kullanıcı arayüzünü buna göre güncellemek için Medya Oturumu Yöneticisi'ni kullanır. Medya Kaynakları, Media Session API aracılığıyla Media Session Manager ile etkileşim kurar. |
Radyo | Radyo donanımıyla etkileşime geçmek için özel uygulama. Radyo, radyo istasyonlarını arar, yakın zamanda tanımlanan istasyonları hızlıca 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ını sağlar. |
Driver Distraction Engine | Aracın sürüş durumuna göre kullanıcı deneyimi kısıtlamaları uygulamak için kullanılan Android sistem hizmeti. Bu hizmet, medya kaynakları oturum açma ve ayar kullanıcı deneyiminde (ekranın doğrudan medya kaynakları tarafından kontrol edildiği durumlarda) araç sürüş durumundayken güvenli olmayan içeriklerin gösterilmemesini sağlar. OEM'ler bu durumların tanımını ve sistemin bu durumlarda nasıl tepki verdiğini (ör. engelleme ekranı yer paylaşımı göstererek) özelleştirebilir. |
Kullanıcı işlemleri akışları
Medya uygulaması başlatma
Medya'yı başlatan işlem aşağıda gösterilmektedir.
Şekil 2. Medya uygulaması başlatma
Medya, aşağıdaki örtülü
CAR_INTENT_ACTION_MEDIA_TEMPLATE
kullanılarak başlatılmalıdır.
Bu intent, ek olarak aşağıdaki bilgileri içerebilir:
-
android.car.intent.extra.MEDIA_COMPONENT
(isteğe bağlı). Medyanın bağlanacağı medya uygulamasındakiMediaBrowserService
öğesinin düzleştirilmiş bileşen adını temsil eden ekstra dize. Sağlanmazsa Media, şu anda seçili olan medya uygulamasını gösterir. Bu intent aşağıdaki giriş noktalarından kullanılır:-
Sistem arayüzü. Medya deneyimine dönmek veya bu deneyimi ilk kez kullanmaya başlamak için kullanılır. Bu durumda, Media'nın şu anda seçili medya uygulamasını göstermesi için yukarıdaki Intent herhangi bir ek olmadan kullanılır.
-
Ana ekran, Asistanlar ve Bildirim Merkezi. Kullanıcılar, geçerli olarak seçili medya uygulamasını görüntülemek için Medya'ya gidebilir. Her durumda, ek içermeyen örtülü Intent tetiklenir.
-
Uygulama Başlatıcı Kullanıcılar uygulama başlatıcıdan bir medya uygulaması seçtiğinde yukarıdaki intent, seçilen medya uygulamasını içeren
CAR_EXTRA_MEDIA_COMPONENT
ekstrasını içerir. Medya, bunu yeni seçilen uygulama olarak tanımlar ve ona bağlanır. Ayrıntılar için aşağıdaki Uygulama Başlatıcı ile Medya entegrasyonu bölümüne bakın.
-
Uygulama başlatıcıdan medya entegrasyonuna
Medya uygulamalarının android.intent.category.LAUNCHER
kategorisiyle ek açıklamalı etkinlik sağlamasına izin verilmez. Sonuç olarak, uygulama başlatıcı (veya eşdeğeri) medya kaynağı entegrasyonunu ele almak için özel mantık uygulamalıdır:
-
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 bir hizmet simgesi getirir. -
Uygulama Başlatıcı, bu paketleri
android.intent.category.LAUNCHER
etkinliklerini uygulayan paketlerle birleştirir. Bir uygulamaMediaBrowserService
uygulaması ve başlatıcı etkinliği sağlıyorsa hizmet öncelikli olur.Bu makalenin yazıldığı tarih itibarıyla hiçbir medya kaynağı uygulaması başlatıcı etkinliği sağlayamaz.
- 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ş bir Ayarlar etkinliği içerebilir. Bu tür bir etkinlik, Android Media API'leri tarafından ele alınmayan kullanıcı akışlarını uygulamak için kullanılabilir. Örneğin:
- Oturum açma
- Oturumu kapatma
- Hesaplar arasında geçiş
- Kullanıcının şu anda oturum açtığı ekran (varsa)
- Hizmet yapılandırması
Şekil 3. Oturum açma akışı
Bu Ayarlar etkinliği, medya uygulaması tarafından aşağıdaki intent 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:
-
Mevcut medya uygulamasının, belirtilen Intent filtresine sahip bir etkinlik içerdiğinden emin olun.
-
Bu durumda, kullanıcının etkinliğe gitmesine izin verin.
-
Araç kullanıcı deneyimi kısıtlamaları geçerliyse (ör. araç hareket ediyorsa) Ayarlar etkinliği sürücüye göre optimize edilmiş bir kullanıcı arayüzü olmadığından bu kolaylık devre dışı bırakılmalıdır.
Hata işleme ve zorunlu oturum açma
Media, Android Media Session API aracılığıyla medya uygulamalarıyla etkileşim kurar. Bu API kapsamında Media, medya uygulamasının mevcut durumunu bildiren bir PlaybackState
nesnesi alır.
Oturum açma işlemi, medya uygulaması PlaybackState
yerine STATE_ERROR
olarak değiştiğinde başlar. Bu işlemde belirli bir hata kodu da gösterilir (ayrıntılar aşağıda verilmiştir). Bu durumda Media, hata açıklamasını ve medya uygulaması tarafından uygulanan bir oturum açma etkinliğine gitme olanağı sunar.
Aynı akış, uygulamalar tarafından diğer hata durumlarını (ör. sunucu bağlantısı hatası) bildirmek için kullanılabilir.
Şekil 4. Hata işleme
Normal PlaybackState
hata işleme kapsamında Media, aşağıdaki girişi kontrol etmelidir.
-
PlaybackState
hata koduPlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED
değerine eşittir. Bu, medya uygulamasının çalışmaya devam etmesi için oturum açılması gerektiğini gösterir. Diğer hata kodları da alınabilir. Bu kodlar, diğer türde hata durumlarını gösterir. -
PlaybackState
hata mesajı (PlaybackStateCompat.Builder#setErrorMessage
yöntemini kullanan medya uygulamaları tarafından ayarlanır), kullanıcı tarafından okunabilir bir açıklama (ör. "Oturumunuz açık değil.") içerir. Bu mesaj kullanıcıya gösterilmeli ve sürüş sırasında dikkat dağıtıcı unsurları azaltacak şekilde optimize edilmiş olmalıdır (DO). -
İsteğe bağlı olarak
PlaybackState
, aşağıdaki anahtarlarla aşağıdaki ekstraları (medya uygulamaları tarafındanPlaybackStateCompat.Builder#setExtras
yöntemiyle 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österilecek, okunabilir mesajı içeren bir dizeye ayarlanır. -
android.media.extras.ERROR_RESOLUTION_ACTION_INTENT
. Kullanıcı yukarıda belirtilen düğmeyi tıkladığında tetiklenmesi içinPendingIntent
ile ayarlanır. BuPendingIntent
aynı medya uygulaması tarafından uygulanan özel bir oturum açma etkinliğini gösterir.
-
-
PlaybackState
durumuSTATE_ERROR
değerine eşit. Bu, oturum açılana kadar başka işlem yapılamayacağını gösterir.