Android Automotive implementation refers to a vehicle head unit running Android as an operating system for part or all of the system and/or infotainment functionality.
Android device implementations are classified as an Automotive if they declare the feature android.hardware.type.automotive
or meet all the following criteria.
The additional requirements in the rest of this section are specific to Android Automotive device implementations.
Automotive device implementations:
[7.1.1.1/A-0-1] MUST have a screen at least 6 inches in physical diagonal size.
[7.1.1.1/A-0-2] MUST have a screen size layout of at least 750 dp x 480 dp.
[7.2.3/A-0-1] MUST provide the Home function and MAY provide Back and Recent functions.
[7.2.3/A-0-2] MUST send both the normal and long press event of the Back function (KEYCODE_BACK
) to the foreground application.
[7.3/A-0-1] MUST implement and report GEAR_SELECTION
, NIGHT_MODE
, PERF_VEHICLE_SPEED
and PARKING_BRAKE_ON
.
[7.3/A-0-2] The value of the NIGHT_MODE
flag MUST be consistent with dashboard day/night mode and SHOULD be based on ambient light sensor input. The underlying ambient light sensor MAY be the same as Photometer.
[7.3/A-0-3] MUST provide sensor additional info field TYPE_SENSOR_PLACEMENT
as part of SensorAdditionalInfo for every sensor provided.
[7.3/A-0-1] MAY dead reckon Location by fusing GPS/GNSS with additional sensors. If Location is dead reckoned, it is STRONGLY RECOMMENDED to implement and report the corresponding Sensor types and/or Vehicle Property IDs used.
[7.3/A-0-2] The Location requested via LocationManager#requestLocationUpdates() MUST NOT be map matched.
If Automotive device implementations include a 3-axis accelerometer, they:
If Automotive device implementations include a 3-axis gyroscope, they:
TYPE_GYROSCOPE_UNCALIBRATED
sensor.If Automotive device implementations include a GPS/GNSS receiver, but do not include cellular network-based data connectivity, they:
Automotive device implementations:
[7.4.3/A-0-1] MUST support Bluetooth and SHOULD support Bluetooth LE.
[7.4.3/A-0-2] Android Automotive implementations MUST support the following Bluetooth profiles:
[7.4.3/A-SR] Are STRONGLY RECOMMENDED to support Message Access Profile (MAP).
[7.4.5/A] SHOULD include support for cellular network-based data connectivity.
[7.4.5/A] MAY use the System API NetworkCapabilities#NET_CAPABILITY_OEM_PAID
constant for networks that should be available to system apps.
An exterior view camera is a camera that images scenes outside of the device implementation, like a dashcam.
Automotive device implementations:
If Automotive device implementations include an exterior view camera, for such a camera, they:
Automotive device implementations:
[7.6.1/A-0-1] MUST have at least 4 GB of non-volatile storage available for application private data (a.k.a. “/data” partition).
[7.6.1/A] SHOULD format the data partition to offer improved performance and longevity on flash storage, for example using f2fs
file-system.
If Automotive device implementations provide shared external storage via a portion of the internal non-removable storage, they:
SDCardFS
.If Automotive device implementations are 32-bit:
[7.6.1/A-1-1] The memory available to the kernel and userspace MUST be at least 512MB if any of the following densities are used:
[7.6.1/A-1-2] The memory available to the kernel and userspace MUST be at least 608MB if any of the following densities are used:
[7.6.1/A-1-3] The memory available to the kernel and userspace MUST be at least 896MB if any of the following densities are used:
[7.6.1/A-1-4] The memory available to the kernel and userspace MUST be at least 1344MB if any of the following densities are used:
If Automotive device implementations are 64-bit:
[7.6.1/A-2-1] The memory available to the kernel and userspace MUST be at least 816MB if any of the following densities are used:
[7.6.1/A-2-2] The memory available to the kernel and userspace MUST be at least 944MB if any of the following densities are used:
[7.6.1/A-2-3] The memory available to the kernel and userspace MUST be at least 1280MB if any of the following densities are used:
[7.6.1/A-2-4] The memory available to the kernel and userspace MUST be at least 1824MB if any of the following densities are used:
Note that the “memory available to the kernel and userspace” above refers to the memory space provided in addition to any memory already dedicated to hardware components such as radio, video, and so on that are not under the kernel’s control on device implementations.
Automotive device implementations:
Automotive device implementations:
Automotive device implementations:
android.hardware.audio.output
.Automotive device implementations MUST support the following audio encoding and decoding formats and make them available to third-party applications:
Automotive device implementations MUST support the following video encoding formats and make them available to third-party applications:
Automotive device implementations MUST support the following video decoding formats and make them available to third-party applications:
Automotive device implementations are STRONGLY RECOMMENDED to support the following video decoding:
Automotive device implementations:
[3/A-0-1] MUST declare the feature android.hardware.type.automotive
.
[3/A-0-2] MUST support uiMode = UI_MODE_TYPE_CAR
.
[3/A-0-3] MUST support all public APIs in the android.car.*
namespace.
If Automotive device implementations provide a proprietary API using android.car.CarPropertyManager
with android.car.VehiclePropertyIds
, they:
Automotive device implementations:
[3.2.1/A-0-1] MUST support and enforce all permissions constants as documented by the Automotive Permission reference page.
[3.2.3.1/A-0-1] MUST preload one or more applications or service components with an intent handler, for all the public intent filter patterns defined by the following application intents listed here.
[3.4.1/A-0-1] MUST provide a complete implementation of the android.webkit.Webview
API.
[3.8.3/A-0-1] MUST display notifications that use the Notification.CarExtender
API when requested by third-party applications.
[3.8.4/A-SR] Are Strongly Recommended to implement an assistant on the device to handle the Assist action.
If Automotive device implementations include a push-to-talk button, they:
VoiceInteractionService
.Automotive device implementations:
Notifications on Automotive OS
SDK documentation.Notification.Builder.addAction()
Automotive device implementations:
CAR_INTENT_ACTION_MEDIA_TEMPLATE
implicit Intent action with the CAR_EXTRA_MEDIA_PACKAGE
extra.ERROR_RESOLUTION_ACTION_LABEL
and ERROR_RESOLUTION_ACTION_INTENT
.CONTENT_STYLE_BROWSABLE_HINT
and CONTENT_STYLE_PLAYABLE_HINT
definitions when displaying the MediaBrowser hierarchy.If Automotive device implementations include a default launcher app, they:
CAR_INTENT_ACTION_MEDIA_TEMPLATE
intent.Automotive device implementations:
immersive documentation
.Automotive device implementations:
android.car.storagemonitoring.CarStorageMonitoringManager
. The Android Open Source Project meets the requirement through the uid_sys_stats
kernel module.uid_cputime
kernel module implementation.adb shell dumpsys batterystats
shell command to the app developer.If Automotive device implementations support multiple users, they:
BOOT_COMPLETED
.Automotive device implementations:
Note that if a device implementation is already launched on an earlier Android version, such a device is exempted from the requirement to have a keystore backed by an isolated execution environment and support the key attestation, unless it declares the android.hardware.fingerprint
feature which requires a keystore backed by an isolated execution environment.
Automotive device implementations:
Automotive device implementations:
/system/bin/perfetto
binary to the shell user which cmdline complies with the perfetto documentation. * [6.1/A-0-2] The perfetto binary MUST accept as input a protobuf config that complies with the schema defined in the perfetto documentation. * [6.1/A-0-3] The perfetto binary MUST write as output a protobuf trace that complies with the schema defined in the perfetto documentation. * [6.1/A-0-4] MUST provide, through the perfetto binary, at least the data sources described in the perfetto documentation.