Car
public
final
class
Car
extends Object
java.lang.Object | |
↳ | android.car.Car |
Top level car API for embedded Android Auto deployments.
This API works only for devices with PackageManager#FEATURE_AUTOMOTIVE
Calling this API on a device with no such feature will lead to an exception.
Summary
Nested classes | |
---|---|
interface |
Car.CarServiceLifecycleListener
Callback to notify the Lifecycle of car service. |
Constants | |
---|---|
String |
APP_FOCUS_SERVICE
Service name for |
String |
AUDIO_SERVICE
Service name for |
String |
CAR_EXTRA_BROWSE_SERVICE_FOR_SESSION
Used as a string extra field of media session to specify the service corresponding to the session. |
String |
CAR_EXTRA_MEDIA_COMPONENT
This constant was deprecated
in API level 31.
Use |
String |
CAR_INTENT_ACTION_MEDIA_TEMPLATE
This constant was deprecated
in API level 31.
Use |
String |
CAR_NAVIGATION_SERVICE
Service name for |
String |
CAR_OCCUPANT_ZONE_SERVICE
Service name for |
String |
CAR_UX_RESTRICTION_SERVICE
Service name for |
long |
CAR_WAIT_TIMEOUT_DO_NOT_WAIT
|
long |
CAR_WAIT_TIMEOUT_WAIT_FOREVER
|
String |
CAR_WATCHDOG_SERVICE
Service name for |
int |
CONNECTION_TYPE_EMBEDDED
This constant was deprecated in API level 31. connection type constants are no longer used |
String |
INFO_SERVICE
Service name for |
String |
META_DATA_DISTRACTION_OPTIMIZED
This represents AndroidManifest meta-data to tell that |
String |
META_DATA_REQUIRES_CAR_FEATURE
This represents AndroidManifest meta-data to tell that |
String |
PACKAGE_SERVICE
Service name for |
String |
PERMISSION_CAR_CONTROL_AUDIO_SETTINGS
Permission necessary to change car audio settings through |
String |
PERMISSION_CAR_CONTROL_AUDIO_VOLUME
Permission necessary to change car audio volume through |
String |
PERMISSION_CAR_INFO
Permission necessary to use |
String |
PERMISSION_CAR_NAVIGATION_MANAGER
Permission necessary to use |
String |
PERMISSION_CONTROL_DISPLAY_UNITS
Permission necessary to control display units for distance, fuel volume, tire pressure and ev battery. |
String |
PERMISSION_CONTROL_INTERIOR_LIGHTS
Permission necessary to control car's interior lights. |
String |
PERMISSION_ENERGY
Permission necessary to access car's energy information. |
String |
PERMISSION_ENERGY_PORTS
Permission necessary to access car's fuel door and ev charge port. |
String |
PERMISSION_EXTERIOR_ENVIRONMENT
Permission necessary to read temperature of car's exterior environment. |
String |
PERMISSION_IDENTIFICATION
Permission necessary to access car's VIN information |
String |
PERMISSION_POWERTRAIN
Permission necessary to access car's powertrain information. |
String |
PERMISSION_READ_CAR_POWER_POLICY
Permission necessary to read the current power policy or be notified of power policy change. |
String |
PERMISSION_READ_DISPLAY_UNITS
Permission necessary to read and write display units for distance, fuel volume, tire pressure and ev battery. |
String |
PERMISSION_READ_INTERIOR_LIGHTS
Permission necessary to read car's interior lights information. |
String |
PERMISSION_READ_STEERING_STATE
Permission necessary to access car's steering angle information. |
String |
PERMISSION_SPEED
Permission necessary to access car's speed. |
String |
POWER_SERVICE
Service name for |
String |
PROPERTY_SERVICE
Service name for |
String |
SENSOR_SERVICE
This constant was deprecated
in API level 29.
|
Public methods | |
---|---|
void
|
connect()
This method was deprecated
in API level 29.
this method is not need if this object is created via
|
static
Car
|
createCar(Context context, Handler handler)
Creates new |
static
Car
|
createCar(Context context)
Creates new |
static
Car
|
createCar(Context context, ServiceConnection serviceConnectionListener)
This method was deprecated
in API level 29.
use |
static
Car
|
createCar(Context context, Handler handler, long waitTimeoutMs, Car.CarServiceLifecycleListener statusChangeListener)
Creates new |
static
Car
|
createCar(Context context, ServiceConnection serviceConnectionListener, Handler handler)
This method was deprecated
in API level 29.
use |
void
|
disconnect()
Disconnect from car service. |
int
|
getCarConnectionType()
This method was deprecated
in API level 31.
connection type will be always |
Object
|
getCarManager(String serviceName)
Get car specific service as in |
boolean
|
isConnected()
Tells if it is connected to the service or not. |
boolean
|
isConnecting()
Tells if this instance is already connecting to car service or not. |
boolean
|
isFeatureEnabled(String featureName)
Checks if {code featureName} is enabled in this car. |
Inherited methods | |
---|---|
Constants
APP_FOCUS_SERVICE
public static final String APP_FOCUS_SERVICE
Service name for CarAppFocusManager
.
Constant Value: "app_focus"
AUDIO_SERVICE
public static final String AUDIO_SERVICE
Service name for CarAudioManager
Constant Value: "audio"
CAR_EXTRA_BROWSE_SERVICE_FOR_SESSION
public static final String CAR_EXTRA_BROWSE_SERVICE_FOR_SESSION
Used as a string extra field of media session to specify the service corresponding to the session.
Constant Value: "android.media.session.BROWSE_SERVICE"
CAR_EXTRA_MEDIA_COMPONENT
public static final String CAR_EXTRA_MEDIA_COMPONENT
This constant was deprecated
in API level 31.
Use CarMediaIntents#EXTRA_MEDIA_COMPONENT
instead.
Constant Value: "android.car.intent.extra.MEDIA_COMPONENT"
CAR_INTENT_ACTION_MEDIA_TEMPLATE
public static final String CAR_INTENT_ACTION_MEDIA_TEMPLATE
This constant was deprecated
in API level 31.
Use CarMediaIntents#ACTION_MEDIA_TEMPLATE
instead.
Constant Value: "android.car.intent.action.MEDIA_TEMPLATE"
CAR_NAVIGATION_SERVICE
public static final String CAR_NAVIGATION_SERVICE
Service name for ERROR(CarNavigationStatusManager/android.car.navigation.CarNavigationStatusManager CarNavigationStatusManager)
Constant Value: "car_navigation_service"
CAR_OCCUPANT_ZONE_SERVICE
public static final String CAR_OCCUPANT_ZONE_SERVICE
Service name for CarOccupantZoneManager
Constant Value: "car_occupant_zone_service"
CAR_UX_RESTRICTION_SERVICE
public static final String CAR_UX_RESTRICTION_SERVICE
Service name for CarUxRestrictionsManager
Constant Value: "uxrestriction"
CAR_WAIT_TIMEOUT_DO_NOT_WAIT
public static final long CAR_WAIT_TIMEOUT_DO_NOT_WAIT
createCar(android.content.Context, android.os.Handler, long, android.car.Car.CarServiceLifecycleListener)
's
waitTimeoutMs value to use to skip any waiting inside the call.
Constant Value: 0 (0x0000000000000000)
CAR_WAIT_TIMEOUT_WAIT_FOREVER
public static final long CAR_WAIT_TIMEOUT_WAIT_FOREVER
createCar(android.content.Context, android.os.Handler, long, android.car.Car.CarServiceLifecycleListener)
's
waitTimeoutMs value to use to wait forever inside the call until car service is ready.
Constant Value: -1 (0xffffffffffffffff)
CAR_WATCHDOG_SERVICE
public static final String CAR_WATCHDOG_SERVICE
Service name for CarWatchdogManager
Constant Value: "car_watchdog"
CONNECTION_TYPE_EMBEDDED
public static final int CONNECTION_TYPE_EMBEDDED
This constant was deprecated
in API level 31.
connection type constants are no longer used
Type of car connection: platform runs directly in car.
Constant Value: 5 (0x00000005)
INFO_SERVICE
public static final String INFO_SERVICE
Service name for CarInfoManager
, to be used in getCarManager(java.lang.String)
.
Constant Value: "info"
META_DATA_DISTRACTION_OPTIMIZED
public static final String META_DATA_DISTRACTION_OPTIMIZED
This represents AndroidManifest meta-data to tell that Activity
is optimized for
driving distraction.
Activities without this meta-data can be blocked while car is in moving / driving state.
Note that having this flag does not guarantee that the Activity
will be always
allowed for all driving states.
For this meta-data, android:value can be true
(=optimized) or false
.
Example usage:
Constant Value: "distractionOptimized"
META_DATA_REQUIRES_CAR_FEATURE
public static final String META_DATA_REQUIRES_CAR_FEATURE
This represents AndroidManifest meta-data to tell that Application
requires specific
car features to work.
Apps like launcher or installer app can use this information to filter out apps not usable in a specific car. This meta-data is not necessary for mandatory features.
For this meta-data, android:value should contain the feature name string defined by
(@link android.car.annotation.OptionalFeature} or
ERROR(/android.car.annotation.ExperimentalFeature)
annotations.
Example usage:
Constant Value: "requires-car-feature"
PACKAGE_SERVICE
public static final String PACKAGE_SERVICE
Service name for CarPackageManager
Constant Value: "package"
PERMISSION_CAR_CONTROL_AUDIO_SETTINGS
public static final String PERMISSION_CAR_CONTROL_AUDIO_SETTINGS
Permission necessary to change car audio settings through CarAudioManager
.
Constant Value: "android.car.permission.CAR_CONTROL_AUDIO_SETTINGS"
PERMISSION_CAR_CONTROL_AUDIO_VOLUME
public static final String PERMISSION_CAR_CONTROL_AUDIO_VOLUME
Permission necessary to change car audio volume through CarAudioManager
.
Constant Value: "android.car.permission.CAR_CONTROL_AUDIO_VOLUME"
PERMISSION_CAR_INFO
public static final String PERMISSION_CAR_INFO
Permission necessary to use CarInfoManager
.
Constant Value: "android.car.permission.CAR_INFO"
PERMISSION_CAR_NAVIGATION_MANAGER
public static final String PERMISSION_CAR_NAVIGATION_MANAGER
Permission necessary to use ERROR(CarNavigationStatusManager/android.car.navigation.CarNavigationStatusManager CarNavigationStatusManager)
.
Constant Value: "android.car.permission.CAR_NAVIGATION_MANAGER"
PERMISSION_CONTROL_DISPLAY_UNITS
public static final String PERMISSION_CONTROL_DISPLAY_UNITS
Permission necessary to control display units for distance, fuel volume, tire pressure and ev battery.
Constant Value: "android.car.permission.CONTROL_CAR_DISPLAY_UNITS"
PERMISSION_CONTROL_INTERIOR_LIGHTS
public static final String PERMISSION_CONTROL_INTERIOR_LIGHTS
Permission necessary to control car's interior lights.
Constant Value: "android.car.permission.CONTROL_CAR_INTERIOR_LIGHTS"
PERMISSION_ENERGY
public static final String PERMISSION_ENERGY
Permission necessary to access car's energy information.
Constant Value: "android.car.permission.CAR_ENERGY"
PERMISSION_ENERGY_PORTS
public static final String PERMISSION_ENERGY_PORTS
Permission necessary to access car's fuel door and ev charge port.
Constant Value: "android.car.permission.CAR_ENERGY_PORTS"
PERMISSION_EXTERIOR_ENVIRONMENT
public static final String PERMISSION_EXTERIOR_ENVIRONMENT
Permission necessary to read temperature of car's exterior environment.
Constant Value: "android.car.permission.CAR_EXTERIOR_ENVIRONMENT"
PERMISSION_IDENTIFICATION
public static final String PERMISSION_IDENTIFICATION
Permission necessary to access car's VIN information
Constant Value: "android.car.permission.CAR_IDENTIFICATION"
PERMISSION_POWERTRAIN
public static final String PERMISSION_POWERTRAIN
Permission necessary to access car's powertrain information.
Constant Value: "android.car.permission.CAR_POWERTRAIN"
PERMISSION_READ_CAR_POWER_POLICY
public static final String PERMISSION_READ_CAR_POWER_POLICY
Permission necessary to read the current power policy or be notified of power policy change.
Constant Value: "android.car.permission.READ_CAR_POWER_POLICY"
PERMISSION_READ_DISPLAY_UNITS
public static final String PERMISSION_READ_DISPLAY_UNITS
Permission necessary to read and write display units for distance, fuel volume, tire pressure and ev battery.
Constant Value: "android.car.permission.READ_CAR_DISPLAY_UNITS"
PERMISSION_READ_INTERIOR_LIGHTS
public static final String PERMISSION_READ_INTERIOR_LIGHTS
Permission necessary to read car's interior lights information.
Constant Value: "android.car.permission.READ_CAR_INTERIOR_LIGHTS"
PERMISSION_READ_STEERING_STATE
public static final String PERMISSION_READ_STEERING_STATE
Permission necessary to access car's steering angle information.
Constant Value: "android.car.permission.READ_CAR_STEERING"
PERMISSION_SPEED
public static final String PERMISSION_SPEED
Permission necessary to access car's speed.
Constant Value: "android.car.permission.CAR_SPEED"
POWER_SERVICE
public static final String POWER_SERVICE
Service name for CarPowerManager
Constant Value: "power"
PROPERTY_SERVICE
public static final String PROPERTY_SERVICE
Service name for CarPropertyManager
Constant Value: "property"
SENSOR_SERVICE
public static final String SENSOR_SERVICE
This constant was deprecated
in API level 29.
CarSensorManager
is deprecated. Use CarPropertyManager
instead.
Service name for CarSensorManager
, to be used in getCarManager(java.lang.String)
.
Constant Value: "sensor"
Public methods
connect
public void connect ()
This method was deprecated
in API level 29.
this method is not need if this object is created via
createCar(android.content.Context, android.os.Handler)
.
Connect to car service. This can be called while it is disconnected.
Throws | |
---|---|
IllegalStateException |
If connection is still on-going from previous connect call or it is already connected |
createCar
public static Car createCar (Context context, Handler handler)
Creates new Car
object which connected synchronously to Car Service and ready to use.
Instance created with this should be disconnected from car service by calling
disconnect()
before the passed {code Context} is released.
Parameters | |
---|---|
context |
Context : App's Context. This should not be null. If you are passing
ContextWrapper , make sure that its base Context is non-null as well.
Otherwise it will throw NullPointerException . |
handler |
Handler : the handler on which the manager's callbacks will be executed, or null to
execute on the application's main thread. |
Returns | |
---|---|
Car |
Car object if operation succeeded, otherwise null. |
createCar
public static Car createCar (Context context)
Creates new Car
object which connected synchronously to Car Service and ready to use.
Instance created with this should be disconnected from car service by calling
disconnect()
before the passed {code Context} is released.
Parameters | |
---|---|
context |
Context : application's context |
Returns | |
---|---|
Car |
Car object if operation succeeded, otherwise null. |
createCar
public static Car createCar (Context context, ServiceConnection serviceConnectionListener)
This method was deprecated
in API level 29.
use createCar(android.content.Context, android.os.Handler)
instead.
A factory method that creates Car instance for all Car API access using main thread Looper
.
Instance created with this should be disconnected from car service by calling
disconnect()
before the passed {code Context} is released.
Parameters | |
---|---|
context |
Context |
serviceConnectionListener |
ServiceConnection |
Returns | |
---|---|
Car |
createCar
public static Car createCar (Context context, Handler handler, long waitTimeoutMs, Car.CarServiceLifecycleListener statusChangeListener)
Creates new Car
object with CarServiceLifecycleListener
.
Instance created with this should be disconnected from car service by calling
disconnect()
before the passed {code Context} is released.
If car service is ready inside this call and if the caller is running in the main thread,
CarServiceLifecycleListener#onLifecycleChanged(Car, boolean)
will be called
with ready set to be true. Otherwise,
CarServiceLifecycleListener#onLifecycleChanged(Car, boolean)
will be called
from the main thread later.
This call can block up to specified waitTimeoutMs to wait for car service to be ready. If car service is not ready within the given time, it will return a Car instance in disconnected state. Blocking main thread forever can lead into getting ANR (Application Not Responding) killing from system and should not be used if the app is supposed to survive across the crash / restart of car service. It can be still useful in case the app cannot do anything without car service being ready. In any waiting, if the thread is getting interrupted, it will return immediately.
Note that returned Car
object is not guaranteed to be connected when there is
a limited timeout. Regardless of returned car being connected or not, it is recommended to
implement all car related initialization inside
CarServiceLifecycleListener#onLifecycleChanged(Car, boolean)
and avoid the
needs to check if returned Car
is connected or not from returned Car
.
Parameters | |
---|---|
context |
Context : App's Context. This should not be null. If you are passing
ContextWrapper , make sure that its base Context is non-null as well.
Otherwise it will throw NullPointerException . |
handler |
Handler : dispatches all Car*Manager events to this Handler. Exception is
CarServiceLifecycleListener which will be always dispatched to main
thread. Passing null leads into dispatching all Car*Manager callbacks to main
thread as well. |
waitTimeoutMs |
long : Setting this to CAR_WAIT_TIMEOUT_DO_NOT_WAIT will guarantee
that the API does not wait for the car service at all. Setting this to
to CAR_WAIT_TIMEOUT_WAIT_FOREVER will block the call forever
until the car service is ready. Setting any positive value will be
interpreted as timeout value. |
statusChangeListener |
Car.CarServiceLifecycleListener |
Returns | |
---|---|
Car |
createCar
public static Car createCar (Context context, ServiceConnection serviceConnectionListener, Handler handler)
This method was deprecated
in API level 29.
use createCar(android.content.Context, android.os.Handler)
instead.
A factory method that creates Car instance for all Car API access.
Instance created with this should be disconnected from car service by calling
disconnect()
before the passed {code Context} is released.
Parameters | |
---|---|
context |
Context : App's Context. This should not be null. If you are passing
ContextWrapper , make sure that its base Context is non-null as well.
Otherwise it will throw NullPointerException . |
serviceConnectionListener |
ServiceConnection : listener for monitoring service connection. |
handler |
Handler : the handler on which the callback should execute, or null to execute on the
service's main thread. Note: the service connection listener will be always on the main
thread regardless of the handler given. |
Returns | |
---|---|
Car |
Car instance if system is in car environment and returns null otherwise. |
disconnect
public void disconnect ()
Disconnect from car service. This can be called while disconnected. Once disconnect is
called, all Car*Managers from this instance becomes invalid, and
Car#getCarManager(String)
will return different instance if it is connected again.
getCarConnectionType
public int getCarConnectionType ()
This method was deprecated
in API level 31.
connection type will be always ERROR(/CONNECTION_TYPE_EMBEDDED)
Returns | |
---|---|
int |
the type of currently connected car.
Value is CONNECTION_TYPE_EMBEDDED |
getCarManager
public Object getCarManager (String serviceName)
Get car specific service as in Context#getSystemService(String)
. Returned
Object
should be type-casted to the desired service.
For example, to get sensor service,
SensorManagerService sensorManagerService = car.getCarManager(Car.SENSOR_SERVICE);
Parameters | |
---|---|
serviceName |
String : Name of service that should be created like SENSOR_SERVICE . |
Returns | |
---|---|
Object |
Matching service manager or null if there is no such service. |
isConnected
public boolean isConnected ()
Tells if it is connected to the service or not. This will return false if it is still connecting.
Returns | |
---|---|
boolean |
isConnecting
public boolean isConnecting ()
Tells if this instance is already connecting to car service or not.
Returns | |
---|---|
boolean |
isFeatureEnabled
public boolean isFeatureEnabled (String featureName)
Checks if {code featureName} is enabled in this car.
For optional features, this can return false if the car cannot support it. Optional features should be used only when they are supported.
For mandatory features, this will always return true.
Parameters | |
---|---|
featureName |
String |
Returns | |
---|---|
boolean |
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2023-02-05 UTC.