Android Automotive OS overview

Android Automotive OS user interface
Figure 1: Android Automotive OS

Android Automotive OS is a version of Android optimized for in-car use that extends upon the core Android platform. Cars with Google built-in run Android Automotive OS and come with Google apps and services including Google Play, Google Assistant, and Google Maps.

Learn about Android Automotive OS hardware

To learn more about the minimum hardware specifications for Android Automotive OS devices, see the Automotive Requirements section of the Android Compatibility Definition Document (CDD) for the Android version(s) your app supports.

Display cutouts

As with other Android form factors, display cutouts are supported by Android Automotive OS devices with non-rectangular displays. However, the size and shape of cutouts found in cars can be quite different than those found in other form factors. See Work with window insets and display cutouts for detailed guidance.

Audio

Android Automotive OS devices are generally fixed-volume devices. To learn more about how this may affect your app, see Working with fixed-volume devices.

Understand Android Automotive OS software

While Android Automotive OS is based on the same core operating system as used by other form factors, there are some additional features unique to it that can impact the way that apps can be developed and used.

System UI

There are some differences in how these system UI elements function in cars that you should be aware of.

Unlike other form factors, there is no requirement for Android Automotive OS devices to have a hardware or software back affordance. When not run in compatibility mode, activities implemented by your app should include UI affordances to enable in-app navigation to meet the AN-1 quality guideline.

System bar layout

As with other form factors, Android Automotive OS includes system bars such as status bars and navigation bars. In cars, these bars may be sized and positioned differently than on other form factors. For example, navigation bars may be positioned on the left, right, or bottom of the screen. Even in the case that there is a status bar on top and a navigation bar on the bottom (as is the case with most phones and tablets), the size of these elements will likely be much greater in cars.

Additionally, while display cutouts on mobile devices are generally contained within the bounds of the system bars, this isn't the case in cars.

See Work with window insets and display cutouts for detailed guidance.

Immersive mode

Android Automotive OS allows OEMs to control whether or not apps can show or hide the system bars to enter and exit immersive mode. By preventing apps from hiding the system bars, OEMs can ensure that vehicle controls, such as climate controls, are always accessible on screen.

User experience restrictions

User experience (UX) restrictions are the capability built into Android Automotive OS to handle driver distraction considerations. UX restrictions are responsible for automatically preventing the use of apps that haven't been optimized for use while driving.

The activity blocking activity being displayed over an app not marked as
    distraction optimized.
Figure 2: An app being blocked by UX restrictions

The exact set of rules that determine how and when UX restrictions are active are determined by vehicle manufacturers. These rules can vary by geography – for example, the same vehicle sold in Europe may have different rules than those sold in the United States.

UX restriction rules can also vary by display within a vehicle. For example, it is possible for a center display in the driver's line of sight to be restricted while the vehicle is in motion while a passenger display would remain unrestricted.

If your app needs to adapt to UX restrictions, reference them directly – don't attempt to reverse engineer their implementation. For example, if you assume that UX restrictions are active when the gear is not Park, you might unnecessarily restrict an app running on a passenger display.

Distraction optimization

By default, activities cannot be run while UX restrictions are active to limit driver distractions. To indicate to the system that an activity should continue running while the vehicle is motion, the following <meta-data> element can be added within the corresponding <activity> element.

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

When developing apps for Android Automotive OS, the only time this metadata should be present in your manifest is when declaring the <activity> manifest element for the CarAppActivity of an app built using the Car App Library. No other activities should be marked as distraction optimized - if one is, your app will be rejected when submitted to the Google Play Store.

Accessibility

Accessibility support for Android Automotive OS is not as expansive as on other form factors. TalkBack, Switch Access, and Voice Access are not available on Android Automotive OS devices.

Captioning preferences are supported on Android Automotive OS devices. See Adopt system caption settings for integration details.

Network selection

Android Automotive OS supports Per-application network selection (PANS), which allows OEMs to route mobile network traffic to different networks on an application-by-application basis.

Most apps use only the default network assigned to them and only stand to benefit from this feature – for example, the OEM may pay for network traffic from your app even if the user doesn't have their own data plan. If your app (or one of its dependencies) relies on networks other than the default, it may not benefit from preferences set by the OEM. See Read network state for more guidance on using networks other than the default.

System features

You can detect whether a given feature is available using PackageManager::hasSystemFeature and adjust your app's behavior accordingly.

Hardware features

As with other non-mobile form-factors, the hardware features available in cars may differ from those found on mobile devices.

Screen orientation

Like TVs, cars are fixed orientation devices. Unlike TVs, they come in both portrait and landscape orientations. To ensure that apps built for Android Automotive OS can be distributed to all vehicles, apps must ensure that they have no explicit or implicit feature requirement for either the android.hardware.screen.landscape or android.hardware.screen.portrait features.

Network location

Many Android Automotive OS devices don't implement the telephony stack used to provide network location and thus don't report the android.hardware.location.network system feature. Although network location may not be available, accessing coarse location is still supported – see Coarse location on Android Automotive OS.

Software features

Some software features that are commonly found on other form factors may not be supported on Android Automotive OS devices. For example, the following features are not available on many Android Automotive OS vehicles:

Frequently asked questions

Which vehicles come with Google built-in?

See the Cars with Google built-in site for a list of OEMs that have models with Google built-in. Hardware specifications and other device details can be obtained using the Play Console's Device Catalog.