<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

    <!-- If false, MIN is displayed. If true, MSID is displayed. -->
    <bool name="config_msid_enable" translatable="false">false</bool>

    <string name="additional_system_update" translatable="false"></string>
    <string name="additional_system_update_menu" translatable="false"></string>

    <!-- TODO: This is purely enforced by the interface, and does not affect what
         strings may be inserted into the actual content provider.
         With the addition of shortcuts, it seems more likely that users will
         find this limiting; it would be good to have the interface work with
         very long strings too. -->
    <integer name="maximum_user_dictionary_word_length" translatable="false">48</integer>

    <!-- Carrier_enabled editable -->
    <bool name="config_allow_edit_carrier_enabled" translatable="false">false</bool>

    <!-- When true enable color temperature setting. -->
    <bool name="config_enableColorTemperature">false</bool>

    <!-- Whether to show Camera laser sensor switch in Developer Options -->
    <bool name="config_show_camera_laser_sensor">false</bool>

    <!-- Intent action to open Avatar Picker app -->
    <string name="config_avatar_picker_action" translatable="false">
        com.android.avatarpicker.FULL_SCREEN_ACTIVITY
    </string>
    <!-- User avatar dialog result broadcast explicit package -->
    <string name="config_avatar_picker_package" translatable="false">
        com.android.avatarpicker
    </string>

    <!-- Package name and fully-qualified class name for the wallpaper picker activity. -->
    <string name="config_wallpaper_picker_package" translatable="false">com.android.settings</string>
    <string name="config_wallpaper_picker_class" translatable="false">com.android.settings.Settings$WallpaperSettingsActivity</string>
    <!-- Fully-qualified class name for the styles & wallpaper picker activity. -->
    <string name="config_styles_and_wallpaper_picker_class" translatable="false"></string>
    <!-- Action name for the wallpaper picker activity. -->
    <string name="config_wallpaper_picker_action" translatable="false"></string>
    <!-- Action name for the styles & wallpaper picker activity. -->
    <string name="config_styles_and_wallpaper_picker_action" translatable="false"></string>
    <!-- Intent extra for wallpaper picker activity. -->
    <string name="config_wallpaper_picker_launch_extra" translatable="false">com.android.wallpaper.LAUNCH_SOURCE</string>

    <!-- Manufacturer backup settings to launch -->
    <string name="config_backup_settings_intent" translatable="false"></string>

    <!-- Manufacturer backup settings label -->
    <string name="config_backup_settings_label" translatable="true"></string>

    <!-- Double twist sensor type and vendor used by gesture setting -->
    <string name="gesture_double_twist_sensor_type" translatable="false"></string>
    <string name="gesture_double_twist_sensor_vendor" translatable="false"></string>

    <!-- If the Storage Manager settings are enabled. -->
    <bool name="config_storage_manager_settings_enabled">false</bool>

    <!-- If the support features are enabled. -->
    <bool name="config_support_enabled">false</bool>

    <!-- List containing the component names of pre-installed screen reader services. -->
    <string-array name="config_preinstalled_screen_reader_services" translatable="false">
        <!--
        <item>com.example.package.first/com.example.class.FirstService</item>
        <item>com.example.package.second/com.example.class.SecondService</item>
        -->
    </string-array>

    <!-- List containing the component names of pre-installed captioning services. -->
    <string-array name="config_preinstalled_captions_services" translatable="false">
        <!--
        <item>com.example.package.first/com.example.class.FirstService</item>
        <item>com.example.package.second/com.example.class.SecondService</item>
        -->
    </string-array>

    <!-- List containing the component names of pre-installed audio and captioning services. -->
    <string-array name="config_preinstalled_audio_services" translatable="false">
        <!--
        <item>com.example.package.first/com.example.class.FirstService</item>
        <item>com.example.package.second/com.example.class.SecondService</item>
        -->
    </string-array>

    <!-- List containing the component names of pre-installed display services. -->
    <string-array name="config_preinstalled_display_services" translatable="false">
        <!--
        <item>com.example.package.first/com.example.class.FirstService</item>
        <item>com.example.package.second/com.example.class.SecondService</item>
        -->
    </string-array>

    <!-- List containing the component names of pre-installed speech services. -->
    <string-array name="config_preinstalled_speech_services" translatable="false">
        <!--
        <item>com.example.package.first/com.example.class.FirstService</item>
        <item>com.example.package.second/com.example.class.SecondService</item>
        -->
    </string-array>

    <!-- List containing the component names of pre-installed interaction control services. -->
    <string-array name="config_preinstalled_interaction_control_services" translatable="false">
        <!--
        <item>com.example.package.first/com.example.class.FirstService</item>
        <item>com.example.package.second/com.example.class.SecondService</item>
        -->
    </string-array>

    <!-- List containing the order of services in screen reader category by {@link ComponentName}.
         All {@link ComponentName} in a category need to be specified to guarantee correct
         behavior.-->
    <string-array name="config_order_screen_reader_services" translatable="false">
        <!--
        <item>com.example.package.first/com.example.class.FirstService</item>
        <item>com.example.package.second/com.example.class.SecondService</item>
        -->
    </string-array>

    <!-- List containing the order of services in captions category by preference key or
         {@link ComponentName}. All preference keys in a category need to be specified to guarantee
         correct behavior.-->
    <string-array name="config_order_captions_services" translatable="false">
        <!--
        <item>com.example.package.first/com.example.class.FirstService</item>
        <item>com.example.package.second/com.example.class.SecondService</item>
        <item>captioning_preference_screen</item>
        <item>rtt_setting</item>
        <item>...</item>
        -->
    </string-array>

    <!-- List containing the order of services in audio and caption category by preference key or
         {@link ComponentName}. All preference keys in a category need to be specified to guarantee
         correct behavior.-->
    <string-array name="config_order_audio_services" translatable="false">
        <!--
        <item>com.example.package.first/com.example.class.FirstService</item>
        <item>com.example.package.second/com.example.class.SecondService</item>
        <item>toggle_primary_mono</item>
        <item>seekbar_primary_balance</item>
        <item>...</item>
        -->
    </string-array>

    <!-- List containing the order of services in display category by preference key or
         {@link ComponentName}. All preference keys in a category need to be specified to guarantee
         correct behavior.-->
    <string-array name="config_order_display_services" translatable="false">
        <!--
        <item>com.example.package.first/com.example.class.FirstService</item>
        <item>com.example.package.second/com.example.class.SecondService</item>
        <item>font_size_preference_screen</item>
        <item>dark_ui_mode_accessibility</item>
        <item>...</item>
        -->
    </string-array>

    <!-- List containing the order of services in speech category by preference key or
         {@link ComponentName}. All preference keys in a category need to be specified to guarantee
         correct behavior.-->
    <string-array name="config_order_speech_services" translatable="false">
        <!--
        <item>com.example.package.first/com.example.class.FirstService</item>
        <item>com.example.package.second/com.example.class.SecondService</item>
        <item>font_size_preference_screen</item>
        <item>dark_ui_mode_accessibility</item>
        <item>...</item>
        -->
    </string-array>

    <!-- List containing the order of services in interaction control category by preference key or
         {@link ComponentName}. All preference keys in a category need to be specified to guarantee
         correct behavior.-->
    <string-array name="config_order_interaction_control_services" translatable="false">
        <!--
        <item>com.example.package.first/com.example.class.FirstService</item>
        <item>com.example.package.second/com.example.class.SecondService</item>
        <item>autoclick_preference</item>
        <item>toggle_power_button_ends_call_preference</item>
        <item>...</item>
        -->
    </string-array>

    <!-- List of packages that should be allowlisted for slice uri access. Do not translate -->
    <string-array name="slice_allowlist_package_names" translatable="false"/>

    <!-- Whether to use a UI variant that minimizes the number of UI elements on screen. This is
         typically used when there is not enough space to display everything, because pattern view
         doesn't interact well with scroll view -->
    <bool name="config_lock_pattern_minimal_ui">true</bool>

    <!-- List of a11y components on the device allowed to be enabled by Settings Slices -->
    <string-array name="config_settings_slices_accessibility_components" translatable="false"/>

    <!-- Whether or not to show the night light suggestion. -->
    <bool name="config_night_light_suggestion_enabled">true</bool>

    <!-- The number of vibration intensity levels supported by the device.

         Note that this should correspond to the ability to vary the vibration amplitude, with
         enough dynamic range to have at least as many distinct intensity levels as defined here.

         Supported values are 1, 2, 3. If '1', the settings app will use a toggle for the settings,
         otherwise a slider. If '3', the settings app maps intensities directly to the levels
         supported by the Vibrator HAL APIs. If '2', then the levels will be mapped to
         VIBRATION_INTENSITY_LOW and VIBRATION_INTENSITY_HIGH, which gives the most range for
         scaling vibrations. The medium intensity will be skipped.

         The default intensity values are configured at
         frameworks/base/core/res/res/values/config.xml's config_default[type]VibrationIntensity.
         Make sure that each default intensity value is consistent with the supported levels set
         here. If this settings supports only 2 levels, for example, then the default intensity
         should be either LOW (1) or HIGH (3).
    -->
    <integer name="config_vibration_supported_intensity_levels">1</integer>

    <!-- Whether or not to show Media vibration settings in the vibration and haptics screen.
         Can be overridden for specific product builds if the target device does not support it -->
    <bool name="config_media_vibration_supported">true</bool>

    <!-- Whether to show Keyboard vibration settings in the vibration and haptics screen. -->
    <bool name="config_keyboard_vibration_supported">false</bool>

    <!--
        Whether or not the homepage should be powered by legacy suggestion (versus contextual cards)
        Default to true as not all devices support contextual cards.
    -->
    <bool name="config_use_legacy_suggestion">true</bool>

    <!-- Whether or not homepage should display user's account avatar -->
    <bool name="config_show_avatar_in_homepage">false</bool>

    <!-- Whether or not emergency info tile should display in device info page -->
    <bool name="config_show_emergency_info_in_device_info">true</bool>

    <!-- Whether or not branded account info tile should display in device info page -->
    <bool name="config_show_branded_account_in_device_info">true</bool>

    <!-- Whether or not device header widget tile should display in device info page -->
    <bool name="config_show_device_header_in_device_info">true</bool>

    <!-- Whether or not TopLevelSettings should force rounded icon for injected tiles -->
    <bool name="config_force_rounded_icon_TopLevelSettings">true</bool>

    <!-- Whether dismissal timestamp should be kept before deletion -->
    <bool name="config_keep_contextual_card_dismissal_timestamp">false</bool>

    <!-- Settings intelligence package name -->
    <string name="config_settingsintelligence_package_name" translatable="false">
        com.android.settings.intelligence
    </string>

    <!-- Package Installer package name -->
    <string name="config_package_installer_package_name" translatable="false">
        com.android.packageinstaller
    </string>

    <!-- Settings intelligence interaction log intent action -->
    <string name="config_settingsintelligence_log_action" translatable="false"></string>

    <!-- Whether Settings intelligence supports presenting Slices. -->
    <bool name="config_settingsintelligence_slice_supported">false</bool>

    <!-- AOSP Emergency app package name -->
    <string name="config_aosp_emergency_package_name" translatable="false">
        com.android.emergency
    </string>

    <!-- AOSP Emergency app intent action -->
    <string name="config_aosp_emergency_intent_action" translatable="false">
        android.settings.EDIT_EMERGENCY_INFO
    </string>

    <!-- Emergency app package name -->
    <string name="config_emergency_package_name" translatable="false">
        com.android.emergency
    </string>

    <!-- Emergency app intent action -->
    <string name="config_emergency_intent_action" translatable="false">
        android.settings.EDIT_EMERGENCY_INFO
    </string>

    <!-- Email address for the homepage contextual cards feedback -->
    <string name="config_contextual_card_feedback_email" translatable="false"></string>

    <!-- ComponentName to launch a vendor-specific enrollment activity if available -->
    <string name="config_face_enroll" translatable="false"></string>

    <!-- ComponentName to launch a vendor-specific posture guidance activity if available -->
    <string name="config_face_enroll_guidance_page" translatable="false"></string>

    <!-- Whether to support posture listening for face auth, default is 0(DEVICE_POSTURE_UNKNOWN)
     means setting will try listening on device posture changes.
     0 : DEVICE_POSTURE_UNKNOWN
     1 : DEVICE_POSTURE_CLOSED
     2 : DEVICE_POSTURE_HALF_OPENED
     3 : DEVICE_POSTURE_OPENED
     4 : DEVICE_POSTURE_FLIPPED
     -->
    <integer name="config_face_enroll_supported_posture">0</integer>

    <!-- Whether to show the "less secure" info section on the face enroll intro screen -->
    <bool name="config_face_intro_show_less_secure">false</bool>

    <!-- Whether to show the "require eyes" info section on the face enroll intro screen -->
    <bool name="config_face_intro_show_require_eyes">true</bool>

    <!-- Whether to use the Lottie animation for the face education enrollment screen -->
    <bool name="config_face_education_use_lottie">false</bool>

    <!-- Whether to support enrollment during setup wizard flow -->
    <bool name="config_suw_support_face_enroll">true</bool>

    <!-- App intent -->
    <string name="config_account_intent_uri" translatable="false"></string>

    <!-- Whether or not the dock settings are to be displayed for this device when docked -->
    <bool name="has_dock_settings">false</bool>
    <!-- Whether there is a boot sounds checkbox -->
    <bool name="has_boot_sounds">false</bool>

    <!-- Display additional System Update menu if true -->
    <bool name="config_additional_system_update_setting_enable">false</bool>

    <!-- Whether the bluetooth activation confirmation dialogs should be auto dismissed.
         Can be overridden for specific product builds. -->
    <bool name="auto_confirm_bluetooth_activation_dialog">false</bool>

    <!-- Whether the device name is shown in About device or not -->
    <bool name="config_show_device_name">true</bool>

    <!-- Whether to show a preference item for the manual in About phone -->
    <bool name="config_show_manual">false</bool>
    <!-- Whether to show a preference item for regulatory information in About phone -->
    <bool name="config_show_regulatory_info">false</bool>
    <!-- Package name of regulatory information overlay which provides mapping and contents.
         Fetch resource from overlay package directly if this is set. -->
    <string name="config_regulatory_info_overlay_package_name" translatable="false" />

    <!-- Whether none security option is hide or not  (country specific). -->
    <bool name="config_hide_none_security_option">false</bool>

    <!-- Whether swipe security option is hidden or not -->
    <bool name="config_hide_swipe_security_option">false</bool>

    <!-- Whether Wi-Fi settings should be shown or not.
    This also controls whether Wi-fi related sub-settings (e.g. Wi-Fi preferences) will
    surface in search results or not.-->
    <bool name="config_show_wifi_settings">true</bool>

    <!-- Whether Wi-Fi hotspot settings should be shown or not. -->
    <bool name="config_show_wifi_hotspot_settings">true</bool>

    <!-- Whether Wi-Fi hotspot speed should be shown or not. -->
    <bool name="config_show_wifi_hotspot_speed">true</bool>

    <!-- Whether toggle_airplane is available or not. -->
    <bool name="config_show_toggle_airplane">true</bool>

    <!-- Whether private_dns_settings is available or not. -->
    <bool name="config_show_private_dns_settings">true</bool>

    <!-- Whether memory from app_info_settings is available or not. -->
    <bool name="config_show_app_info_settings_memory">false</bool>

    <!-- Whether battery from app_info_settings is available or not. -->
    <bool name="config_show_app_info_settings_battery">true</bool>

    <!-- Whether location scanning is available or not. -->
    <bool name="config_show_location_scanning">true</bool>

    <!-- Whether media_volume should be shown or not. -->
    <bool name="config_show_media_volume">true</bool>

    <!-- Whether alarm_volume should be shown or not. -->
    <bool name="config_show_alarm_volume">true</bool>

    <!-- Whether call_volume should be shown or not. -->
    <bool name="config_show_call_volume">true</bool>

    <!-- Whether notification_volume should be shown or not. -->
    <bool name="config_show_notification_volume">true</bool>

    <!-- Whether notification_ringtone should be shown or not. -->
    <bool name="config_show_notification_ringtone">true</bool>

    <!-- Whether screen_locking_sounds should be shown or not. -->
    <bool name="config_show_screen_locking_sounds">true</bool>

    <!-- Whether charging_sounds should be shown or not. -->
    <bool name="config_show_charging_sounds">true</bool>

    <!-- Whether touch_sounds should be shown or not. -->
    <bool name="config_show_touch_sounds">true</bool>

    <!-- Whether encryption_and_credentials_encryption_status should be shown or not. -->
    <bool name="config_show_encryption_and_credentials_encryption_status">true</bool>

    <!-- Whether premium_sms should be shown or not. -->
    <bool name="config_show_premium_sms">true</bool>

    <!-- Whether data_saver should be shown or not. -->
    <bool name="config_show_data_saver">true</bool>

    <!-- Whether enabled_vr_listeners should be shown or not. -->
    <bool name="config_show_enabled_vr_listeners">true</bool>

    <!-- Whether phone_language should be shown or not. -->
    <bool name="config_show_phone_language">true</bool>

    <!-- Whether virtual_keyboard_pref should be shown or not. -->
    <bool name="config_show_virtual_keyboard_pref">true</bool>

    <!-- Whether physical_keyboard_pref should be shown or not. -->
    <bool name="config_show_physical_keyboard_pref">true</bool>

    <!-- Whether spellcheckers_settings should be shown or not. -->
    <bool name="config_show_spellcheckers_settings">true</bool>

    <!-- Whether tts_settings_summary should be shown or not. -->
    <bool name="config_show_tts_settings_summary">true</bool>

    <!-- Whether pointer_speed should be shown or not. -->
    <bool name="config_show_pointer_speed">true</bool>

    <!-- Whether vibrate_input_devices should be shown or not. -->
    <bool name="config_show_vibrate_input_devices">true</bool>

    <!-- Whether manage_device_admin should be shown or not. -->
    <bool name="config_show_manage_device_admin">true</bool>

    <!-- Whether unlock_set_or_change should be shown or not. -->
    <bool name="config_show_unlock_set_or_change">true</bool>

    <!-- Whether screen_pinning_settings should be shown or not. -->
    <bool name="config_show_screen_pinning_settings">true</bool>

    <!-- Whether manage_trust_agents should be shown or not. -->
    <bool name="config_show_manage_trust_agents">true</bool>

    <!-- Whether show_password should be shown or not. -->
    <bool name="config_show_show_password">true</bool>

    <!-- Whether trust_agent_click_intent should be shown or not. -->
    <bool name="config_show_trust_agent_click_intent">true</bool>

    <!-- Whether wallpaper attribution should be shown or not. -->
    <bool name="config_show_wallpaper_attribution">true</bool>

    <!-- Whether assist_and_voice_input should be shown or not. -->
    <bool name="config_show_assist_and_voice_input">true</bool>

    <!-- Whether reset_dashboard should be shown or not. -->
    <bool name="config_show_reset_dashboard">true</bool>

    <!-- Whether system_update_settings should be shown or not. -->
    <bool name="config_show_system_update_settings">true</bool>

    <!-- Whether device_model should be shown or not. -->
    <bool name="config_show_device_model">true</bool>

    <!-- Whether top_level_accessibility should be shown or not. -->
    <bool name="config_show_top_level_accessibility">true</bool>

    <!-- Whether top_level_battery should be shown or not. -->
    <bool name="config_show_top_level_battery">true</bool>

    <!-- Whether to use compact battery status string. -->
    <bool name="config_use_compact_battery_status">false</bool>

    <!-- Whether top_level_connected_devices should be shown or not. -->
    <bool name="config_show_top_level_connected_devices">true</bool>

    <!-- Whether top_level_display should be shown or not. -->
    <bool name="config_show_top_level_display">true</bool>

    <!-- Whether wifi_ip_address should be shown or not. -->
    <bool name="config_show_wifi_ip_address">true</bool>

    <!-- Whether wifi_mac_address should be shown or not. -->
    <bool name="config_show_wifi_mac_address">true</bool>

    <!-- Whether to disable "Uninstall Updates" menu item for System apps or not. -->
    <bool name="config_disable_uninstall_update">false</bool>

    <!-- Slice Uri to query nearby devices. -->
    <string name="config_nearby_devices_slice_uri" translatable="false">content://com.google.android.gms.nearby.fastpair/device_status_list_item</string>

    <!-- BT Slice intent action. To support Settings 2 panel, BT slice can't use PendingIntent.send(). Therefore, here defines the Slice intent action. -->
    <string name="config_bt_slice_intent_action" translatable="false"></string>
    <!-- BT Slice pending intent action. To support Settings 2 panel, BT slice can't use PendingIntent.send(). Therefore, here defines the Slice pending intent action. -->
    <string name="config_bt_slice_pending_intent_action" translatable="false"></string>
    <!-- BT Slice EXTRA_INTENT. To support Settings 2 panel, BT slice can't use PendingIntent.send(). Therefore, here defines the Slice EXTRA_INTENT. -->
    <string name="config_bt_slice_extra_intent" translatable="false"></string>
    <!-- BT Slice EXTRA_PENDING_INTENT. To support Settings 2 panel, BT slice can't use PendingIntent.send(). Therefore, here defines the Slice EXTRA_PENDING_INTENT. -->
    <string name="config_bt_slice_extra_pending_intent" translatable="false"></string>

    <!-- Grayscale settings intent -->
    <string name="config_grayscale_settings_intent" translatable="false"></string>

    <!-- List containing the injected tile keys which are suppressed. -->
    <string-array name="config_suppress_injected_tile_keys" translatable="false"/>

    <!-- Reset application package name -->
    <string-array name="config_skip_reset_apps_package_name" translatable="false">
        <item>android</item>
        <item>com.android.providers.downloads</item>
        <item>com.android.systemui</item>
        <item>com.android.vending</item>
    </string-array>

    <!-- Settings panel keeps observe this uri -->
    <string-array name="config_panel_keep_observe_uri" translatable="false">
        <item>content://com.android.settings.slices/intent/media_output_indicator</item>
    </string-array>

    <!-- List containing the apps keep in battery mode = "Optimized" -->
    <string-array name="config_force_battery_optimize_mode_apps" translatable="false">
    </string-array>

    <!-- List containing the apps keep in battery mode = "Unrestricted" -->
    <string-array name="config_force_battery_unrestrict_mode_apps" translatable="false">
    </string-array>

    <!-- Uri to query non-public Slice Uris. -->
    <string name="config_non_public_slice_query_uri" translatable="false"></string>

    <!-- RTT setting intent action -->
    <string name="config_rtt_setting_intent_action" translatable="false"></string>

    <!-- Package name of dialer supports RTT setting-->
    <string name="config_rtt_setting_package_name" translatable="false"></string>

    <!-- Whether nfc detection point preview image is available or not. -->
    <bool name="config_nfc_detection_point">false</bool>

    <!-- Whether to show Smooth Display feature in Settings Options -->
    <bool name="config_show_smooth_display">false</bool>

    <!-- Whether to show emergency settings in top-level Settings -->
    <bool name="config_show_emergency_settings">true</bool>

    <!-- Whether to show emergency gesture in Settings -->
    <bool name="config_show_emergency_gesture_settings">true</bool>

    <!-- Optional package name if another 1p app wants to take over the emergency gesture settings UI -->
    <string name="emergency_gesture_settings_package"></string>

    <!-- Whether to show the Preference for Adaptive connectivity -->
    <bool name="config_show_adaptive_connectivity">false</bool>

    <!-- Authority of advanced device battery prediction -->
    <string name="config_battery_prediction_authority" translatable="false"></string>

    <!-- Whether to handle slot change events -->
    <bool name="config_handle_sim_slot_change">false</bool>

    <!-- whether use partner overlay theme for outside setupwizard flow -->
    <bool name="config_suc_use_partner_resource">false</bool>

    <!-- Cell broacast receiver package name -->
    <string name="config_cell_broadcast_receiver_package" translatable="false">com.android.cellbroadcastreceiver.module</string>

    <!-- These media Uri are not defined in framework yet. Replace with framework defined variables once it's available. -->
    <!-- Media Uri to view images storage category. -->
    <string name="config_images_storage_category_uri" translatable="false">content://com.android.providers.media.documents/root/images_root</string>

    <!-- Media Uri to view videos storage category. -->
    <string name="config_videos_storage_category_uri" translatable="false">content://com.android.providers.media.documents/root/videos_root</string>

    <!-- Media Uri to view audio storage category. -->
    <string name="config_audio_storage_category_uri" translatable="false">content://com.android.providers.media.documents/root/audio_root</string>

    <!-- Media Uri to view documents & other storage category. -->
    <string name="config_documents_and_other_storage_category_uri" translatable="false">content://com.android.providers.media.documents/root/documents_root</string>

    <!-- Whether to show Smart Storage toggle -->
    <bool name="config_show_smart_storage_toggle">true</bool>

    <!-- Display settings screen, Color mode options. Must be the same length and order as
         config_color_mode_options_values below. Only the values that also appear in
         frameworks/base/core/res/res/values/config.xml's config_availableColorModes are shown. -->
    <string-array name="config_color_mode_options_strings" translatable="false">
        <item>@string/color_mode_option_natural</item>
        <item>@string/color_mode_option_boosted</item>
        <item>@string/color_mode_option_saturated</item>
        <item>@string/color_mode_option_automatic</item>
    </string-array>

    <!-- Display settings screen, Color mode options. Must be the same length and order as
         config_color_mode_options_strings above. Only the values that also appear in
         frameworks/base/core/res/res/values/config.xml's config_availableColorModes are shown. -->
    <integer-array name="config_color_mode_options_values" translatable="false">
        <item>0</item>
        <item>1</item>
        <item>2</item>
        <item>3</item>
    </integer-array>

    <!-- App aspect ratio settings screen, user aspect ratio override options. Must be the same
         length and order as config_userAspectRatioOverrideValues below. -->
    <string-array name="config_userAspectRatioOverrideEntries" translatable="false">
        <item>@string/user_aspect_ratio_app_default</item>
        <item>@string/user_aspect_ratio_fullscreen</item>
        <item>@string/user_aspect_ratio_half_screen</item>
        <item>@string/user_aspect_ratio_device_size</item>
        <item>@string/user_aspect_ratio_16_9</item>
        <item>@string/user_aspect_ratio_4_3</item>
        <item>@string/user_aspect_ratio_3_2</item>
    </string-array>

    <!-- App aspect ratio settings screen, user aspect ratio override options. Must be the same
         length and order as config_userAspectRatioOverrideEntries above. The values must
         correspond to PackageManager.UserMinAspectRatio -->
    <integer-array name="config_userAspectRatioOverrideValues" translatable="false">
        <item>0</item> <!-- USER_MIN_ASPECT_RATIO_UNSET -->
        <item>6</item> <!-- USER_MIN_ASPECT_RATIO_FULLSCREEN -->
        <item>1</item> <!-- USER_MIN_ASPECT_RATIO_SPLIT_SCREEN -->
        <item>2</item> <!-- USER_MIN_ASPECT_RATIO_DISPLAY_SIZE -->
        <item>4</item> <!-- USER_MIN_ASPECT_RATIO_16_9 -->
        <item>3</item> <!-- USER_MIN_ASPECT_RATIO_4_3 -->
        <item>5</item> <!-- USER_MIN_ASPECT_RATIO_3_2 -->
    </integer-array>

    <!-- The settings/preference description for each settable device state defined in the array
         "config_perDeviceStateRotationLockDefaults".
         The item in position "i" describes the auto-rotation setting for the device state also in
         position "i" in the array "config_perDeviceStateRotationLockDefaults". -->
    <string-array name="config_settableAutoRotationDeviceStatesDescriptions">
        <!-- Example:
            <item>Auto-rotate when folded</item>
            <item>@null</item> No description for state in position 1
            <item>Auto-rotate when unfolded</item>
        -->
    </string-array>

    <!-- The option list for switch screen resolution -->
    <string-array name="config_screen_resolution_options_strings" translatable="false">
        <item>@string/screen_resolution_option_high</item>
        <item>@string/screen_resolution_option_full</item>
    </string-array>

    <!-- Whether to aggregate for network selection list-->
    <bool name="config_network_selection_list_aggregation_enabled">false</bool>

    <!-- Max network scan search time in seconds -->
    <integer name="config_network_scan_helper_max_search_time_sec">300</integer>

    <!-- Whether to give option to add restricted profiles -->
    <bool name="config_offer_restricted_profiles">false</bool>

    <!-- An array of packages for which Applications whose per-app locale cannot be changed. -->
    <string-array name="config_disallowed_app_localeChange_packages" translatable="false">
        <!--
        <item>com.example.package.first</item>
        <item>com.example.package.second</item>
        <item>...</item>
        -->
    </string-array>

    <!-- The ratio to use when using the two-pane settings layout -->
    <item name="config_activity_embed_split_ratio" format="float" type="dimen">0.3636</item>

    <!-- The smallest value of the smallest-width (sw) of the window in any rotation when the split
         should be used. -->
    <integer name="config_activity_embed_split_min_sw_dp">600</integer>

    <!-- The smallest value of current width of the window when the split should be used. -->
    <integer name="config_activity_embed_split_min_cur_dp">720</integer>

    <!-- The number of visible app icons while entering app list related pages for preloading.
         Take the "Unrestricted data" page as the example, the visible app icons could be 15
         on 6.4 inches screen size whether the font size and display size are both small. -->
    <integer name="config_num_visible_app_icons">20</integer>

    <!-- Whether the dream setup activity should be enabled as part of setupwizard -->
    <bool name="dream_setup_supported">false</bool>

    <!-- Whether to show communal settings at the top level. -->
    <bool name="config_show_communal_settings">false</bool>

    <!-- The extra value for battery tip -->
    <integer name="config_battery_extra_tip_value">12</integer>

    <!-- Whether to enable the advanced vpn feature. The default is not to. -->
    <bool name="config_advanced_vpn_enabled">false</bool>

    <!-- Whether to show the VPN options menu. The default is to show it. -->
    <bool name="config_show_vpn_options">true</bool>

    <!-- An array of uid name for which packages exempt from Wi-Fi permission check. -->
    <string-array name="config_exempt_wifi_permission_uid_name" translatable="false">
        <item>@string/config_settingsintelligence_package_name</item>
        <item>android.uid.system:1000</item>
    </string-array>

    <!-- The default value for RedactionInterstitial in SUW -->
    <bool name="default_allow_sensitive_lockscreen_content">true</bool>

    <!-- Whether to enable the app battery usage list page feature. -->
    <bool name="config_app_battery_usage_list_enabled">false</bool>

    <!-- Whether sim related information is visible to the end user. -->
    <bool name="config_show_sim_info">true</bool>

    <!-- In the case of receiving both help and progress message, display progress message. -->
    <bool name="enrollment_progress_priority_over_help">false</bool>
    <!-- Prioritize help message by their occurrence -->
    <bool name="enrollment_prioritize_acquire_messages">false</bool>
    <!-- Control messages displayed during enrollment -->
    <bool name="enrollment_message_display_controller_flag">false</bool>

    <!-- Whether the toggle for Auto-rotate with Face Detection should be shown. -->
    <bool name="config_auto_rotate_face_detection_available">true</bool>

    <!-- Whether to display the 3G option at network mode.-->
    <bool name="config_display_network_mode_3g_option">true</bool>

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

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

    <!-- Whether auto data switching on secondary SIM enables cross-SIM calling on both SIMs. -->
    <bool name="config_auto_data_switch_enables_cross_sim_calling">false</bool>

    <!-- Whether checking adaptive charging to define battery manager visibility. -->
    <bool name="config_battery_manager_consider_ac">false</bool>

    <!-- Whether to display Cloned Apps page in Settings (Settings > Apps > Cloned Apps).-->
    <bool name="config_cloned_apps_page_enabled">false</bool>

    <!-- Whether to initiate Account login during Private Space setup.-->
    <bool name="config_privatespace_account_login_enabled">false</bool>

    <!-- Certificates of apps which are allowed to use activity embedding with Settings.-->
    <string-array name="config_known_host_certs" translatable="false">
        <item></item>
    </string-array>

    <!-- Whether to display the "Enable wireless display" menu -->
    <bool name="config_show_wifi_display_enable_menu">true</bool>

    <!-- List of packages that should be hidden for MVNO. Do not translate -->
    <string-array name="datausage_hiding_carrier_service_package_names" translatable="false"/>

    <!-- List of MVNO. Do not translate -->
    <integer-array name="datausage_hiding_carrier_service_carrier_id" translatable="false"/>

    <!-- App locale change intent action-->
    <string name ="config_app_locale_intent_action" translatable="false" />

    <!-- Allowed packages to show the confirmation dialog for a system locale suggestion  -->
    <string-array name="allowed_packages_for_locale_confirmation_diallog" translatable="false"/>

    <!-- Array of text reading preview layouts. Must contain at least 1 layout -->
    <array name="config_text_reading_preview_samples">
        <item>@layout/accessibility_text_reading_preview_app_grid</item>
        <item>@layout/screen_zoom_preview_1</item>
        <item>@layout/accessibility_text_reading_preview_mail_content</item>
    </array>

    <!-- Package responsible for updating Mainline Modules -->
    <string name="config_mainline_module_update_package" translatable="false">com.android.vending</string>

    <!-- Whether location services setting is available or not. -->
    <bool name="config_show_location_services">true</bool>

    <!-- Whether to disable location toggle for ChromeOS devices-->
    <bool name="config_disable_location_toggle_for_chrome">false</bool>

    <!-- Whether to display pSIM conversion menu in Settings.-->
    <bool name="config_psim_conversion_menu_enabled">false</bool>

    <!-- Array of carrier id to allow the pSIM conversion-->
    <integer-array name="config_psim_conversion_menu_enabled_carrier" translatable="false">
    </integer-array>
</resources>
