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

Aşağıdaki şemada Medya ile etkileşime giren bileşenler gösterilmektedir:

Sistem bileşenleri

Ş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.

Medya uygulamasının başlatılması

Ş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ındaki MediaBrowserService 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 uygulama MediaBrowserService 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ı

İmza-n akışı

Ş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.

Hata yönetimi

Ş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 kodu PlaybackStateCompat#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 bir PendingIntent ile ayarlayın. Bu PendingIntent aynı medya uygulaması tarafından uygulanan özel bir oturum açma etkinliğine işaret eder.

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