blob: be9705622b4df7ae8d909666a3dfe1065b4eabf6 [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2015, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<!-- Resources to configure car service based on each OEM's preference. -->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Configuration to enable usage of dynamic audio routing. If this is set to false,
dynamic audio routing is disabled and audio works in legacy mode. It may be useful
during initial development where audio hal does not support bus based addressing yet. -->
<bool name="audioUseDynamicRouting">false</bool>
<!-- Configuration to persist global mute state. If this is set to true,
Android will restore the global mute state on boot. -->
<bool name="audioPersistMasterMuteState">true</bool>
<!-- Whether to block other audio while media audio is muted with display off. When set to true,
other sounds cannot be played either while display is off. If false, only media is muted
and other sounds can be still played. -->
<bool name="displayOffMuteLockAllAudio">true</bool>
<!-- Configuration to enable or disable the default Bluetooth Device Connection Policy. This
policy determines when to initiate device connections, but does not control the actual
connection process. Disable this default to implement your own policy. -->
<bool name="useDefaultBluetoothConnectionPolicy">true</bool>
<string name="inputService" translatable="false">android.car.input.service/.DefaultInputService</string>
<!-- Service responsible for displaying information on the car instrument cluster. -->
<string name="instrumentClusterRendererService" translatable="false">android.car.cluster/.ClusterRenderingService</string>
<!-- Service responsible for handling the rotary controller input. This service will start
on boot or on user switch. Set this string to empty if you don't want to start this
service. -->
<string name="rotaryService" translatable="false">com.android.car.rotary/com.android.car.rotary.RotaryService</string>
<!-- Whether to enable Activity blocking for safety. When Activity blocking is enabled,
only allowlisted safe Activities will be allowed while car is not parked. -->
<bool name="enableActivityBlockingForSafety">true</bool>
<!-- Activity to be presented when un-safe activity is launched. Take a look at the javadoc of the
default implementation. -->
<string name="activityBlockingActivity" translatable="false">com.android.car/com.android.car.pm.ActivityBlockingActivity</string>
<!-- Comma separated list of activities that need to be exempted from getting
blocked in a UX restricted state.
Format of each entry is either to specify package name to allowlist the whole package or
use format of "packagename/activity_classname" for tagging each activities.
For general guidelines to design distraction optimized apps, please refer
to Android Auto Driver Distraction Guidelines. -->
<string name="activityWhitelist" translatable="false"></string>
<!-- Comma separated list of activities that need to be exempted from getting
blocked in a UX restricted state.
Format of each entry is either to specify package name to allowlist the whole package or
use format of "packagename/activity_classname" for tagging each activities.
The current implementations expects the following system packages/activities to be
allowlisted. For general guidelines to design distraction optimized apps, please refer
to Android Auto Driver Distraction Guidelines. -->
<string name="systemActivityWhitelist" translatable="false">com.android.systemui,com.google.android.permissioncontroller/com.android.permissioncontroller.permission.ui.GrantPermissionsActivity,com.android.permissioncontroller/com.android.permissioncontroller.permission.ui.GrantPermissionsActivity,android/com.android.internal.app.ResolverActivity,com.android.mtp/com.android.mtp.ReceiverActivity,com.android.server.telecom/com.android.server.telecom.components.UserCallActivity</string>
<!-- Comma separated list of activities that will be blocked during restricted state.
Format of each entry is either to specify package name to allowlist the whole package
or use format of "packagename/activity_classname" for tagging each activities.-->
<string name="activityBlacklist" translatable="false"></string>
<!-- List of play store package names that are allowed sources of app installation-->
<string-array translatable="false" name="allowedAppInstallSources">
</string-array>
<!-- Default home activity -->
<string name="defaultHomeActivity" translatable="false"><!--com.your.package/com.your.package.Activity--></string>
<!-- The vendor-defined HAL property used to collect VMS client metrics. Disabled by default.-->
<integer name="vmsHalClientMetricsProperty">0</integer>
<!-- The com.android.car.vms.VmsClientManager will bind to this list of clients running as system user -->
<string-array translatable="false" name="vmsPublisherSystemClients">
</string-array>
<!-- The com.android.car.vms.VmsClientManager will bind to this list of clients running as current user -->
<string-array translatable="false" name="vmsPublisherUserClients">
</string-array>
<!-- Number of milliseconds to wait before trying re-bind to a crashed publisher. -->
<integer name="millisecondsBeforeRebindToVmsPublisher">10000</integer>
<!-- Hours of uptime (excluding sleep) after which a 1% increase in the wear of the flash
storage in the head-unit is considered as acceptable level of wear. -->
<integer name="acceptableHoursPerOnePercentFlashWear">70</integer>
<!-- How often (in hours of uptime excluding sleep) CarService will flush to disk information
about the total running time of the head-unit. A shutdown or reboot of the head-unit
will always cause a flush of the uptime information, regardless of this setting. -->
<integer name="uptimeHoursIntervalBetweenUptimeDataWrite">5</integer>
<!-- The name of an activity to be launched by CarService whenever it detects a change in the
level of wear of the flash storage. Value must either be an empty string, which means that
no activity shall be launched, or must be in the format of a flattened ComponentName and
reference a valid activity. It is strongly recommended that the chosen activity be
protected with the android.car.permission.STORAGE_MONITORING permission. -->
<string name="activityHandlerForFlashWearChanges" translatable="false">com.google.android.car.defaultstoragemonitoringcompanionapp/.MainActivity</string>
<!-- How often (in seconds) CarService will update I/O metrics from the kernel. -->
<integer name="ioStatsRefreshRateSeconds">60</integer>
<!-- The number of I/O metrics samples to keep in memory at one time.
The system will keep a sliding window of samples of this size, and allow
retrieval of activity this many sample windows back in time. Setting this to
0 means no samples will be collected, effectively disabling I/O metric collection. -->
<integer name="ioStatsNumSamplesToStore">15</integer>
<!-- The maximum number of KB (1024 bytes) that can be written to storage in one sample
before CarService deems I/O activity excessive. A simple way to set this value
is - given the total writable amount (storage size * P/E cycles) - to make
reasonable assumptions about the expected lifetime of the vehicle and the average
daily driving time, and use that to allocate a per-sample budget. -->
<integer name="acceptableWrittenKBytesPerSample">115000</integer>
<!-- The maximum number of fsync() system calls that can be made in one sample before
CarService deems I/O activity excessive. -->
<integer name="acceptableFsyncCallsPerSample">150</integer>
<!-- The maximum number of samples (within an I/O stats sample window) that CarService
should consider exhibiting excessive I/O activity before broadcasting an intent
to signal the potential for flash wear. -->
<integer name="maxExcessiveIoSamplesInWindow">11</integer>
<!-- The name of an intent to be notified by CarService whenever it detects too many
samples with excessive I/O activity. Value must either be an empty string, which
means that no notification will take place, or be in the format of a flattened
ComponentName and reference a valid BroadcastReceiver. This broadcast receiver
must be registered in its containing app's AndroidManifest.xml and it is
strongly recommended that it be protected with the
android.car.permission.STORAGE_MONITORING permission. -->
<string name="intentReceiverForUnacceptableIoMetrics" translatable="false">com.google.android.car.defaultstoragemonitoringcompanionapp/.ExcessiveIoIntentReceiver</string>
<!-- The Model ID to advertise Bluetooth Fast Pair connections with. Must be overlayed with
device specific model id. -->
<integer name="fastPairModelId">0x000000</integer>
<!-- Maximum allowed time to run garage mode. Note that 15 min (=900sec) is the minimum required
duration and this should not be made shorter. -->
<integer name="maxGarageModeRunningDurationInSecs">900</integer>
<!-- The garage mode configuration, specifying the time after shutdown to reboot into garage
mode and the number of attempts at that time to try before moving to the next wake up
time. This is intended to be a back-off pattern. -->
<string-array translatable="false" name="config_garageModeCadence">
<!-- <wake up after X min/hour/days>,<how many times> -->
<item>15m,1</item>
<item>6h,8</item>
<item>1d,5</item>
<item>3d,2</item>
<item>7d,3</item>
</string-array>
<!-- The services that needs to be started earlier in the boot sequence and in particular order.
Every item in this array contains a flatten component name of a service that needs to be
started and a list of parameters after hashtag symbol. Here's the format:
<item>com.bar.foo/.Service#bind={bind|start|startForeground},user={all|system|foreground},
trigger={asap,userUnlocked}</item>
bind: bind - start service with Context#bindService
start - start service with Context#startService
startForeground - start service with Context#startForegroundService
If service was bound it will be restarted unless it is constantly crashing.
The default value is 'start'
user: all - the service will be bound/started for system and all foreground users
system - the service will be started/bound only for system user (u0)
foreground - the service will be bound/started only for foreground users
The default value is 'all'
trigger: indicates when the service needs to be started/bound
asap - the service might be bound when user is not fully loaded, be careful with
this value, the service also needs to have directBootAware flag set to true
userUnlocked - start service when user unlocked the device
The default value is 'userUnlocked'
If the service bound/started for foreground user it will be unbound/stopped when user
is no longer foreground.
-->
<string-array translatable="false" name="config_earlyStartupServices">
<item>com.android.car.messenger/.MessengerService#bind=startForeground,user=foreground,trigger=userUnlocked</item>
</string-array>
<!-- The consent activity that must be shown for every unknown mobile device before projection
gets started. The format is: com.your.package/com.your.Activity -->
<string name="config_projectionConsentActivity" translatable="false"/>
<!-- Display Id where projection rendering activity needs to be shown, Specify -1 to use system
defaults -->
<integer name="config_projectionActivityDisplayId" translatable="false">-1</integer>
<!-- Bounds of the projection activity on the screen. It should be in the pixels and screen
coordinates in the following order: left, top, right, bottom. -->
<integer-array name="config_projectionActivityLaunchBounds" translatable="false"/>
<!-- UI mode for projection activity. See ProjectionOptions class for possible values. -->
<integer name="config_projectionUiMode" translatable="false">0</integer>
<!-- Configure whether access point created for wireless projection should be in tethered mode.
This will allow mobile device to use Internet provided by the vehicle during projection.
If this value is true then tethering is enabled. Otherwise, local-only hotspot will be
created. -->
<bool name="config_projectionAccessPointTethering" translatable="false">false</bool>
<!-- The package name of a service to be launched by CarService to bind to an active media
service on the current user.
TODO(b/139497602): Remove dependency on Media Center, handle in CarMediaService -->
<string name="serviceMediaConnection" translatable="false">com.android.car.media</string>
<!-- service/characteristics uuid for adding new escrow token -->
<string name="enrollment_service_uuid" translatable="false">5e2a68a4-27be-43f9-8d1e-4546976fabd7</string>
<string name="enrollment_server_write_uuid" translatable="false">5e2a68a5-27be-43f9-8d1e-4546976fabd7</string>
<string name="enrollment_client_write_uuid" translatable="false">5e2a68a6-27be-43f9-8d1e-4546976fabd7</string>
<!-- service/characteristics uuid for unlocking a device -->
<string name="unlock_service_uuid" translatable="false">00003ac5-0000-1000-8000-00805f9b34fb</string>
<string name="unlock_client_write_uuid" translatable="false">5e2a68a2-27be-43f9-8d1e-4546976fabd7</string>
<string name="unlock_server_write_uuid" translatable="false">5e2a68a3-27be-43f9-8d1e-4546976fabd7</string>
<string name="token_handle_shared_preferences" translatable="false">com.android.car.trust.TOKEN_HANDLE</string>
<!-- The package name of the default bugreport application that can use CarBugreportServiceManager.
There is no default bugreporting app.-->
<string name="config_car_bugreport_application" translatable="false"></string>
<!--
Lists all occupant (= driver + passenger) zones available in the car.
Some examples are:
<item>occupantZoneId=0,occupantType=DRIVER,seatRow=1,seatSide=driver</item>
<item>occupantZoneId=1,occupantType=FRONT_PASSENGER,seatRow=1,seatSide=oppositeDriver</item>
<item>occupantZoneId=2,occupantType=REAR_PASSENGER,seatRow=2,seatSide=left</item>
<item>occupantZoneId=3,occupantType=REAR_PASSENGER,seatRow=2,seatSide=right</item>
occupantZoneId: Unique unsigned integer id to represent each passenger zone. Each zone
should have different id.
occupantType: Occupant type for the display. Use * part from
CarOccupantZoneManager.OCCUPANT_TYPE_* like DRIVER, FRONT_PASSENGER,
REAR_PASSENGER and etc.
seatRow: Integer telling which row the seat is located. Row 1 is for front seats.
seatSide: left/center/right for known side. Or can use driver/center/oppositeDriver to
handle both right-hand driving and left-hand driving in one place.
If car's RHD / LHD is not specified, LHD will be assumed and driver side becomes
left.
-->
<string-array translatable="false" name="config_occupant_zones">
<item>occupantZoneId=0,occupantType=DRIVER,seatRow=1,seatSide=driver</item>
</string-array>
<!--
Specifies configuration of displays in system telling its usage / type and assigned
occupant. DEFAULT_DISPLAY, if assigned here, should be always assigned to the DRIVER zone.
Some examples are:
<item>displayPort=0,displayType=MAIN,occupantZoneId=0</item>
<item>displayPort=1,displayType=INSTRUMENT_CLUSTER,occupantZoneId=0</item>
<item>displayPort=2,displayType=MAIN,occupantZoneId=1</item>
<item>displayPort=3,displayType=MAIN,occupantZoneId=2</item>
<item>displayPort=4,displayType=MAIN,occupantZoneId=3</item>
displayPort: Unique port id for the display.
displayType: Display type for the display. Use * part from
CarOccupantZoneManager.DISPLAY_TYPE_* like MAIN, INSTRUMENT_CLUSTER and
etc.
occupantZoneId: occupantZoneId specified from config_occupant_zones.
-->
<string-array translatable="false" name="config_occupant_display_mapping">
</string-array>
<!--
Specifies whether CarLaunchParamControl prefers source. If prefer-source is enabled,
CarLaunchParamControl tries to launch Activities without any desiganted display to
the display where the source is located.
This can be configured 3 ways:
A. No items - don't prefer source for any components.
B. 1 items with "*" - prefer source for all components.
C. enumerate items of "packageName/activityName" - prefer source for the specified ones.
-->
<string-array translatable="false" name="config_sourcePreferredComponents">
<item>com.google.android.apps.maps/com.google.android.maps.MapsActivity</item>
</string-array>
<!-- Specifies notice UI that will be launched when user starts a car or do user
switching. It is recommended to use dialog with at least TYPE_APPLICATION_OVERLAY window
type to show the UI regardless of activity launches. Target package will be auto-granted
necessary permission for TYPE_APPLICATION_OVERLAY window type. The UI package should
resolve permission by itself to use any higher priority window type.
Setting this string to empty will disable the feature. -->
<string name="config_userNoticeUiService" translatable="false">com.google.android.car.kitchensink/.UserNoiticeDemoUiService</string>
<!-- Configuration to enable media center to autoplay when the media source is changed.
There are 3 supported configurations:
0 - never play on change
1 - always play
2 - retain per source, play based on last remembered playback state for the new source
3 - retain previous state, play based on previous source's playback state -->
<integer name="config_mediaSourceChangedAutoplay">2</integer>
<!-- Configuration to enable media center to autoplay on boot -->
<integer name="config_mediaBootAutoplay">2</integer>
<!-- Setting this flag to true allows for browsing a different source than the
one that is currently playing audio. By default, there is only one active
source in the car, for both playback and browse. -->
<bool name="config_mediaSourceIndependentPlayback">false</bool>
<!-- Disable switching the user while the system is resuming from Suspend to RAM.
This default says to prevent changing the user during Resume. -->
<bool name="config_disableUserSwitchDuringResume" translatable="false">true</bool>
<!--
Specifies optional features that can be enabled by this image. Note that vhal can disable
them depending on product variation.
Feature name can be either service name defined in Car.*_SERVICE for Car*Manager or any
optional feature defined under @OptionalFeature annotation.
Note that '/' is used to have subfeature under main feature like "MAIN_FEATURE/SUB_FEATURE".
Some examples are:
<item>storage_monitoring</item>
<item>com.android.car.user.CarUserNoticeService</item>
<item>com.example.Feature/SubFeature</item>
The default list defined below will enable all optional features defined.
-->
<string-array translatable="false" name="config_allowed_optional_car_features">
<item>car_navigation_service</item>
<item>com.android.car.user.CarUserNoticeService</item>
<item>diagnostic</item>
<item>storage_monitoring</item>
<item>vehicle_map_service</item>
</string-array>
<!-- Configuration to enable passenger support.
If this is set to true and there is a passenger display, a user can login to the passenger
display and use it as a normal Android user. -->
<bool name="enablePassengerSupport">false</bool>
<!-- Class name of the custom country detector to be used. Override the default value in the
device specific config file. -->
<string name="config_customCountryDetector" translatable="false">com.android.server.location.ComprehensiveCountryDetector</string>
<!-- Controls the use of bluetooth voice recognition when long pressing the voice assist
button. -->
<bool name="enableLongPressBluetoothVoiceRecognition" translatable="false">true</bool>
<!-- Switch guest user into new guest user before going to sleep. If this is false, it will
be done after waking up from sleep. This only affects if the current user is a guest user.
-->
<bool name="config_switchGuestUserBeforeGoingSleep" translate="false">true</bool>
<!-- Enable profile user assignment per each CarOccupantZone for per display android user
assignments. This feature is still experimental. -->
<bool name="enableProfileUserAssignmentForMultiDisplay" translatable="false">false</bool>
<!-- The ComponentName of the media source that will be selected as the default -->
<string name="config_defaultMediaSource">com.android.bluetooth/com.android.bluetooth.avrcpcontroller.BluetoothMediaBrowserService</string>
<!-- A configuration flag to enable ending an ongoing call using the physical Call button. -->
<bool name="config_callButtonEndsOngoingCall">false</bool>
<!-- Number of milliseconds to wait before the system goes into Suspend-to-RAM.
The valid range is 0 to 3 * 60 * 1000. The default duration is 3 min (= 3 * 60 * 1000). -->
<integer name="config_maxSuspendWaitDuration">180000</integer>
</resources>