Sistem bileşenleri ve kullanıcı akışları

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ındaki MediaBrowserService öğ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_COMPONENT ekstrası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_INTERFACE uygulayan 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.LAUNCHER etkinliklerini uygulayanlarla birleştirir. Bir uygulama MediaBrowserService uygulaması 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.

  • PlaybackState hata kodu PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED değ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.

  • PlaybackState hata mesajı (PlaybackStateCompat.Builder#setErrorMessage yö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, PlaybackState aşağıdaki ekstraları (PlaybackStateCompat.Builder#setExtras yö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 şekilde PendingIntent ile ayarlayın. Bu PendingIntent aynı medya uygulaması tarafından uygulanan özel bir oturum açma etkinliğini gösterir.

  • PlaybackState durumu STATE_ERROR değerine eşit. Bu, oturum açma işlemi tamamlanana kadar başka bir işlemin mümkün olmadığını gösterir.