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

رابط کاربری سیستم عامل اندروید اتوموبیل
شکل 1 : سیستم عامل اندروید خودرو

سیستم عامل اندروید اتوموتیو (Android Automotive OS) نسخه‌ای از اندروید است که برای استفاده در خودرو بهینه شده و بر اساس پلتفرم اصلی اندروید توسعه یافته است. خودروهایی که از گوگل پشتیبانی می‌کنند، سیستم عامل اندروید اتوموتیو را اجرا می‌کنند و با برنامه‌ها و سرویس‌های گوگل از جمله گوگل پلی، جمینی، دستیار گوگل و گوگل مپس عرضه می‌شوند.

درباره سخت‌افزار سیستم عامل اندروید اتوموبیل اطلاعات کسب کنید

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

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

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

صوتی

دستگاه‌های دارای سیستم عامل اندروید اتوموبیل معمولاً دستگاه‌هایی با حجم ثابت هستند. برای کسب اطلاعات بیشتر در مورد چگونگی تأثیر این موضوع بر برنامه شما، به «کار با دستگاه‌های با حجم ثابت» مراجعه کنید.

نرم‌افزار سیستم عامل اندروید خودرو را درک کنید

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

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

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

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

طرح نوار سیستم

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

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

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

حالت فراگیر

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

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

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

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

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

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

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

بهینه‌سازی حواس‌پرتی

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

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

هنگام توسعه برنامه‌ها برای سیستم عامل اندروید اتوموبیل، تنها زمانی که این فراداده باید در مانیفست شما وجود داشته باشد، هنگام اعلام عنصر مانیفست <activity> برای CarAppActivity برنامه‌ای است که با استفاده از کتابخانه برنامه خودرو ساخته شده است. هیچ فعالیت دیگری نباید به عنوان بهینه‌سازی حواس‌پرتی علامت‌گذاری شود - در صورت وجود، برنامه شما هنگام ارسال به فروشگاه گوگل پلی رد خواهد شد.

دسترسی‌پذیری

پشتیبانی از قابلیت دسترسی برای سیستم عامل اندروید خودرو به گستردگی سایر فرم فاکتورها نیست. TalkBack ، Switch Access و Voice Access در دستگاه‌های سیستم عامل اندروید خودرو در دسترس نیستند.

تنظیمات زیرنویس در دستگاه‌های دارای سیستم عامل اندروید اتوموبیل پشتیبانی می‌شوند. برای جزئیات ادغام، به بخش «پذیرش تنظیمات زیرنویس سیستم» مراجعه کنید.

انتخاب شبکه

سیستم عامل اندروید اتوموتیو از انتخاب شبکه بر اساس برنامه (PANS) پشتیبانی می‌کند، که به تولیدکنندگان اصلی تجهیزات (OEM) اجازه می‌دهد تا ترافیک شبکه تلفن همراه را به شبکه‌های مختلف بر اساس برنامه به برنامه هدایت کنند.

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

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

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

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

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

جهت گیری صفحه نمایش

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

موقعیت مکانی شبکه

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

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

برخی از ویژگی‌های نرم‌افزاری که معمولاً در سایر فرم فاکتورها یافت می‌شوند، ممکن است در دستگاه‌های دارای سیستم عامل Android Automotive پشتیبانی نشوند. به عنوان مثال، ویژگی‌های زیر در بسیاری از خودروهای دارای سیستم عامل 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" اعلام کنید.
  • مقادیر مانیفست که الزام ضمنی را برای ویژگی معرفی می‌کنند، حذف یا به‌روزرسانی کنید.

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

سوالات متداول

کدام خودروها به صورت پیش‌فرض به گوگل مجهز هستند؟

برای مشاهده فهرستی از تولیدکنندگان اصلی تجهیزات (OEM) که مدل‌هایی با قابلیت پشتیبانی از گوگل دارند، به سایت Cars with Google built-in مراجعه کنید. مشخصات سخت‌افزاری و سایر جزئیات دستگاه را می‌توان با استفاده از کاتالوگ دستگاه کنسول Play دریافت کرد.