Medya ile etkileşimde bulunan bileşenler tabloda açıklanmıştır:
| Bileşen | Açıklama |
|---|---|
| Ana ekran | O anda oynatılan medyayı gösteren ve kontrol eden araba kullanıcı arayüzündeki diğer yüzeyleri temsil eder. AOSP'de bu, sistem başlatıldığında görüntülenen ana ekrandır. Bu ekranda kullanıcılar, oynatılan medya öğesinin ayrıntılarını görüntüleyebilir ve sınırlı sayıda standart ve özel işlem (ör. oynatma ve duraklatma) 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şim kurması için mekanizmalar sağlar. Bu uygulamalar, arka planda Medya Kaynakları ile etkileşime girebilir (ör. sesli komut sonucunda şarkı çalma) veya ön planda Medya'ya gidebilir (ör. sesli asistan uygulamasına belirli bir Medya Kaynağı'nın kullanıcı arayüzünü göstermesi talimatı verildiğinde). |
| Uygulama Başlatıcı | Medya Kaynakları da dahil olmak üzere tüm Android uygulamaları, Uygulama Başlatıcı'da başlatılır. Medya, medya için başlangıç noktası olarak uygulama başlatıcıyı tamamlayan veya değiştiren kendi medya kaynağı seçicisini sunabilir. |
| Google Play Store | GAS kullanılırken kullanıcılar Android cihazlarda yeni uygulamaları bu mağazadan bulup yükler. Medya 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. |
| Media Session Manager | Tüm medya kaynaklarındaki medya oturumlarını izleyen ve 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öneticisini kullanır. Medya kaynakları, Media Session API aracılığıyla Media Session Manager ile etkileşim kurar. |
| Radyo | Radyo donanımıyla etkileşim kurmak için özel uygulama. Radyo, radyo istasyonlarını arar, kısa süre önce 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. |
| Sürücü Dikkatini Dağıtma Motoru (Driver Distraction Engine) | Arabanın sürüş durumuna göre kullanıcı deneyimi kısıtlamaları uygulamak için kullanılan Android sistem hizmeti. Medya kaynakları oturum açma ve ayarlar kullanıcı deneyimi için (ekranın doğrudan medya kaynakları tarafından kontrol edildiği yerlerde) bu hizmet, 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 vereceğini (örneğin, engelleyici bir ekran yerleşimi göstererek) özelleştirebilir. |
Kullanıcı işlemleri akışları
Medya uygulamasını başlatma
Medya, aşağıdaki örtülü kullanılarak başlatılmalıdır
CAR_INTENT_ACTION_MEDIA_TEMPLATE.
Bu amaç, ekstra 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 dize. Sağlanmazsa Media, şu anda seçili olan medya uygulamasını gösterir. Bu amaç, 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, yukarıdaki amaç, Medya'nın şu anda seçili medya uygulamasını göstermesini sağlamak için ekstralar olmadan kullanılır.
-
Ana Ekran, Asistanlar ve Bildirim Merkezi. Kullanıcılar, şu anda seçili olan medya uygulamasını görüntülemek için Medya'ya gidebilir. Her durumda, ekstrasız örtülü amaç 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_COMPONENTekstrasını içerir. Medya, bunu yeni seçilen uygulama olarak belirler ve bu uygulamaya bağlanır. Ayrıntılar için aşağıdaki Uygulama Başlatıcı'dan Medya'ya entegrasyonu bölümüne bakın.
-
Uygulama başlatıcıdan Medya entegrasyonuna
Medya uygulamalarının, android.intent.category.LAUNCHER kategorisiyle açıklama eklenmiş herhangi bir etkinlik sağlamasına izin verilmez. Bu nedenle, uygulama başlatıcı (veya eşdeğeri), medya kaynağı entegrasyonunu ele almak için özel bir mantık uygulamalıdır:
-
Uygulama başlatıcı,
MediaBrowserService.SERVICE_INTERFACEuygulayan paketler için sistemi taramalıdır. Uygulama başlatıcı, bu paketler için diğer etkinlikleri getirmek üzere kullanılan yönteme benzer şekilde hizmet simgesini getirir. -
Uygulama başlatıcı daha sonra bu paketleri
android.intent.category.LAUNCHERetkinliklerini uygulayanlarla birleştirir. Bir uygulamaMediaBrowserServiceuygulaması ve başlatıcı etkinliği sağlıyorsa hizmet öncelikli olur.Bu makalenin yazıldığı sırada hiçbir medya kaynağı uygulaması başlatıcı etkinliği sağlayamıyordu.
- 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'lerinin ele almadığı kullanıcı akışlarını uygulamak için kullanılabilir. Örneğin:
- Oturum açma
- Oturumu kapat
- Hesaplar arasında geçiş
- Kullanıcının şu anda oturum açtığı ekran (varsa)
- Hizmet yapılandırması
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 intent filtresine sahip bir etkinlik içerdiğini kontrol edin.
-
Bu durumda, kullanıcının etkinliğe gitmesine izin verin.
-
Araba kullanıcı deneyimi kısıtlamaları geçerliyse (ör. araba hareket hâlindeyse) bu özellik devre dışı bırakılmalıdır. Çünkü Ayarlar etkinliği, sürücü için optimize edilmiş bir kullanıcı arayüzü değildir.
Hata işleme ve oturum açma zorunluluğu
Medya, Android Media Session API aracılığıyla medya uygulamalarıyla etkileşime girer. Bu API kapsamında, medya uygulamasıyla ilgili mevcut durumu bildiren bir PlaybackState nesnesi alınır.
Oturum açma işlemi, medya uygulaması PlaybackState olarak değiştiğinde başlar
STATE_ERROR,
belirli bir hata kodu da dahil olmak üzere (ayrıntılar için aşağıya bakın). Bu durumda, Media hata açıklamasını ve medya uygulaması tarafından uygulanan bir oturum açma etkinliğine gitme olanağını gösterir.
Aynı akış, uygulamalar tarafından diğer hata durumlarını (ör. sunucu bağlantı hatası) bildirmek için de kullanılabilir.
Normal PlaybackState hata işleme kapsamında, Medya aşağıdaki girişleri kontrol etmelidir.
-
PlaybackStatehata koduPlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIREDdeğerine eşit. Bu sinyal, medya uygulamasının çalışmaya devam etmek için oturum açma işlemi gerektirdiğini gösterir. Diğer hata kodları alınabilir. Bu kodlar, başka türde hata durumlarını gösterir. -
PlaybackStatehata mesajı (PlaybackStateCompat.Builder#setErrorMessageyöntemi kullanılarak medya uygulamaları tarafından ayarlanır) okunabilir bir açıklama içerir (örneğin, "Oturum açmadınız."). Bu mesaj kullanıcıya gösterilmeli ve sürüş sırasında dikkat dağıtmayacak şekilde optimize edilmiş olmalıdır (DO). -
İsteğe bağlı olarak,
PlaybackStateaşağıdaki ekstraları (PlaybackStateCompat.Builder#setExtrasyöntemiyle medya uygulamaları tarafından ayarlanır) aşağıdaki anahtarlarla içerebilir.-
android.media.extras.ERROR_RESOLUTION_ACTION_LABEL. Kullanıcı tarafından oturum açma akışını başlatmak için dokunulan düğmede gösterilecek, okunabilir mesajı içeren bir dize olarak ayarlayın. -
android.media.extras.ERROR_RESOLUTION_ACTION_INTENT. Kullanıcı yukarıda belirtilen düğmeyi tıkladığında tetiklenecek şekildePendingIntentile ayarlayın. BuPendingIntentaynı medya uygulaması tarafından uygulanan özel bir oturum açma etkinliğini gösterir.
-
-
PlaybackStatedurumuSTATE_ERRORdeğerine eşit. Bu, oturum açma işlemi tamamlanana kadar başka bir işlemin mümkün olmadığını gösterir.