نمای کلی «سیستم عامل Android Automotive»

میانای کاربر «سیستم‌عامل Android Automotive»
شکل ۱: سیستم‌عامل Android Automotive

سیستم عامل Android Automotive نسخه‌ای از Android است که برای استفاده در خودرو بهینه‌سازی شده است و پلاتفرم اصلی Android را گسترش می‌دهد. خودروهای مجهز به Google با «سیستم‌عامل Android Automotive» کار می‌کنند و با برنامه‌ها و سرویس‌های Google ازجمله Google Play،‏ Gemini، «دستیار Google»، و Google Maps ارائه می‌شوند.

آشنایی با سخت‌افزار «سیستم عامل Android Automotive»

برای کسب اطلاعات بیشتر درباره حداقل مشخصات سخت‌افزاری برای دستگاه‌های دارای سیستم‌عامل Android Automotive، به بخش الزامات Automotive در سند تعریف سازگاری Android (CDD) برای نسخه‌های Android که برنامه‌تان از آن‌ها پشتیبانی می‌کند مراجعه کنید.

برش‌های نمایشگر

مانند سایر قالب‌های Android، برش‌های نمایشگر توسط دستگاه‌های دارای «سیستم‌عامل Android Automotive» با نمایشگرهای غیرمستطیلی پشتیبانی می‌شوند. بااین‌حال، اندازه و شکل بریدگی‌های موجود در خودروها می‌تواند کاملاً متفاوت از بریدگی‌های موجود در سایر عوامل شکل باشد. برای راهنمایی دقیق، به کار با تورفتگی‌های پنجره و برش‌های نمایشگر مراجعه کنید.

صوتی

دستگاه‌های دارای سیستم‌عامل Android Automotive معمولاً دستگاه‌هایی با میزان صدای ثابت هستند. برای کسب اطلاعات بیشتر درباره اینکه این موضوع چگونه ممکن است بر برنامه‌تان تأثیر بگذارد، کار با دستگاه‌های با صدای ثابت را ببینید.

آشنایی با نرم‌افزار «سیستم عامل Android Automotive»

درحالی‌که سیستم‌عامل Android Automotive براساس همان سیستم‌عامل اصلی است که توسط سایر فاکتورهای فرم استفاده می‌شود، برخی ویژگی‌های اضافی منحصربه‌فرد برای آن وجود دارد که می‌تواند بر نحوه توسعه و استفاده از برنامه‌ها تأثیر بگذارد.

واسط کاربری سیستم

تفاوت‌هایی در نحوه عملکرد این عناصر واسط کاربر سیستم در خودروها وجود دارد که باید از آن‌ها مطلع باشید.

برخلاف دیگر عوامل فرم، الزامی برای دستگاه‌های دارای سیستم‌عامل Android Automotive وجود ندارد که امکان برگشت سخت‌افزاری یا نرم‌افزاری داشته باشند. وقتی در حالت سازگاری اجرا نمی‌شود، فعالیت‌های اجراشده توسط برنامه‌تان باید شامل امکانات واسط کاربر باشد تا ناوبری درون‌برنامه بتواند از دستورالعمل کیفیت AN-1 پیروی کند.

چیدمان نوار سیستم

مانند سایر ضریب‌های شکل، «سیستم‌عامل Android Automotive» شامل نوارهای سیستم مانند نوارهای وضعیت و نوارهای پیمایش است. در خودروها، این نوارها ممکن است اندازه و موقعیت متفاوتی نسبت‌به سایر عوامل شکل داشته باشند. برای مثال، نوارهای پیمایش ممکن است در سمت چپ، راست، یا پایین صفحه قرار بگیرند. حتی در شرایطی که نوار وضعیت در بالا و نوار پیمایش در پایین وجود دارد (مانند اکثر تلفن‌ها و رایانه‌های لوحی)، اندازه این عناصر احتمالاً در خودروها بسیار بزرگ‌تر خواهد بود.

علاوه‌براین، اگرچه برش‌های نمایشگر در دستگاه‌های همراه معمولاً در محدوده نوارهای سیستم قرار دارند، اما در خودروها این‌گونه نیست.

برای راهنمایی دقیق، به کار با تورفتگی‌های پنجره و برش‌های نمایشگر مراجعه کنید.

حالت فراگیر

سیستم عامل Android Automotive به سازندگان تجهیزات اصلی اجازه می‌دهد کنترل کنند که آیا برنامه‌ها می‌توانند نوار سیستم را برای ورود و خروج از حالت فراگیر نشان دهند یا پنهان کنند. با جلوگیری از پنهان کردن نوارهای سیستم توسط برنامه‌ها، تولیدکنندگان تجهیزات اصلی می‌توانند اطمینان حاصل کنند که کنترل‌های خودرو، مانند کنترل‌های تهویه مطبوع، همیشه روی صفحه دردسترس هستند.

محدودیت‌های تجربه کاربری

محدودیت‌های تجربه کاربری (UX) قابلیتی است که در سیستم عامل Android Automotive برای رسیدگی به ملاحظات مربوط به حواس‌پرتی راننده تعبیه شده است. محدودیت‌های UX مسئول جلوگیری خودکار از استفاده از برنامه‌هایی هستند که برای استفاده در حین رانندگی بهینه‌سازی نشده‌اند.

فعالیت مسدودکننده فعالیت روی برنامه‌ای نمایش داده می‌شود که به‌عنوان «سطح دقت بهینه‌شده» علامت‌گذاری نشده است.
شکل ۲: برنامه‌ای که توسط محدودیت‌های UX مسدود شده است

سازندگان خودرو قوانین مربوط به نحوه و زمان فعال بودن محدودیت‌های UX را تعیین می‌کنند. این قوانین ممکن است بسته به منطقه جغرافیایی متفاوت باشد – برای مثال، همان خودرویی که در اروپا فروخته می‌شود ممکن است قوانین متفاوتی نسبت به خودروهای فروخته‌شده در ایالات متحده داشته باشد.

قوانین محدودیت UX همچنین می‌تواند بسته به نمایشگر داخل خودرو متفاوت باشد. برای مثال، نمایشگر مرکزی در خط دید راننده ممکن است درحین حرکت خودرو محدود شود، درحالی‌که نمایشگر سرنشین نامحدود باقی می‌ماند.

اگر برنامه‌تان باید با محدودیت‌های UX سازگار شود، مستقیماً به آن‌ها ارجاع دهید – پیاده‌سازی آن‌ها را مهندسی معکوس نکنید. برای مثال، اگر فرض کنید که محدودیت‌های UX زمانی فعال هستند که دنده در حالت پارک نیست، ممکن است به‌طور غیرضروری برنامه‌ای را که در نمایشگر سرنشین اجرا می‌شود محدود کنید.

بهینه‌سازی سطح دقت

به‌طور پیش‌فرض، وقتی محدودیت‌های UX برای محدود کردن حواس‌پرتی راننده فعال است، فعالیت‌ها نمی‌توانند اجرا شوند. برای نشان دادن به سیستم که یک فعالیت باید درحین حرکت خودرو ادامه یابد، عنصر <meta-data> زیر می‌تواند در عنصر <activity> مربوطه اضافه شود.

<activity ...>
  <meta-data android:name="distractionOptimized" android:value="true">
</activity>

هنگام توسعه برنامه‌ها برای «سیستم عامل Android Automotive»، تنها زمانی که این فراداده باید در مانیفست شما وجود داشته باشد، هنگام اعلام عنصر مانیفست <activity> برای CarAppActivity برنامه‌ای است که بااستفاده از «کتابخانه برنامه خودرو» ساخته شده است. هیچ فعالیت دیگری نباید به‌عنوان بهینه‌شده برای سطح دقت علامت‌گذاری شود - اگر فعالیتی علامت‌گذاری شود، برنامه‌تان هنگام ارسال به «فروشگاه Google Play» رد خواهد شد.

دسترس‌پذیری

پشتیبانی دسترس‌پذیری برای سیستم‌عامل Android Automotive به‌اندازه سایر عوامل شکل گسترده نیست. TalkBack، دسترسی با کلید، و دسترسی صوتی در دستگاه‌های دارای سیستم‌عامل Android Automotive دردسترس نیستند.

اولویت‌های زیرنویس ناشنوایان در دستگاه‌های دارای سیستم عامل Android Automotive پشتیبانی می‌شود. برای جزئیات ادغام، پذیرفتن تنظیمات زیرنویس ناشنوایان سیستم را ببینید.

انتخاب شبکه

«سیستم‌عامل Android Automotive» از انتخاب شبکه برای هر برنامه (PANS) پشتیبانی می‌کند که به سازندگان اصلی امکان می‌دهد ترافیک شبکه تلفن همراه را براساس هر برنامه به شبکه‌های مختلف هدایت کنند.

اکثر برنامه‌ها فقط از شبکه پیش‌فرض اختصاص‌داده‌شده به آن‌ها استفاده می‌کنند و فقط از این ویژگی بهره می‌برند – برای مثال، OEM ممکن است هزینه ترافیک شبکه را از برنامه شما پرداخت کند، حتی اگر کاربر طرح داده خودش را نداشته باشد. اگر برنامه شما (یا یکی از وابستگی‌های آن) به شبکه‌هایی غیراز شبکه پیش‌فرض متکی باشد، ممکن است از اولویت‌های تنظیم‌شده توسط سازنده اصلی محصول بهره‌مند نشود. برای راهنمایی بیشتر درباره استفاده از شبکه‌هایی غیراز شبکه پیش‌فرض، خواندن وضعیت شبکه را ببینید.

ویژگی‌های سیستم

بااستفاده از PackageManager::hasSystemFeature می‌توانید تشخیص دهید که آیا ویژگی خاصی دردسترس است یا نه و رفتار برنامه‌تان را براساس آن تنظیم کنید.

ویژگی‌های سخت‌افزار

همانند دیگر قالب‌های غیرتلفن همراه، ویژگی‌های سخت‌افزاری موجود در خودروها ممکن است با ویژگی‌های موجود در دستگاه‌های همراه متفاوت باشد.

جهت صفحه‌نمایش

خودروها مانند تلویزیون‌ها دستگاه‌هایی با جهت ثابت هستند. برخلاف تلویزیون‌ها، این دستگاه‌ها هم در جهت عمودی و هم در جهت افقی ارائه می‌شوند. برای اطمینان از اینکه برنامه‌های ساخته‌شده برای سیستم‌عامل Android Automotive می‌توانند در همه خودروها توزیع شوند، برنامه‌ها باید مطمئن شوند که هیچ‌گونه الزام ویژگی صریح یا ضمنی برای ویژگی‌های android.hardware.screen.landscape یا android.hardware.screen.portrait ندارند.

مکان شبکه

بسیاری از دستگاه‌های دارای سیستم‌عامل Android Automotive پشته تلفنی مورداستفاده برای ارائه مکان شبکه را پیاده‌سازی نمی‌کنند و بنابراین ویژگی سیستم android.hardware.location.network را گزارش نمی‌کنند. اگرچه مکان شبکه ممکن است دردسترس نباشد، دسترسی به مکان تقریبی همچنان پشتیبانی می‌شود – به مکان تقریبی در سیستم‌عامل Android Automotive مراجعه کنید.

ویژگی‌های نرم‌افزار

برخی‌از ویژگی‌های نرم‌افزاری که معمولاً در سایر ابعاد دستگاه‌ها یافت می‌شوند ممکن است در دستگاه‌های دارای سیستم‌عامل Android Automotive پشتیبانی نشوند. برای مثال، ویژگی‌های زیر در بسیاری‌از خودروهای دارای «سیستم عامل Android Automotive» دردسترس نیست:

رعایت کردن الزامات ویژگی Google Play

برای توزیع در خودروها ازطریق Google Play، برنامه‌های ساخته‌شده برای سیستم عامل Android Automotive باید عنصر <uses-feature> را در فایل AndroidManifest.xml برای ویژگی android.hardware.type.automotive داشته باشند:

<manifest ...>
  ...
  <!--
    See Choose a track for Android Automotive OS
    for details on how to choose which value to use for the android:required attribute.
  -->
  <uses-feature
      android:name="android.hardware.type.automotive"
      android:required="[true|false]">
  ...
</manifest>

علاوه‌براین، اگر برنامه‌تان دارای اعلام صریح ویژگی با android:required="true" یا الزام ضمنی ویژگی برای هریک از ویژگی‌های زیر است، باید آن‌ها را به‌روزرسانی یا حذف کنید تا الزامات ویژگی برنامه‌تان مانع توزیع آن در خودروهای سازگار نشود:

برای ویژگی‌هایی که به‌طور صریح با android:required="true" اعلام شده‌اند، می‌توانید یکی از کارهای زیر را انجام دهید:

  • اگر ویژگی به‌طور ضمنی لازم نیست، عنصر <uses-feature> را حذف کنید.
  • ویژگی را به‌طور صریح با android:required="false" اعلام کنید.

برای ویژگی‌های موردنیاز ضمنی، می‌توانید یکی از کارهای زیر را انجام دهید:

  • ویژگی را به‌طور صریح با android:required="false" اعلام کنید.
  • مقادیر مانیفست را که الزام ضمنی را در ویژگی معرفی می‌کند بردارید یا به‌روز کنید.

تغییر دادن اظهارنامه‌های ویژگی در مانیفست بر عملکرد واقعی برنامه‌تان تأثیر نمی‌گذارد، بنابراین بررسی کنید که برنامه‌تان همچنان بدون این ویژگی‌ها به‌درستی کار کند.

پرسشگان

کدام خودروها با Google داخلی ارائه می‌شوند؟

برای مشاهده فهرست سازندگان اصلی تجهیزات که مدل‌های مجهز به Google دارند، به سایت خودروهای مجهز به Google مراجعه کنید. مشخصات سخت‌افزاری و سایر جزئیات دستگاه را می‌توان بااستفاده از «کاتالوگ دستگاه» در «کنسول Play» به‌دست آورد.