<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2009, 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.
*/
-->

<!-- These resources are around just to allow their values to be customized
     for different hardware and product builds. -->
<resources>
    <!-- Component to be used as the recents implementation.  Must implement the
     RecentsImplementation interface.  This name is in the ComponentName flattened format
     (package/class)  -->
    <string name="config_recentsComponent" translatable="false">com.android.systemui.recents.OverviewProxyRecentsImpl</string>

    <!-- Whether or not we show the number in the bar. -->
    <bool name="config_statusBarShowNumber">false</bool>

    <!-- For how long the lock screen can be on before the display turns off. -->
    <integer name="config_lockScreenDisplayTimeout">10000</integer>

    <!-- Vibrator pattern for camera gesture launch. -->
    <integer-array translatable="false" name="config_cameraLaunchGestureVibePattern">
        <item>0</item>
        <item>400</item>
    </integer-array>

    <!-- Show mic or phone affordance on Keyguard -->
    <bool name="config_keyguardShowLeftAffordance">false</bool>

    <!-- Show camera affordance on Keyguard -->
    <bool name="config_keyguardShowCameraAffordance">false</bool>

    <!-- decay duration (from size_max -> size), in ms -->
    <integer name="navigation_bar_deadzone_hold">333</integer>
    <integer name="navigation_bar_deadzone_decay">333</integer>

    <!-- orientation of the dead zone when touches have recently occurred elsewhere on screen -->
    <integer name="navigation_bar_deadzone_orientation">0</integer>

    <bool name="config_dead_zone_flash">false</bool>

    <!-- Whether to enable dimming navigation buttons when wallpaper is not visible, should be
         enabled for OLED devices to reduce/prevent burn in on the navigation bar (because of the
         black background and static button placements) and disabled for all other devices to
         prevent wasting cpu cycles on the dimming animation -->
    <bool name="config_navigation_bar_enable_auto_dim_no_visible_wallpaper">true</bool>

    <!-- The maximum number of tiles in the QuickQSPanel -->
    <integer name="quick_qs_panel_max_tiles">4</integer>

    <!-- The maximum number of rows in the QuickQSPanel -->
    <integer name="quick_qs_panel_max_rows">2</integer>

    <!-- The number of columns in the QuickSettings -->
    <integer name="quick_settings_num_columns">2</integer>

    <!-- The number of rows in the QuickSettings -->
    <integer name="quick_settings_max_rows">4</integer>

    <!-- The number of columns that the top level tiles span in the QuickSettings -->

    <!-- The default tiles to display in QuickSettings -->
    <string name="quick_settings_tiles_default" translatable="false">
        internet,bt,flashlight,dnd,alarm,airplane,controls,wallet,rotation,battery,cast,screenrecord,mictoggle,cameratoggle,custom(com.android.permissioncontroller/.permission.service.SafetyCenterQsTileService)
    </string>

    <!-- The component name of the Safety Quick Settings Tile -->
    <string name="safety_quick_settings_tile" translatable="false">
        custom(com.android.permissioncontroller/.permission.service.SafetyCenterQsTileService)
    </string>

    <!-- The minimum number of tiles to display in QuickSettings -->
    <integer name="quick_settings_min_num_tiles">6</integer>

    <!-- Tiles native to System UI. Order should match "quick_settings_tiles_default" -->
    <string name="quick_settings_tiles_stock" translatable="false">
        internet,bt,flashlight,dnd,alarm,airplane,controls,wallet,rotation,battery,cast,screenrecord,mictoggle,cameratoggle,location,hotspot,inversion,saver,dark,work,night,reverse,reduce_brightness,qr_code_scanner,onehanded,color_correction
    </string>

    <!-- The tiles to display in QuickSettings -->
    <string name="quick_settings_tiles" translatable="false">default</string>

    <!-- The tiles to display in QuickSettings in retail mode -->
    <string name="quick_settings_tiles_retail_mode" translatable="false">
        night,dark,dnd,flashlight,rotation,location
    </string>

    <!-- Tiles to auto add to Quick Settings upon first change of a given secure setting.
         The syntax is setting-name:spec. If the tile is a TileService, the spec should be specified
         as custom(package/class). Relative class name is supported. -->
    <string-array name="config_quickSettingsAutoAdd" translatable="false">
        <item>accessibility_display_daltonizer_enabled:color_correction</item>
        <item>accessibility_display_inversion_enabled:inversion</item>
        <item>one_handed_mode_enabled:onehanded</item>
    </string-array>

    <!-- Use collapsed layout for media player in landscape QQS -->
    <bool name="config_quickSettingsMediaLandscapeCollapsed">true</bool>

    <!-- Show indicator for Wifi on but not connected. -->
    <bool name="config_showWifiIndicatorWhenEnabled">false</bool>

    <!-- The number of milliseconds before the heads up notification auto-dismisses. -->
    <integer name="heads_up_notification_decay">5000</integer>

    <!-- The number of milliseconds before the heads up notification sent automatically by the system auto-dismisses. -->
    <integer name="auto_heads_up_notification_decay">3000</integer>

    <!-- The number of milliseconds after a heads up notification is pushed back
     before the app can interrupt again. -->
    <integer name="heads_up_default_snooze_length_ms">60000</integer>

    <!-- Minimum display time for a heads up notification, in milliseconds. -->
    <integer name="heads_up_notification_minimum_time">2000</integer>

    <!-- Whether to hide the notification header when the HUN is expanded. -->
    <bool name="heads_up_notification_hides_header">false</bool>

    <!-- The number of milliseconds before the heads up notification accepts touches. -->
    <integer name="touch_acceptance_delay">700</integer>

    <!-- The number of milliseconds to extend ambient pulse by when prompted (e.g. on touch) -->
    <integer name="ambient_notification_extension_time">10000</integer>

    <!-- The maximum count of notifications on Keyguard. The rest will be collapsed in an overflow
     card. -->
    <integer name="keyguard_max_notification_count">-1</integer>

    <!-- Doze: does this device support STATE_DOZE?  -->
    <bool name="doze_display_state_supported">false</bool>

    <!-- Doze: does this device support STATE_DOZE_SUSPEND?  -->
    <bool name="doze_suspend_display_state_supported">false</bool>

    <!-- Doze: should the significant motion sensor be used as a pulse signal? -->
    <bool name="doze_pulse_on_significant_motion">false</bool>

    <!-- Doze: check proximity sensor before pulsing? -->
    <bool name="doze_proximity_check_before_pulse">true</bool>

    <!-- Doze: only register sensors that use prox when device is in certain Display states. This
     delays registering sensors when device first shows dozing UI but the
     Display & Power state hasn't changed to low-power mode yet. -->
    <bool name="doze_selectively_register_prox">false</bool>

    <!-- Doze: whether the single tap sensor uses the proximity sensor.
     If both this parameter and doze_selectively_register_prox are true, registration for the
     sensor will be delayed when the device first enters dozing but the device has not entered its
     low powered state yet. -->
    <bool name="doze_single_tap_uses_prox">true</bool>

    <!-- Doze: whether the single tap sensor uses the proximity sensor in the given posture.
        See doze_single_tap_uses_prox for usage. -->
    <integer-array name="doze_single_tap_uses_prox_posture_mapping">
        <item>1</item> <!-- UNKNOWN -->
        <item>1</item> <!-- CLOSED -->
        <item>1</item> <!-- HALF_OPENED -->
        <item>1</item> <!-- OPENED -->
    </integer-array>

    <!-- Doze: whether the long press sensor uses the proximity sensor.
     If both this parameter and doze_selectively_register_prox are true, registration for the
     sensor will be delayed when the device first enters dozing but the device has not entered its
     low powered state yet. -->
    <bool name="doze_long_press_uses_prox">true</bool>

    <!-- Doze: duration to avoid false pickup gestures triggered by notification vibrations -->
    <integer name="doze_pickup_vibration_threshold">2000</integer>

    <!-- Doze: quick pickup duration to stay in AOD until the next gesture is triggered -->
    <integer name="doze_quick_pickup_aod_duration">5000</integer>

    <!-- Type of a sensor that provides a low-power estimate of the desired display
         brightness, suitable to listen to while the device is asleep (e.g. during
         always-on display) -->
    <string name="doze_brightness_sensor_type" translatable="false"></string>

    <!-- Name of a sensor per posture state that provides a low-power estimate of the desired
         display brightness, suitable to listen to while the device is asleep (e.g. during
         always-on display) -->
    <string-array name="doze_brightness_sensor_name_posture_mapping" translatable="false">
        <!-- UNKNOWN -->
        <!-- CLOSED -->
        <!-- HALF_OPENED -->
        <!-- OPENED -->
    </string-array>

    <!-- Override value to use for proximity sensor.  -->
    <string name="proximity_sensor_type" translatable="false"></string>

    <!-- Sensor type per posture state to use for proximity sensor -->
    <string-array name="proximity_sensor_posture_mapping" translatable="false">
        <!-- UNKNOWN -->
        <!-- CLOSED -->
        <!-- HALF_OPENED -->
        <!-- OPENED -->
    </string-array>

    <!-- If using proximity_sensor_type, specifies a threshold value to distinguish near and
         far break points. A sensor value less than this is considered "near". -->
    <item name="proximity_sensor_threshold" translatable="false" format="float" type="dimen"></item>

    <!-- If using proximity_sensor_type, specifies a threshold value to distinguish near and
         far break points. A sensor value more than this is considered "far". If not set,
         proximity_sensor_threshold is used. This allows one to implement a latching mechanism for
         noisy sensors. -->
    <item name="proximity_sensor_threshold_latch" translatable="false" format="float" type="dimen"></item>

    <!-- Override value to use for proximity sensor as confirmation for proximity_sensor_type. -->
    <string name="proximity_sensor_secondary_type" translatable="false"></string>

    <!-- Sensor type per posture state to use for proximity sensor as a confirmation for
        proximity_sensor_type. -->
    <string-array name="proximity_sensor_secondary_posture_mapping" translatable="false">
        <!-- UNKNOWN -->
        <!-- CLOSED -->
        <!-- HALF_OPENED -->
        <!-- OPENED -->
    </string-array>

    <!-- If using proximity_sensor_secondary_type, specifies a threshold value to distinguish
         near and far break points. A sensor value less than this is considered "near". -->
    <item name="proximity_sensor_secondary_threshold" translatable="false" format="float"
          type="dimen"></item>

    <!-- If using proximity_sensor_secondary_type, specifies a threshold value to distinguish near and
         far break points. A sensor value more than this is considered "far". If not set,
         proximity_sensor_secondary_threshold is used. This allows one to implement a latching
         mechanism for noisy sensors. -->
    <item name="proximity_sensor_secondary_threshold_latch" translatable="false" format="float" type="dimen"></item>

    <!-- Doze: pulse parameter - how long does it take to fade in? -->
    <integer name="doze_pulse_duration_in">130</integer>

    <!-- Doze: pulse parameter - once faded in, how long does it stay visible? -->
    <integer name="doze_pulse_duration_visible">6000</integer>

    <!-- Doze: pulse parameter - how long does it take to fade out? -->
    <integer name="doze_pulse_duration_out">600</integer>

    <!-- Doze: alpha to apply to small icons when dozing -->
    <integer name="doze_small_icon_alpha">222</integer><!-- 87% of 0xff -->

    <!-- Doze: Table that translates sensor values from the doze_brightness_sensor_type sensor
               to brightness values; -1 means keeping the current brightness. -->
    <integer-array name="config_doze_brightness_sensor_to_brightness">
        <item>-1</item> <!-- 0: OFF -->
        <item>2</item> <!-- 1: NIGHT -->
        <item>5</item> <!-- 2: LOW -->
        <item>27</item> <!-- 3: HIGH -->
        <item>28</item> <!-- 4: SUN -->
    </integer-array>

    <!-- Doze: Table that translates sensor values from the doze_brightness_sensor_type sensor
               to an opacity value for a black scrim that is overlayed in AOD1.
               Valid range is from 0 (transparent) to 255 (opaque).
               -1 means keeping the current opacity. -->
    <integer-array name="config_doze_brightness_sensor_to_scrim_opacity">
        <item>-1</item> <!-- 0: OFF -->
        <item>0</item> <!-- 1: NIGHT -->
        <item>0</item> <!-- 2: LOW -->
        <item>0</item> <!-- 3: HIGH -->
        <item>0</item> <!-- 4: SUN -->
    </integer-array>

    <!-- Doze: whether the double tap sensor reports 2D touch coordinates -->
    <bool name="doze_double_tap_reports_touch_coordinates">false</bool>

    <!-- Number of times to show the strong alarm warning text in the volume dialog -->
    <integer name="zen_mode_alarm_warning_threshold">5</integer>

    <!-- Enable the default volume dialog -->
    <bool name="enable_volume_ui">true</bool>

    <!-- Enable the default volume level warning dialog -->
    <bool name="enable_safety_warning">true</bool>

    <!-- Whether to show the full screen user switcher. -->
    <bool name="config_enableFullscreenUserSwitcher">false</bool>

    <!-- SystemUIFactory component -->
    <string name="config_systemUIFactoryComponent" translatable="false">com.android.systemui.SystemUIFactory</string>

    <!-- QS tile shape store width. negative implies fill configuration instead of stroke-->
    <dimen name="config_qsTileStrokeWidthActive">-1dp</dimen>
    <dimen name="config_qsTileStrokeWidthInactive">-1dp</dimen>

    <!-- SystemUI vender service, used in config_systemUIServiceComponents. -->
    <string name="config_systemUIVendorServiceComponent" translatable="false">com.android.systemui.VendorServices</string>

    <!-- SystemUI Services (per user): The classes of the stuff to start for each user. This is a subset of the config_systemUIServiceComponents -->
    <string-array name="config_systemUIServiceComponentsPerUser" translatable="false">
        <item>com.android.systemui.util.NotificationChannels</item>
    </string-array>

    <!-- Nav bar button default ordering/layout -->
    <string name="config_navBarLayout" translatable="false">left[.5W],back[1WC];home;recent[1WC],right[.5W]</string>
    <string name="config_navBarLayoutQuickstep" translatable="false">back[1.7WC];home;contextual[1.7WC]</string>
    <string name="config_navBarLayoutHandle" translatable="false">back[70AC];home_handle;ime_switcher[70AC]</string>

    <!-- Whether to show a warning notification when device's skin temperature is high. -->
    <integer name="config_showTemperatureWarning">0</integer>

    <!-- Whether to show a alarm dialog when device's usb port is overheating. -->
    <integer name="config_showUsbPortAlarm">0</integer>

    <item type="id" name="action_toggle_overview"/>

    <!-- Whether or not to show notifications to the user. If disabled, SystemUI will still be
         registered as a notification listener, but will ignore all notification events. -->
    <bool name="config_renderNotifications">true</bool>

    <!-- Whether or not the gear icon on notifications should be shown. The gear is shown when the
         the notification is not swiped enough to dismiss it. -->
    <bool name="config_showNotificationGear">true</bool>

    <!-- Whether or not a background should be drawn behind a notification. -->
    <bool name="config_drawNotificationBackground">false</bool>

    <!-- Whether or the notifications can be shown and dismissed with a drag. -->
    <bool name="config_enableNotificationShadeDrag">true</bool>

    <!-- Whether to show activity indicators in the status bar -->
    <bool name="config_showActivity">false</bool>

    <!-- Whether or not the button to clear all notifications will be shown. -->
    <bool name="config_enableNotificationsClearAll">true</bool>

    <!-- Whether or not to show the notification shelf that houses the icons of notifications that
     have been scrolled off-screen. -->
    <bool name="config_showNotificationShelf">true</bool>

    <!-- Whether or not the notifications should always fade as they are dismissed. -->
    <bool name="config_fadeNotificationsOnDismiss">false</bool>

    <!-- Whether or not the fade on the notification is based on the amount that it has been swiped
         off-screen. -->
    <bool name="config_fadeDependingOnAmountSwiped">false</bool>

    <!-- Whether or the notifications should be clipped to be reduced in height if it has been
         scrolled to the top of the screen. -->
    <bool name="config_clipNotificationScrollToTop">true</bool>

    <!-- Whether or not the notification contents should be clipped to any background that is
         set on the notification container. For example, if this value is true and the background
         has rounded corners, then the contents will be clipped to those corners. -->
    <bool name="config_clipNotificationsToOutline">false</bool>

    <!-- Whether or not notifications that can be expanded will always be in their expanded state.
         This value only affects notifications that are not a group of notifications from the same
         applications. If this value is false, then only the first notification will be expanded;
         the other notifications need to be manually expanded by the user. -->
    <bool name="config_alwaysExpandNonGroupedNotifications">false</bool>

    <!-- Whether or not an expandable notification can be manually expanded or collapsed by the
         user. Grouped notifications are still expandable even if this value is false. -->
    <bool name="config_enableNonGroupedNotificationExpand">true</bool>

    <!-- Whether or not there should be dividing lines between child notifications when the
         group has been expanded. -->
    <bool name="config_showDividersWhenGroupNotificationExpanded">false</bool>

    <!-- Whether or not the dividing lines should be shown when the container is expanding and
         collapsing. If this value is true, then the lines will only show when the container has
         been completely expanded. -->
    <bool name="config_hideDividersDuringExpand">true</bool>

    <!-- Whether or not child notifications that are part of a group will have shadows. -->
    <bool name="config_enableShadowOnChildNotifications">true</bool>

    <!-- If true, group numbers are shown in the expander instead of via "+N" overflow number -->
    <bool name="config_showNotificationGroupCountInExpander">true</bool>

    <!-- Whether or not a view containing child notifications will have a custom background when
         it has been expanded to reveal its children. -->
    <bool name="config_showGroupNotificationBgWhenExpanded">false</bool>

    <!-- Should we vibrate on an icon animation of the shelf. This should only be active if the
     vibrator is capable of subtle vibrations -->
    <bool name="config_vibrateOnIconAnimation">false</bool>

    <!-- Notifications are sized to match the width of two (of 4) qs tiles in landscape. -->
    <bool name="config_skinnyNotifsInLandscape">true</bool>

    <!-- Snooze: default notificaiton snooze time. -->
    <integer name="config_notification_snooze_time_default">60</integer>

    <!-- Snooze: List of snooze values in integer minutes. -->
    <integer-array name="config_notification_snooze_times">
        <item>15</item>
        <item>30</item>
        <item>60</item>
        <item>120</item>
    </integer-array>

    <!-- Smart replies in notifications: Whether smart replies in notifications are enabled. -->
    <bool name="config_smart_replies_in_notifications_enabled">true</bool>

    <!-- Smart replies in notifications: Whether we disable the feature unless the app targets P -->
    <bool name="config_smart_replies_in_notifications_requires_targeting_p">true</bool>

    <!-- Smart replies in notifications: Maximum number of times SmartReplyView will try to find a
         better (narrower) line-break for a double-line smart reply button. -->
    <integer name="config_smart_replies_in_notifications_max_squeeze_remeasure_attempts">3</integer>

    <!-- Smart replies in notifications: Whether by default tapping on a choice should let the user
         edit the input before it is sent to the app. Developers can override this via
         RemoteInput.Builder.setEditChoicesBeforeSending. -->
    <bool name="config_smart_replies_in_notifications_edit_choices_before_sending">false</bool>

    <!-- Smart replies in notifications: Whether smart suggestions in notifications are enabled in
         heads-up notifications.  -->
    <bool name="config_smart_replies_in_notifications_show_in_heads_up">true</bool>

    <!-- Smart replies in notifications: Minimum number of system generated smart replies that
         should be shown in a notification. If we cannot show at least this many replies we instead
         show none. -->
    <integer name="config_smart_replies_in_notifications_min_num_system_generated_replies">0</integer>

    <!-- Smart replies in notifications: Maximum number of smart actions to show in notifications.
         -->
    <integer name="config_smart_replies_in_notifications_max_num_actions">-1</integer>

    <!-- Smart replies in notifications: Delay (ms) before smart suggestions are clickable, since
         they were added. -->
    <integer name="config_smart_replies_in_notifications_onclick_init_delay">200</integer>

    <!-- Screenshot editing default activity.  Must handle ACTION_EDIT image/png intents.
         Blank sends the user to the Chooser first.
         This name is in the ComponentName flattened format (package/class)  -->
    <string name="config_screenshotEditor" translatable="false"></string>

    <!-- Remote copy default activity.  Must handle REMOTE_COPY_ACTION intents.
     This name is in the ComponentName flattened format (package/class)  -->
    <string name="config_remoteCopyPackage" translatable="false"></string>

    <!-- On debuggable builds, alert the user if SystemUI PSS goes over this number (in kb) -->
    <integer name="watch_heap_limit">256000</integer>

    <!-- SystemUI Plugins that can be loaded on user builds. -->
    <string-array name="config_pluginWhitelist" translatable="false">
        <item>com.android.systemui</item>
    </string-array>

    <!-- Launcher package name for overlaying icons. -->
    <string name="launcher_overlayable_package" translatable="false">com.android.launcher3</string>

    <!-- ThemePicker package name for overlaying icons. -->
    <string name="themepicker_overlayable_package" translatable="false">com.android.wallpaper</string>

    <!-- Default rounded corner curve (a Bezier). Must match (the curved path in) rounded.xml.
         Note that while rounded.xml includes the entire path (including the horizontal and vertical
         corner edges), this pulls out just the curve.
     -->
    <string name="config_rounded_mask" translatable="false">"M8,0C3.6,0,0,3.6,0,8"</string>

    <!-- Preferred refresh rate at keyguard, if supported by the display. Overrides
         keyguardMaxRefreshRate. -->
    <integer name="config_keyguardRefreshRate">-1</integer>

    <!-- Preferred max refresh rate at keyguard, if supported by the display. -->
    <integer name="config_keyguardMaxRefreshRate">-1</integer>

    <!-- Defines system icons to be excluded from the display. That is to say, the icons in the
         status bar that are part of this list are never displayed. Each item in the list must be a
         string defined in core/res/res/config.xml to properly exclude the icon.
     -->
    <string-array name="config_statusBarIconsToExclude" translatable="false">
        <item>@*android:string/status_bar_rotate</item>
        <item>@*android:string/status_bar_headset</item>
    </string-array>


    <!-- Whether to show estimate in QS header. Default to false in case there's not enough
     space -->
    <bool name="config_showBatteryEstimateQSBH">false</bool>

    <!-- Whether to show a severe low battery dialog. -->
    <bool name="config_severe_battery_dialog">false</bool>

    <!-- A path similar to frameworks/base/core/res/res/values/config.xml
      config_mainBuiltInDisplayCutout that describes a path larger than the exact path of a display
      cutout. If present as well as config_enableDisplayCutoutProtection is set to true, then
      SystemUI will draw this "protection path" instead of the display cutout path that is normally
      used for anti-aliasing.

      This path will only be drawn when the front-facing camera turns on, otherwise the main
      DisplayCutout path will be rendered
       -->
    <string translatable="false" name="config_frontBuiltInDisplayCutoutProtection"></string>

    <!--  ID for the camera that needs extra protection -->
    <string translatable="false" name="config_protectedCameraId"></string>

    <!-- Comma-separated list of packages to exclude from camera protection e.g.
    "com.android.systemui,com.android.xyz" -->
    <string translatable="false" name="config_cameraProtectionExcludedPackages"></string>

    <!--  Flag to turn on the rendering of the above path or not  -->
    <bool name="config_enableDisplayCutoutProtection">false</bool>

    <!-- Controls can query 2 preferred applications for limited number of suggested controls.
         This config value should contain a list of package names of thoses preferred applications.
    -->
    <string-array translatable="false" name="config_controlsPreferredPackages" />

    <!-- Max number of columns for quick controls area -->
    <integer name="controls_max_columns">2</integer>

    <!-- Max number of columns for power menu lite -->
    <integer name="power_menu_lite_max_columns">2</integer>
    <!-- Max number of rows for power menu lite -->
    <integer name="power_menu_lite_max_rows">4</integer>

    <!-- If the dp width of the available space is <= this value, potentially adjust the number
         of columns-->
    <integer name="controls_max_columns_adjust_below_width_dp">320</integer>
    <!-- If the config font scale is >= this value, potentially adjust the number of columns-->
    <item name="controls_max_columns_adjust_above_font_scale" translatable="false" format="float" type="dimen">1.25</item>

    <!-- Show a separate icon for low and high volume on the volume dialog -->
    <bool name="config_showLowMediaVolumeIcon">false</bool>

    <!-- Change the volume row tint when it is inactive, i.e. when it is being dismissed -->
    <bool name="config_changeVolumeRowTintWhenInactive">true</bool>

    <!-- The duraction of the show animation for the volume dialog in milliseconds -->
    <integer name="config_dialogShowAnimationDurationMs">300</integer>

    <!-- The duraction of the hide animation for the volume dialog in milliseconds -->
    <integer name="config_dialogHideAnimationDurationMs">250</integer>

    <!-- Whether or not to show a notification for an unknown battery state -->
    <bool name="config_showNotificationForUnknownBatteryState">false</bool>
    <!-- content URL in a notification when ACTION_BATTERY_CHANGED.EXTRA_PRESENT field is false -->
    <string translatable="false" name="config_batteryStateUnknownUrl"></string>

    <!-- Package name of the preferred system app to perform eSOS action -->
    <string name="config_preferredEmergencySosPackage" translatable="false"></string>

    <!-- Whether to use the split 2-column notification shade -->
    <bool name="config_use_split_notification_shade">false</bool>

    <!-- Whether we use large screen shade header which takes only one row compared to QS header -->
    <bool name="config_use_large_screen_shade_header">false</bool>

    <!-- Whether notification header should never show section headers. -->
    <bool name="config_notification_never_show_section_headers">false</bool>

    <!-- Default udfps icon. Same path as ic_fingerprint.xml -->
    <string name="config_udfpsIcon" translatable="false">
        M25.5,16.3283C28.47,14.8433 31.9167,14 35.5834,14C39.2501,14 42.6968,14.8433 45.6668,16.3283
        M20,28.6669C22.7683,24.3402 28.7084,21.3335 35.5834,21.3335C42.4585,21.3335 48.3985,
        24.3402 51.1669,28.6669
        M22.8607,47.0002C21.834,44.3235 21.834,41.5002 21.834,41.5002C21.834,
        34.4051 27.7374,28.6667 35.5841,28.6667C43.4308,28.6667 49.3341,34.4051 49.3341,41.5002
        M49.3344,41.5003V42.0319C49.3344,44.7636 47.1161,47.0003 44.3661,47.0003C41.9461,
        47.0003 39.8744,45.2403 39.471,42.857L38.9577,
        39.7769C38.591,37.5953 36.7027,36.0002 34.5027,
        36.0002C26.5826,36.0002 29.846,49.1087 35.291,50.6487
        M44.9713,54.6267C42.5513,56.7167 39.2879,58.0001 35.5846,58.0001C32.2296,
        58.0001 29.2229,56.9551 26.8945,55.195
    </string>

    <!-- The radius of the enrollment progress bar, in dp -->
    <integer name="config_udfpsEnrollProgressBar" translatable="false">
        280
    </integer>

    <!-- package name of a built-in camera app to use to restrict implicit intent resolution
         when the double-press power gesture is used. Ignored if empty. -->
    <string translatable="false" name="config_cameraGesturePackage"></string>

    <!-- Determines whether to allow the nav bar handle to be forced to be opaque. -->
    <bool name="allow_force_nav_bar_handle_opaque">true</bool>

    <!-- Whether a transition of ACTIVITY_TYPE_DREAM to the home app should play a home sound
         effect -->
    <bool name="config_playHomeSoundAfterDream">false</bool>

    <!-- Whether a transition of ACTIVITY_TYPE_ASSISTANT to the home app should play a home sound
         effect -->
    <bool name="config_playHomeSoundAfterAssistant">false</bool>

    <!-- Whether to use window background blur for the volume dialog. -->
    <bool name="config_volumeDialogUseBackgroundBlur">false</bool>

    <!-- The properties of the face auth camera in pixels -->
    <integer-array name="config_face_auth_props">
        <!-- sensorLocationX -->
        <!-- sensorLocationY -->
        <!--sensorRadius -->
    </integer-array>

    <!-- Overrides the behavior of the face unlock keyguard bypass setting:
         0 - Don't override the setting (default)
         1 - Override the setting to always bypass keyguard
         2 - Override the setting to never bypass keyguard -->
    <integer name="config_face_unlock_bypass_override">0</integer>

    <!-- Which face help messages to surface when fingerprint is also enrolled.
         Message ids correspond with the acquired ids in BiometricFaceConstants -->
    <integer-array name="config_face_help_msgs_when_fingerprint_enrolled">
        <!-- for example: <item>26</item> for FACE_ACQUIRED_MOUTH_COVERING_DETECTED -->
    </integer-array>

    <!-- Whether the communal service should be enabled -->
    <bool name="config_communalServiceEnabled">false</bool>

    <!-- Component name of communal source service -->
    <string name="config_communalSourceComponent" translatable="false">@null</string>

    <!-- This value is used when calculating whether the device is in ambient light mode. It is
        light mode when the light sensor sample value exceeds above this value. -->
    <integer name="config_ambientLightModeThreshold">5</integer>

    <!-- This value is used when calculating whether the device is in ambient dark mode. It is
        dark mode when the light sensor sample value drops below this value. -->
    <integer name="config_ambientDarkModeThreshold">2</integer>

    <!-- This value is used when calculating whether the device is in ambient light mode. Each
        sample contains light sensor events from this span of time duration. -->
    <integer name="config_ambientLightModeSamplingSpanMillis">10000</integer>

    <!-- This value is used when calculating whether the device is in ambient dark mode. Each
    sample contains light sensor events from this span of time duration. -->
    <integer name="config_ambientDarkModeSamplingSpanMillis">2000</integer>

    <!-- This value is used when calculating whether the device is in ambient light mode. The
        samples are collected at this frequency. -->
    <integer name="config_ambientLightModeSamplingFrequencyMillis">1000</integer>

    <!-- This value is used when calculating whether the device is in ambient dark mode. The
    samples are collected at this frequency. -->
    <integer name="config_ambientDarkModeSamplingFrequencyMillis">500</integer>

    <!-- The maximum number of attempts to reconnect to the communal source target after failing
         to connect -->
    <integer name="config_communalSourceMaxReconnectAttempts">10</integer>

    <!-- The initial amount of time (in milliseconds) before attempting to reconnect to a communal
         source. This value is used as the base value in an exponential backoff in subsequent
         attempts. -->
    <integer name="config_communalSourceReconnectBaseDelay">1000</integer>

    <!-- The minimum time in milliseconds for a connection to be considered connected. Any time -->
    <integer name="config_connectionMinDuration">1000</integer>

    <!-- Flag to activate notification to contents feature -->
    <bool name="config_notificationToContents">true</bool>

    <!-- The rounded corner drawable for each display in a multi-display device.
         {@see com.android.internal.R.array#config_displayUniqueIdArray} -->
    <array name="config_roundedCornerDrawableArray">
        <item>@drawable/rounded</item>
        <item>@drawable/rounded_secondary</item>
    </array>

    <!-- The top rounded corner drawable for each display in a multi-display device.
         {@see com.android.internal.R.array#config_displayUniqueIdArray} -->
    <array name="config_roundedCornerTopDrawableArray">
        <item>@drawable/rounded_corner_top</item>
        <item>@drawable/rounded_corner_top_secondary</item>
    </array>

    <!-- The bottom rounded corner drawable for each display in a multi-display device.
         {@see com.android.internal.R.array#config_displayUniqueIdArray} -->
    <array name="config_roundedCornerBottomDrawableArray">
        <item>@drawable/rounded_corner_bottom</item>
        <item>@drawable/rounded_corner_bottom_secondary</item>
    </array>

    <!-- Flag to enable privacy dot views, it shall be true for normal case -->
    <bool name="config_enablePrivacyDot">true</bool>

    <!-- Flag to enable dream overlay service and its registration -->
    <bool name="config_dreamOverlayServiceEnabled">false</bool>

    <!-- Class for the communal source connector to be used -->
    <string name="config_communalSourceConnector" translatable="false"></string>

    <!-- How often in milliseconds to jitter the dream overlay in order to avoid burn-in. -->
    <integer name="config_dreamOverlayBurnInProtectionUpdateIntervalMillis">500</integer>

    <!-- How long in milliseconds before full burn-in protection is achieved. -->
    <integer name="config_dreamOverlayMillisUntilFullJitter">240000</integer>

    <integer name="complicationFadeOutMs">500</integer>

    <integer name="complicationFadeInMs">500</integer>

    <integer name="complicationRestoreMs">1000</integer>

    <!-- Icons that don't show in a collapsed non-keyguard statusbar -->
    <string-array name="config_collapsed_statusbar_icon_blocklist" translatable="false">
        <item>@*android:string/status_bar_volume</item>
        <item>@*android:string/status_bar_alarm_clock</item>
        <item>@*android:string/status_bar_call_strength</item>
    </string-array>

    <!-- Icons that don't show in a collapsed statusbar on keyguard -->
    <string-array name="config_keyguard_statusbar_icon_blocklist" translatable="false">
        <item>@*android:string/status_bar_volume</item>
        <item>@*android:string/status_bar_alarm_clock</item>
        <item>@*android:string/status_bar_call_strength</item>
    </string-array>

    <!-- Packages of SystemUI -->
    <string-array name="system_ui_packages" translatable="false">
        <item>com.android.keyguard</item>
        <item>com.android.systemui</item>
    </string-array>
</resources>
