<?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 master mute state. If this is set to true,
          Android will restore the master 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>

    <!--  Whether to enable Activity blocking for safety. When Activity blocking is enabled,
          only whitelisted 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 whitelist 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 whitelist 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
          whitelisted. 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.packageinstaller.permission.ui.GrantPermissionsActivity,android/com.android.internal.app.ResolverActivity</string>
    <!--  Comma separated list of activities that will be blocked during restricted state.
          Format of each entry is either to specify package name to whitelist 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 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={true|false},user={all|system|foreground},trigger={asap,userUnlocked}</item>

         bind: indicates whether service needs to be bound or started, if the value is 'true'
               the service will be bound by calling Context#bindService(...), otherwise it will
               be started using Context#startService. If service was bound it will be restarted
               unless it is constantly crashing. The default value is 'false'
         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">
        <!-- list your services here -->
    </string-array>

    <string name="config_TetheredProjectionAccessPointSsid" translatable="false">CarAP</string>

    <!-- 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>

    <!-- 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>

</resources>
