اجزای سیستم و جریان کاربر

نمودار زیر مؤلفه هایی را نشان می دهد که با رسانه تعامل دارند:

اجزای سیستم

شکل 1. اجزای سیستم

عناصر این شکل در جدول توضیح داده شده است:

جزء شرح
صفحه اصلی سطوح دیگری را در رابط کاربری خودرو نشان می دهد که رسانه در حال پخش فعلی را نمایش و کنترل می کند. در AOSP، این صفحه اصلی است که هنگام راه اندازی سیستم نمایش داده می شود. از این صفحه، کاربران می توانند جزئیات آیتم رسانه در حال پخش را مشاهده کنند و مجموعه محدودی از اقدامات استاندارد و سفارشی (مثلاً پخش و مکث) را اجرا کنند.
رابط کاربری سیستم عملکردی را ارائه می دهد که شامل گزینه های ناوبری جهانی UI مانند پیمایش به رسانه است.
دستیاران اندروید مکانیسم هایی را برای برنامه های دستیار صوتی مختلف برای تعامل با سیستم فراهم می کند. این برنامه‌ها می‌توانند با منابع رسانه در پس‌زمینه تعامل داشته باشند (مثلاً پخش یک آهنگ در نتیجه یک فرمان صوتی)، یا به رسانه در پیش‌زمینه پیمایش کنند (مثلاً زمانی که به یک برنامه دستیار صوتی دستور داده می‌شود که رابط کاربری را نمایش دهد. منبع رسانه خاص).
راه‌انداز برنامه همه برنامه‌های اندروید، از جمله منابع رسانه، در راه‌انداز برنامه شروع می‌شوند. رسانه می‌تواند انتخابگر منبع رسانه‌ای خود را ارائه کند، که راه‌انداز برنامه را به عنوان محل شروع رسانه تکمیل یا جایگزین کند.
فروشگاه Google Play هنگامی که از GAS استفاده می شود، اینجا جایی است که کاربران برنامه های جدید را در دستگاه اندرویدی پیدا کرده و نصب می کنند. برای رسانه، پس از نصب برنامه‌ها، کاربران به رسانه هدایت می‌شوند تا فرآیند ورود به سیستم را تکمیل کنند یا با برنامه تعامل برقرار کنند.
مدیر جلسه رسانه سرویس سیستم اندروید که جلسات رسانه را از همه منابع رسانه ردیابی و کنترل می کند. مکانیسم هایی را برای تشخیص زمانی که یک منبع رسانه به منبع رسانه پیش زمینه تبدیل می شود، فراهم می کند. رسانه، و همه برنامه‌های دیگری که منبع رسانه در حال پخش را نمایش می‌دهند (مثلاً صفحه اصلی)، از Media Session Manager برای شناسایی این رویدادها و به‌روزرسانی رابط کاربری استفاده می‌کنند. منابع رسانه با استفاده از Media Session API با Media Session Manager تعامل دارند.
رادیو برنامه تخصصی برای تعامل با سخت افزار رادیویی. رادیو ایستگاه های رادیویی را جستجو می کند، ایستگاه های اخیراً شناسایی شده را سریع انتخاب می کند و بین باندهای رادیویی جابجا می شود. اجزای رابط کاربری مشترک توسط رادیو و رسانه، کاربر را قادر می سازد تا بین این دو تجربه جابجا شود.
موتور حواس پرتی راننده سرویس سیستم اندروید برای اعمال محدودیت‌های UX بر اساس وضعیت رانندگی خودرو استفاده می‌شود. برای ورود به سیستم منابع رسانه و تنظیمات UX (جایی که صفحه به طور مستقیم توسط منابع رسانه کنترل می شود)، این سرویس تضمین می کند که وقتی خودرو در حالت رانندگی است، محتوای ناامنی نمایش داده نمی شود. OEM ها می توانند تعریف این حالت ها و نحوه واکنش سیستم را در این شرایط سفارشی کنند (به عنوان مثال، با نمایش یک پوشش صفحه مسدود کننده).

جریان های کاربر

راه اندازی اپلیکیشن رسانه

فرآیندی که Media را راه اندازی می کند در زیر ظاهر می شود.

راه اندازی اپلیکیشن رسانه

شکل 2. راه اندازی برنامه رسانه

رسانه باید با استفاده از CAR_INTENT_ACTION_MEDIA_TEMPLATE ضمنی زیر راه اندازی شود. این هدف می تواند اطلاعات زیر را به عنوان موارد اضافی داشته باشد:

  • android.car.intent.extra.MEDIA_COMPONENT ( اختیاری ). رشته اضافی برای نشان دادن نام کامپوننت مسطح MediaBrowserService در برنامه رسانه ای که رسانه قرار است به آن متصل شود. اگر ارائه نشده باشد، Media برنامه رسانه انتخاب شده فعلی را نمایش می دهد. این هدف از نقاط ورودی زیر استفاده می شود:

    • رابط کاربری سیستم برای بازگشت به تجربه رسانه یا شروع استفاده از آن برای اولین بار استفاده می شود. در این حالت، Intent فوق بدون هیچ گونه اضافی استفاده می شود تا Media برنامه رسانه انتخاب شده فعلی را نمایش دهد.

    • صفحه اصلی، دستیارها و مرکز اعلان. کاربران می توانند برای نمایش برنامه رسانه انتخاب شده فعلی، به Media حرکت کنند. در همه موارد، قصد ضمنی بدون موارد اضافی فعال می شود.

    • راه‌انداز برنامه. وقتی کاربران یک برنامه رسانه را از راه‌انداز برنامه انتخاب می‌کنند، هدف بالا شامل CAR_EXTRA_MEDIA_COMPONENT اضافی است که شامل برنامه رسانه انتخاب‌شده است. Media این را به عنوان برنامه جدید انتخاب کرده و به آن متصل می شود. برای جزئیات، به بخش زیر، راه‌انداز برنامه به ادغام رسانه مراجعه کنید.

راه‌انداز برنامه برای ادغام رسانه

برنامه‌های رسانه مجاز به ارائه هیچ گونه فعالیت مشروح با دسته android.intent.category.LAUNCHER نیستند. در نتیجه، راه‌انداز برنامه (یا معادل آن) باید منطق خاصی را برای رسیدگی به یکپارچه‌سازی منبع رسانه پیاده‌سازی کند:

  • راه‌انداز برنامه باید سیستم را برای یافتن بسته‌هایی که MediaBrowserService.SERVICE_INTERFACE را اجرا می‌کنند اسکن کند. برای این بسته‌ها، App Launcher نماد سرویس مشابه آنچه برای واکشی سایر فعالیت‌ها استفاده می‌شود، واکشی می‌کند.

  • سپس App Launcher این بسته ها را با بسته هایی که فعالیت های android.intent.category.LAUNCHER را اجرا می کنند ترکیب می کند. اگر برنامه‌ای یک اجرای MediaBrowserService و یک فعالیت راه‌انداز ارائه کند، سرویس اولویت دارد.

    از زمان نگارش این مقاله، هیچ برنامه منبع رسانه ای نمی تواند فعالیت راه اندازی را ارائه دهد.

  • نمونه ای از این منطق را می توان در کد AOSP در AppLauncherUtils#getAllLauncherApps() یافت.

جریان ورود به سیستم و گزینه های پیکربندی

برنامه‌های رسانه می‌توانند شامل یک فعالیت تنظیمات بهینه شده برای خودرو باشند. چنین فعالیتی می‌تواند برای پیاده‌سازی جریان‌های کاربری که توسط API‌های Android Media آدرس داده نمی‌شوند، استفاده شود، به عنوان مثال:

  • ورود
  • خروج از سیستم
  • تغییر حساب
  • نمایشگری که کاربر در حال حاضر به آن وارد شده است (در صورت وجود)
  • پیکربندی سرویس

جریان Sign-n

شکل 3. جریان ورود به سیستم

این فعالیت تنظیمات توسط برنامه رسانه با فیلتر هدف زیر اعلام شده است:

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

رسانه ها باید منطق زیر را اجرا کنند:

  • بررسی کنید که برنامه رسانه انتخاب شده فعلی دارای فعالیتی با فیلتر هدف داده شده باشد.

  • اگر چنین است، به کاربر اجازه دهید تا به فعالیت پیمایش کند.

  • اگر محدودیت‌های UX Car اعمال می‌شوند (مثلاً ماشین در حال حرکت است)، این امکان باید غیرفعال شود زیرا فعالیت تنظیمات یک رابط کاربری بهینه‌سازی شده برای راننده نیست.

رسیدگی به خطا و ورود به سیستم مورد نیاز

رسانه از طریق Android Media Session API با برنامه های رسانه تعامل دارد. به عنوان بخشی از این API، Media یک شی PlaybackState را دریافت می کند که وضعیت فعلی برنامه رسانه را به اشتراک می گذارد.

فرآیند ورود به سیستم زمانی شروع می‌شود که برنامه رسانه PlaybackState را به STATE_ERROR تغییر می‌دهد، از جمله یک کد خطای خاص (جزئیات را در زیر ببینید). وقتی این اتفاق می‌افتد، Media شرح خطا و امکان پیمایش به یک فعالیت ورود به سیستم اجرا شده توسط برنامه رسانه را نشان می‌دهد.

همین جریان می تواند توسط برنامه ها برای سیگنال دادن به موقعیت های خطای دیگر (به عنوان مثال، خطای اتصال به سرور) استفاده شود.

رسیدگی به خطا

شکل 4. رسیدگی به خطا

به عنوان بخشی از مدیریت عادی خطای PlaybackState ، Media باید ورودی زیر را بررسی کند.

  • کد خطای PlaybackState برابر با PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED . این نشان می دهد که برنامه رسانه برای ادامه کار به ورود به سیستم نیاز دارد. کدهای خطای دیگری را می توان دریافت کرد که نشان دهنده انواع دیگر موقعیت های خطا است.

  • پیام خطای PlaybackState (تعیین شده توسط برنامه های رسانه با استفاده از روش PlaybackStateCompat.Builder#setErrorMessage ) حاوی توضیحی قابل خواندن برای انسان است (به عنوان مثال، "شما وارد سیستم نشده اید."). این پیام باید به کاربر نمایش داده شود و باید حواس پرتی رانندگی بهینه شده باشد (DO).

  • به صورت اختیاری، PlaybackState می‌تواند موارد اضافی زیر را (که توسط برنامه‌های رسانه با روش PlaybackStateCompat.Builder#setExtras تنظیم می‌شود) با کلیدهای زیر شامل شود.

    • android.media.extras.ERROR_RESOLUTION_ACTION_LABEL . روی رشته‌ای تنظیم کنید که حاوی پیام قابل خواندن برای انسان است که روی دکمه لمس کاربر برای شروع جریان ورود به سیستم نمایش داده شود.

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT . با یک PendingIntent تنظیم کنید تا زمانی که کاربر روی دکمه ذکر شده در بالا کلیک می‌کند فعال شود. این PendingIntent به یک فعالیت ورود به سیستم سفارشی اشاره دارد که توسط همان برنامه رسانه اجرا شده است.

  • حالت PlaybackState برابر با STATE_ERROR است. این علامت می دهد که تا زمانی که ورود به سیستم کامل نشود، هیچ عملیات دیگری امکان پذیر نیست.