| <?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 enable muting of individual volume groups. If this is set to |
| false, muting of individual volume groups is disabled, instead muting will toggle master |
| mute. If this is set to true, car volume group muting is enabled and each individual |
| volume group can be muted separately. --> |
| <bool name="audioUseCarVolumeGroupMuting">false</bool> |
| |
| <!-- Configuration to enable IAudioControl#onDevicesToDuckChange API to inform HAL when to |
| duck. If this is set to true, the API will receive signals indicating which output devices |
| to duck as well as what usages are currently holding focus. If set to false, the API will |
| not be called. --> |
| <bool name="audioUseHalDuckingSignals">true</bool> |
| |
| <!-- Configuration to select version of volume adjustment context priority list. |
| Version 1 includes all audio contexts arranged in the following order: |
| NAVIGATION, CALL, MUSIC, ANNOUNCEMENT, VOICE_COMMAND, CALL_RING, SYSTEM_SOUND, SAFETY, |
| ALARM, NOTIFICATION, VEHICLE_STATUS, EMERGENCY. |
| Version 2 is limited to the following contexts in order: |
| CALL, MUSIC, ANNOUNCEMENTS, VOICE_COMMAND |
| |
| audioVolumeAdjustmentContextsVersion - Integer version number currently limited to |
| numbers listed above. --> |
| <integer name="audioVolumeAdjustmentContextsVersion">2</integer> |
| |
| <!-- Configuration to persist global mute state. If this is set to true, |
| Android will restore the global mute state on boot. If audioUseCarVolumeGroupMuting is |
| true, this will have no impact on persisting mute changes as mute changes will be based |
| on individual volume group.--> |
| <bool name="audioPersistMasterMuteState">true</bool> |
| |
| <!-- Configuration to indicate the timeout in milliseconds while a car volume group will be |
| considered active for volume control changes during volume key events. The configuration |
| will be used as follows: |
| - The timeout will be used to determine if a playback (audio context associated with the |
| playback's audio usage) can still be considered for automatic volume selection after it |
| has stopped playing. |
| - The timeout will also be used as the pause duration required in between automatic volume |
| adjustments to change what user is adjusting. --> |
| <integer name="audioVolumeKeyEventTimeoutMs">3000</integer> |
| |
| <!-- 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> |
| |
| <!-- Service responsible for displaying information on the car instrument cluster. --> |
| <string name="instrumentClusterRendererService" translatable="false">android.car.cluster/.ClusterRenderingService</string> |
| |
| <!-- The name of Activity who is in charge of ClusterHome. --> |
| <string name="config_clusterHomeActivity" translatable="false">com.android.car.cluster.home/.ClusterHomeActivity</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="activityAllowlist" 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="systemActivityAllowlist" 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="activityDenylist" 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. A model id of 0 will disable Fast Pair--> |
| <integer name="fastPairModelId">0x000000</integer> |
| |
| <!-- The Anti Spoofing Public key associated with the advertised Fast Pair Model ID, base64 |
| encoded. --> |
| <string name="fastPairAntiSpoofKey" translatable="false"></string> |
| |
| <!-- Enable to allow Fast Pair to automatically accept incoming pairing requests with matching |
| Simple Secure Pairing codes without requiring further user input. --> |
| <bool name="fastPairAutomaticAcceptance">false</bool> |
| |
| <!-- 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> |
| |
| <!-- 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>displayUniqueId=virtual:com.example:MainD,displayType=MAIN,occupantZoneId=3</item> |
| |
| NOTE: each item should have displayPort or displayUniqueId, if it has both, displayPort |
| will be used. |
| displayPort: Unique Port id for the physical display. |
| displayUniqueId: Unique Id for the display. |
| The unique id of the virtual display will be the form of 'virtual:<PACKAGE>:<ID>'. |
| 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> |
| |
| <!-- |
| 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>cluster_service</item> |
| <item>com.android.car.user.CarUserNoticeService</item> |
| <item>diagnostic</item> |
| <item>storage_monitoring</item> |
| <item>vehicle_map_service</item> |
| <item>car_evs_service</item> |
| <item>car_telemetry_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> |
| |
| <!-- A name of a camera device that provides the rearview through EVS service --> |
| <string name="config_evsRearviewCameraId" translatable="false">/dev/video10</string> |
| |
| <!-- The camera Activity name for EVS, if defined, the Activity will be launched by |
| CarEvsService. --> |
| <string name="config_evsCameraActivity" translatable="false"></string> |
| |
| <!-- A configuration flag to adjust Wifi for suspend. --> |
| <bool name="config_wifiAdjustmentForSuspend">false</bool> |
| |
| <!-- A configuration flag to prevent the templated apps from showing dialogs. This is done in |
| the view of driver safety as templated apps can potentially show a dialog with custom UI |
| which can be a distraction hazard for the driver. --> |
| <bool name="config_preventTemplatedAppsFromShowingDialog">true</bool> |
| |
| <!-- The class name of the templated activities. This is used to detect currently running |
| templated activity.--> |
| <string name="config_template_activity_class_name"> |
| androidx.car.app.activity.CarAppActivity |
| </string> |
| </resources> |