<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 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">
    <string name="app_name">CTS Verifier</string>
    <string name="module_id">noabi CtsVerifier</string>

    <string name="title_version">CTS Verifier %1$s</string>

    <string name="pass_button_text">Pass</string>
    <string name="info_button_text">Info</string>
    <string name="fail_button_text">Fail</string>
    <string name="next_button_text">Next</string>
    <string name="go_button_text">Go</string>
    <string name="present_button_text">Device Present</string>
    <string name="gone_button_text">Device Gone</string>
    <string name="tests_completed_successfully">All tests completed successfully.</string>

    <string name="retry_button_text">Retry</string>
    <string name="finish_button_text">Finish</string>
    <string name="fail_and_next_button_text">Fail and Next</string>

    <!-- Strings for TestListActivity -->
    <string name="test_category_audio">Audio</string>
    <string name="test_category_camera">Camera</string>
    <string name="test_category_car">Car</string>
    <string name="test_category_device_admin">Device Administration</string>
    <string name="test_category_hardware">Hardware</string>
    <string name="test_category_networking">Networking</string>
    <string name="test_category_sensors">Sensors</string>
    <string name="test_category_location">Location</string>
    <string name="test_category_security">Security</string>
    <string name="test_category_streaming">Streaming</string>
    <string name="test_category_features">Features</string>
    <string name="test_category_deskclock">Clock</string>
    <string name="test_category_jobscheduler">Job Scheduler</string>
    <string name="test_category_telecom">Telecom</string>
    <string name="test_category_telephony">Telephony</string>
    <string name="test_category_tunnel">Tunnel Mode</string>
    <string name="test_category_tv">TV</string>
    <string name="test_category_instant_apps">Instant Apps</string>
    <string name="test_category_logcat">Read Logs</string>
    <string name="test_category_display_cutout">DisplayCutout</string>
    <string name="test_category_other">Other</string>
    <string name="clear">Clear</string>
    <string name="test_results_clear_title">Remove all test results?</string>
    <string name="test_results_clear_yes">Yes</string>
    <string name="test_results_clear_cancel">Cancel</string>
    <string name="test_results_cleared">Test results cleared.</string>
    <string name="view">View</string>
    <string name="test_results_error">Couldn\'t create test results report. Try running the
        following command if you haven\'t yet.\n\"adb shell appops set com.android.cts.verifier
        android:read_device_identifiers allow\" </string>
    <string name="runtime_permissions_error">Please grant runtime permissions, otherwise, tests might fail.</string>
    <string name="export">Export</string>
    <string name="report_log_folder_name">ctsv-report-logs</string>
    <string name="no_storage">Cannot save report to external storage, see log for details.</string>
    <string name="no_storage_io_parser_exception">Cannot save report to external
        storage, see log for details. Or try running the following command if
        you haven\'t yet.\n\"adb shell appops set com.android.cts.verifier
        MANAGE_EXTERNAL_STORAGE 0\"</string>
    <string name="report_saved">Report saved to: %s</string>

    <!-- Strings for IntentDrivenTestActivity -->
    <string name="intent_not_resolved">Intent Not Resolved</string>
    <string name="intent_not_resolved_info">The following intent could not be resolved: %1$s</string>

    <!-- Strings for ReportViewerActivity -->
    <string name="report_viewer">Report Viewer</string>

    <string name="result_success">Test passed!</string>
    <string name="result_failure">Test failed!</string>

    <!-- String shared between BackupTestActivity and BackupAccessibilityTestActivity -->
    <string name="bu_loading">Loading...</string>
    <string name="bu_generate_error">Error occurred while generating test data...</string>
    <string name="bu_settings">Settings</string>

    <!-- Strings for BatterySaverTestActivity -->
    <string name="battery_saver_test">Battery Saver Test</string>
    <string name="battery_saver_test_info">
        This test verifies that the device provides a user affordance to enable and disable
        Battery Saver feature.
    </string>
    <string name="battery_saver_test_no_battery_detected">
        No battery detected. This test will only work on devices that contain a battery.
    </string>
    <string name="battery_saver_test_unplug">
        Unplug the device or run \"adb shell dumpsys battery unplug\".
    </string>
    <string name="battery_saver_test_device_plugged_in">
        The device is still plugged in.
    </string>
    <string name="battery_saver_test_enable_bs">
        Look for a button that allows you to turn Battery Saver on and off. The button may be in the
        Quick Settings section or on the Battery page of device settings. Use the button to turn
        Battery Saver on.
    </string>
    <string name="battery_saver_test_disable_bs">
        Now use the button to turn Battery Saver off.
    </string>
    <string name="battery_saver_test_start_turn_bs_off">
        Turn Battery Saver off to begin the test.
    </string>
    <string name="battery_saver_test_bs_on">Battery Saver is on.</string>
    <string name="battery_saver_test_bs_off">Battery Saver is off.</string>

    <!-- Strings for Device Administration tests -->
    <string name="da_policy_serialization_test">Policy Serialization Test</string>
    <string name="da_policy_serialization_info">This test checks that a device policy is properly
        saved and loaded across reboots.\n\nPress the \"Generate Policy\" button to create
        a random policy. Then press the \"Apply Policy\" button to apply the policy. Reboot the
        device and verify that all rows in the policy list are green. Red items indicate policy
        settings that were not loaded properly.
    </string>
    <string name="da_uninstall_test">Device Admin Uninstall Test</string>
    <string name="da_uninstall_test_info">This test checks that an active device administrator
        can be easily uninstalled from the application details screen in a way similar to other
        apps. This test requires CtsEmptyDeviceAdmin.apk to be installed on the device.
    </string>
    <string name="da_tapjacking_test">Device Admin Tapjacking Test</string>
    <string name="da_tapjacking_test_info">This test checks that an activity cannot tapjack the
        user by obscuring the device admin details while prompting the user to activate the admin.
    </string>
    <string name="car_enable_garage_monitor">Enable Garage Mode Monitor</string>
    <string name="car_garage_mode_test">Garage Mode Test</string>
    <string name="car_garage_mode_test_desc">
        This test verifies that Garage Mode runs at the end of a drive.\n\n
        <b>Important: Please enable Wi-Fi or other connectivity for test to pass.\n\n </b>
        Touch "Enable Garage Mode Monitor" to launch the Garage Mode verifier.\n\n
        Turn the vehicle off and exit the vehicle (or take the proprietary action that
        initiates shut-down of the system).\n\n
        Do not enter or disturb the vehicle for at least 15 minutes.\n\n
        Enter the vehicle. Re-launch the CTS-Verifier app if it is not running.\n\n
        If Garage Mode ran as required, the pass button will be enabled.</string>
    <string name="car_component_power_on_policy_check">Verify Component Power On Policy</string>
    <string name="car_component_power_off_policy_check">Verify Component Power Off Policy</string>
    <string name="car_power_policy_test">Car Power Policy Test</string>
    <string name="car_power_policy_test_desc">
        This test verifies that Wi-Fi, Bluetooth and Location settings UI behaviors with respect
        to their power policy. If the policy sets components power off, the component settings UI
        shall be disabled. Otherwise, the settings UI shall be enabled as default.\n\n
        First execute the\n
        "  adb shell cmd car_service apply-cts-verifier-power-off-policy"\n
        adb shell command first and then sequentialy click first 4 buttons to check each component
        settings UI are disabled.\n\n
        Then, execute the\n
        "  adb shell cmd car_service apply-cts-verifier-power-on-policy"\n
        shell command and sequential click the remaining 4 buttons to check if each component
        settings UI is enabled.\n\n
        For the detailed instructions, please refer to\n
        "  https://source.android.com/compatibility/cts/power-policy".
        </string>
    <string name="car_wifi_settings">Go to Wi-Fi settings</string>
    <string name="car_wifi_settings_disable">Check Wi-Fi Settings Disabled</string>
    <string name="car_bluetooth_settings_disable">Check Bluetooth Settings Disabled</string>
    <string name="car_location_settings_disable">Check Location Settings Disabled</string>
    <string name="car_wifi_settings_enable">Check Wi-Fi Settings Enabled</string>
    <string name="car_bluetooth_settings_enable">Check Bluetooth Settings Enabled</string>
    <string name="car_location_settings_enable">Check Location Settings Enabled</string>
    <string name="car_dock_test">Car Dock Test</string>
    <string name="car_dock_test_desc">This test ensures that car mode opens the app associated with
        car dock when going into car mode.\n\n
        Click on "Enable Car Mode" to start the test. Clicking on the button will either bring up a
        disambiguation dialog asking which app to open or immediately open the CAR_DOCK application.
        Select the "CTS Verifier" app and then "Always" if the dialog pops up.
        This will open the CAR_DOCK application.\n\n
        In the CAR_DOCK application, press the home button, which will enable the pass button if the
        framework correctly tries to open the CAR_DOCK app again.</string>
    <string name="car_mode_enable">Enable Car Mode</string>
    <string name="car_dock_activity_text">Press the Home button</string>
    <string name="car_launcher_test">Car Launcher Test</string>
    <string name="car_launcher_test_desc">This test ensures that the car launcher lists apps
        disabled by car service due to system resource overuse.\n\n
        <b>
            Before proceeding, check if \'com.android.cts.car.watchdog_companionapp\'
            (aka CtsCarWatchdogCompanionApp) is installed by going to Settings &gt; Apps. If not,
            please install the app before proceeding.\n\n
        </b>
        1. Check if the CtsCarWatchdogCompanionApp is visible in car launcher\'s app grid view. If
        it is not listed, pass the test.\n
        2. Run the
        \'adb shell cmd car_service watchdog-resource-overuse-kill com.android.cts.car.watchdog_companionapp\'
        shell command to disable the app because of system resource overuse.\n
        3. Click on \"Open Launcher\". Make sure the CtsCarWatchdogCompanionApp is displayed. If it
        is not listed, fail the test.\n
        4. Open CtsCarWatchdogCompanionApp from the launcher.\n\n
        Pass the test only if the companion app opened successfully.</string>
    <string name="car_launcher_test_button_label">Open Launcher</string>
    <string name="gear_selection_test">Gear Selection Test</string>
    <string name="gear_selection_test_desc">This test ensures that the
      GEAR_SELECTION property is implemented correctly.\n\nShift the car\'s
      gear to the expected gear value. If it is able to shift to all the
      implemented gears then the pass button will be enabled.</string>
    <string name="expected_gear_selection_title">Expected Gear Selection</string>
    <string name="current_gear_selection_title">Current Gear Selection</string>
    <string name="parking_brake_on_test">PARKING_BRAKE_ON Test</string>
    <string name="parking_brake_on_test_desc">This test ensures that the
      PARKING_BRAKE_ON property is implemented correctly.\n\nFollow the
      instructions on the screen to engage and disengage the parking brake. When
      the instructions are completed, the pass button will be enabled.</string>
    <string name="current_parking_brake_on_value_title">Current PARKING_BRAKE_ON Value:</string>
    <string name="da_no_policy">1. Press the \"Generate Policy\" to create a random device
        policy\n\n2. Press \"Apply Policy\" to put the policy into effect.\n\n3. Reboot your
        device and return to this test in the CTS Verifier.
    </string>
    <string name="da_generate_policy">Generate Policy</string>
    <string name="da_apply_policy">Apply Policy</string>
    <string name="da_random_policy">Random policy generated.</string>
    <string name="da_policy_reboot">Reboot your device and return to this CTS Verifier test.</string>
    <string name="da_password_quality">Password Quality</string>
    <string name="da_password_quality_alphabetic">Alphabetic</string>
    <string name="da_password_quality_alphanumeric">Alphanumeric</string>
    <string name="da_password_quality_numeric">Numeric</string>
    <string name="da_password_quality_something">Something</string>
    <string name="da_password_minimum_length">Minimum Password Length</string>
    <string name="da_maximum_failed_passwords_for_wipe">Maximum Failed Passwords for Wipe</string>
    <string name="da_maximum_time_to_lock">Maximum Time to Lock</string>
    <string name="da_policy_info">Expected value: %1$s\nActual value: %2$s</string>

    <string name="da_screen_lock_test">Screen Lock Test</string>
    <string name="da_screen_lock_info">This test checks that the DevicePolicyManager\'s lockNow
        method immediately locks the screen. It should lock the screen immediately despite any
        settings that may specify a timeout.\n\nClick the \"Force Lock\" button to lock the screen.
        Your screen should be locked and require the password to be entered.
    </string>
    <string name="da_force_lock">Force Lock</string>
    <string name="da_lock_success">It appears the screen was locked successfully!</string>
    <string name="da_lock_error">It does not look like the screen was locked...</string>

    <string name="da_install_admin_instructions">
        Please install the \'Test Device Admin\' app (packaged as CtsEmptyDeviceAdmin.apk) on the device.
    </string>
    <string name="da_admin_installed_status_text">\'Test Device Admin\' installed on the device.</string>
    <string name="da_enable_admin_instructions">Add \'Test Device Admin\' as an active administrator on the device.
        Tap the button below to review the device admin details and activate the administrator.
    </string>
    <string name="da_enable_admin_button_text">Enable admin</string>
    <string name="da_uninstall_admin_instructions">Attempt to uninstall the app from the application details page of the \'Test Device Admin\' app.
        You should see another screen showing the device admin details before you can uninstall the app from the device.
        Wait till the app is uninstalled before returning to this page.
    </string>
    <string name="da_uninstall_admin_button_text">Launch settings</string>

    <string name="da_tapjacking_overlay_app_description">This activity attempts to tapjack the activity below.\n
        Any security sensitive controls below should not respond to taps as long as this activity is visible.</string>
    <string name="da_tapjacking_instructions">
        1. Launch the device admin add screen by pressing the button below.\n
        2. Wait for an overlaying transparent activity to show up obscuring the device admin details window.\n
        3. The button to activate the admin should be disabled and should not register any taps.\n
        4. Press \'back\' to exit the overlaying transparent activity.\n
        5. Press \'back\' to exit the device admin details and return to this screen.\n
        Pass the test if the device admin could not be activated while the details
        window was being obscured.
    </string>
    <string name="da_tapjacking_instructions" product="automotive">
        1. Launch the device admin add screen by pressing the button below.\n
        2. Wait for an overlaying transparent activity to show up obscuring the device admin details window.\n
        3. The button to activate the admin should be disabled and should not register any taps.\n
        4. Wait for the overlaying activity to finish.\n
        5. Press \'back\' to exit the device admin details and return to this screen.\n
        Pass the test if the device admin could not be activated while the details
        window was being obscured.
    </string>
    <string name="da_tapjacking_button_text">Enable device admin</string>

    <!-- Strings for RecentTaskRemovalTestActivity -->
    <string name="remove_from_recents_test">Recent Task Removal Test</string>
    <string name="remove_from_recents_test_info">
        This test verifies that an app whose task is removed from recents is not also force-stopped
        without explicit user consent. This test requires CtsForceStopHelper.apk to be installed.
    </string>
    <string name="fs_test_app_install_instructions">Please install the \'Force stop helper app\' on the device.</string>
    <string name="fs_test_app_installed_text">\'Force stop helper app\' installed on device. Proceed to the following steps.</string>
    <string name="fs_test_app_launch_instructions">
        Tap the button to launch the helper activity. Then return to this screen.
    </string>
    <string name="fs_launch_test_app_button_text">Launch test activity</string>
    <string name="fs_test_app_recents_instructions">
        Open recents and remove the task of the activity started in the previous step and return to this screen.
        Deny any dialog that is shown asking for permission to force-stop or kill the app.
    </string>
    <string name="fs_force_stop_verification_pending">Verifying... Please wait.</string>

    <!-- Strings for ClipboardPreviewText -->
    <string name="clipboard_preview_test">Clipboard Preview Test</string>
    <string name="clipboard_preview_test_info">
        This test verifies that clipboard contents are visible to the user when copied.
    </string>
    <string name="clipboard_preview_test_instructions">
        Press the \'Copy\' button to copy the secret code to the clipboard.
        \n\nUse the clipboard preview UI, or the clipboard editor component to view the secret code.
        \n\nEnter the secret code using the buttons below.
    </string>
    <string name="clipboard_preview_test_copy_button">Copy</string>


    <!-- Strings for BiometricTest -->
    <string name="biometric_test">Biometric Tests</string>

    <string name="biometric_test_category_credential">1) Credential Tests</string>
    <string name="biometric_test_category_strong">2) Strong Biometric Tests</string>
    <string name="biometric_test_category_weak">3) Weak Biometric Tests</string>
    <string name="biometric_test_category_combination">4) setUserAuthParams Tests</string>

    <string name="biometric_test_credential_crypto_label">1a: Credential Crypto</string>
    <string name="biometric_test_credential_crypto_instructions">This test checks that PIN/Pattern/Password successfully unlocks the relevant KeyStore operations. Please
        ensure that you have a PIN/Pattern/Password set up.</string>
    <string name="biometric_test_credential_crypto_timed_key_strongbox">Create and unlock timed key (StrongBox)</string>
    <string name="biometric_test_credential_crypto_timed_key_no_strongbox">Create and unlock timed key</string>

    <string name="biometric_test_ui_instruction_dialog_title">Instructions</string>
    <string name="biometric_test_ui_instruction_dialog_contents">For the following test, please remember or write down the numbers presented in the BiometricPrompt. After authenticating, please enter the contents in the test dialog.</string>
    <string name="biometric_test_ui_instruction_dialog_continue">Continue</string>
    <string name="biometric_test_ui_verification_dialog_title">Please enter your recorded contents</string>
    <string name="biometric_test_ui_verification_dialog_check">Check</string>

    <string name="biometric_test_reject_continues_instruction_title">Instructions</string>
    <string name="biometric_test_reject_continues_instruction_contents">Please authenticate with a non-enrolled biometric before authenticating with the actual enrolled biometric.</string>
    <string name="biometric_test_reject_continues_instruction_continue">Continue</string>

    <string name="biometric_test_strong_label">2a: Strong Biometrics + Crypto</string>
    <string name="biometric_test_strong_instructions">This test checks that the Settings.ACTION_BIOMETRIC_ENROLL and its corresponding
        EXTRA_BIOMETRIC_AUTHENTICATOR_REQUIREMENTS APIs enroll only a STRONG biometric. Please ensure that the device
        does NOT have ANY biometrics enrolled before starting this test. After passing the first part of the test, it will check various use cases
        when authentication is invoked with the STRONG biometric.</string>
    <string name="biometric_test_strong_check_and_enroll_button">Start enrollment</string>
    <string name="biometric_test_strong_authenticate_no_strongbox_button">Authenticate Crypto (without StrongBox)</string>
    <string name="biometric_test_strong_authenticate_strongbox_button">Authenticate Crypto (with StrongBox)</string>
    <string name="biometric_test_strong_authenticate_invalidated_button">Authenticate Key Invalidated</string>
    <string name="biometric_test_strong_authenticate_invalidated_instruction_title">Instructions</string>
    <string name="biometric_test_strong_authenticate_invalidated_instruction_contents">Before starting the next test, please add another enrollment to your strong biometric sensor. If only one enrollment is supported, please remove the current enrollment, then enroll.</string>
    <string name="biometric_test_strong_authenticate_invalidated_instruction_continue">Continue</string>

    <string name="biometric_test_weak_label">3a: Weak Biometrics</string>
    <string name="biometric_test_weak_instructions">This test checks that the Settings.ACTION_BIOMETRIC_ENROLL and its corresponding
        EXTRA_BIOMETRIC_AUTHENTICATOR_REQUIREMENTS APIs enroll a biometric that meets or exceeds WEAK. Please ensure that the device
        does NOT have ANY biometrics enrolled before starting this test. After passing the first part of the test, it will check various use cases
        when authentication is invoked.</string>
    <string name="biometric_test_weak_enroll">Start enrollment</string>

    <string name="biometric_test_set_user_authentication_credential_cipher_label">4a: Cipher, Credential</string>
    <string name="biometric_test_set_user_authentication_biometric_cipher_label">4b: Cipher, Biometric</string>
    <string name="biometric_test_set_user_authentication_biometric_credential_cipher_label">4c: Cipher, Biometric|Credential</string>
    <string name="biometric_test_set_user_authentication_credential_signature_label">4d: Signature, Credential</string>
    <string name="biometric_test_set_user_authentication_biometric_signature_label">4e: Signature, Biometric</string>
    <string name="biometric_test_set_user_authentication_biometric_or_credential_signature_label">4f: Signature, Biometric|Credential</string>
    <string name="biometric_test_set_user_authentication_credential_mac_label">4g: MAC, Credential</string>
    <string name="biometric_test_set_user_authentication_biometric_mac_label">4h: MAC, Biometric</string>
    <string name="biometric_test_set_user_authentication_biometric_or_credential_mac_label">4i: MAC, Biometric|Credential</string>
    <string name="biometric_test_set_user_authentication_credential_instructions">This test checks the correctness of the KeyGenParameterSpec.Builder#setUserAuthenticationParameters(int, int) API for AUTH_DEVICE_CREDENTIAL.
        Buttons for completed tasks will become invisible. It\'s normal for buttons to be disabled for a few seconds during this test.</string>
    <string name="biometric_test_set_user_authentication_biometric_instructions">This test checks the correctness of the KeyGenParameterSpec.Builder#setUserAuthenticationParameters(int, int) API for AUTH_BIOMETRIC_STRONG.
        Buttons for completed tasks will become invisible. It\'s normal for buttons to be disabled for a few seconds during this test.</string>
    <string name="biometric_test_set_user_authentication_biometric_or_credential_instructions">This test checks the correctness of the KeyGenParameterSpec.Builder#setUserAuthenticationParameters(int, int) API for AUTH_BIOMETRIC_STRONG|AUTH_DEVICE_CREDENTIAL.
        Buttons for completed tasks will become invisible. It\'s normal for buttons to be disabled for a few seconds during this test.</string>
    <!-- no strongbox-->
    <string name="biometric_test_set_user_authentication_credential_per_use_auth_with_credential">auth-per-use key with credential</string>
    <string name="biometric_test_set_user_authentication_credential_duration_auth_with_credential">time-based key with credential</string>
    <string name="biometric_test_set_user_authentication_credential_per_use_auth_with_biometric">auth-per-use key with biometric</string>
    <string name="biometric_test_set_user_authentication_credential_duration_auth_with_biometric">time-based key with biometric</string>
    <!-- strongbox -->
    <string name="biometric_test_set_user_authentication_credential_per_use_auth_with_credential_strongbox">auth-per-use key with credential (strongbox)</string>
    <string name="biometric_test_set_user_authentication_credential_duration_auth_with_credential_strongbox">time-based key with credential (strongbox)</string>
    <string name="biometric_test_set_user_authentication_credential_per_use_auth_with_biometric_strongbox">auth-per-use key with biometric (strongbox)</string>
    <string name="biometric_test_set_user_authentication_credential_duration_auth_with_biometric_strongbox">time-based key with biometric (strongbox)</string>

    <!-- Strings for user consent for logs test -->
    <string name="read_logs_text">User Consent for Device Logs Test</string>
    <string name="read_logs_test_info">"This test verifies that user consent for per-use prompt is working properly.\nThe test assumes READ_LOGS permission is granted to the app.\nStart this test by clicking User Consent for Device Logs Test button.\nWhen the process becomes foreground, a user will see a prompt. Once a user clicks the prompt, users have an option to choose \"Only this time\" or \"Don\'t Allow\"."</string>

    <!-- Strings for lock bound keys test -->
    <string name="sec_lock_bound_key_test">Lock Bound Keys Test</string>
    <string name="sec_lock_bound_key_test_info">
        This test ensures that Keystore cryptographic keys that are bound to lock screen authentication
        are unusable without a recent enough authentication. You need to set up a screen lock in order to
        complete this test. If available, this test should be run by using fingerprint authentication
        as well as PIN/pattern/password authentication.
    </string>

    <string name="sec_fingerprint_bound_key_test">Fingerprint Bound Keys Test</string>
    <string name="sec_fingerprint_bound_key_test_info">
        This test ensures that Keystore cryptographic keys that are bound to fingerprint authentication
        are unusable without an authentication. You need to set up a fingerprint order to
        complete this test.
    </string>
    <string name="sec_fp_dialog_message">Authenticate now with fingerprint</string>
    <string name="sec_fp_auth_failed">Authentication failed</string>
    <string name="sec_start_test">Start Test</string>

    <!-- Strings for protected confirmation test -->
    <string name="sec_protected_confirmation_test">Android Protected Confirmation Test</string>
    <string name="sec_protected_confirmation_test_info">
        This test ensures that - if Android Protected Confirmation is supported by the device under
        test - the user is able to see the confirmation message and confirm it. It also assures that
        Keymaster signs a message with a confirmation key only if the message was previously
        confirmed by the user.
    </string>
    <string name="sec_protected_confirmation_not_supported_title">Not Supported</string>
    <string name="sec_protected_confirmation_not_supported_info">
        Android Protected Confirmation is not implemented by this device. This is okay because this
        is an optional feature. Set this test to passed and continue.
    </string>
    <string name="sec_protected_confirmation_message">This is a CtsVerifier test message!</string>
    <string name="sec_protected_confirmation_tee_test">Start Tee Test</string>
    <string name="sec_protected_confirmation_strongbox_test">Start Strongbox Test</string>

    <!-- Strings for IdentityAuthPerPresenation -->
    <string name="sec_identity_credential_authentication_test">Identity Credential Authentication</string>
    <string name="sec_identity_credential_authentication_test_info">
        This test ensures that data elements in Identity Credential documents protected by user
        authentication with timeout 0 can only be accessed once per reader session.
    </string>

    <!-- Strings for IdentityAuthPerPresenationMultiDocument -->
    <string name="sec_identity_credential_authentication_multi_document_test">Identity Credential Authentication Multi-Document</string>
    <string name="sec_identity_credential_authentication_multi_document_test_info">
        This test is for Identity Credential presentations with multiple documents.
    </string>

    <string name="sec_unlocked_device_required_test">Unlocked Device Required</string>
    <string name="sec_unlocked_device_required_test_info">
        This test ensures that keys created with setUnlockedDeviceRequired are usable when the
        screen is unlocked but not when it is locked.
    </string>

    <!-- Strings for BluetoothActivity -->
    <string name="bluetooth_test">Bluetooth Test</string>
    <string name="bluetooth_test_info">
        The Bluetooth Control tests check whether or not the device
        can disable and enable Bluetooth properly.
        \n\nThe Bluetooth tests require two devices, and Bluetooth data is exchanged between them.
        \nThere are two types of connections: Insecure and Secure. There are two types of roles: Server and Client. You must pass all connection and role combinations.
        \nThis is a list of the tests:
        \nThis Device x Other Device
        \n\n\"Bluetooth LE Insecure Client Test\" x \"Bluetooth LE Insecure Server Test\"
        \n\n\"Bluetooth LE Insecure Server Test\" x \"Bluetooth LE Insecure Client Test\"
        \n\n\"Bluetooth LE Secure Client Test\" x \"Bluetooth LE Secure Server Test\"
        \n\n\"Bluetooth LE Secure Server Test\" x \"Bluetooth LE Secure Client Test\"
        \n\n\"Bluetooth LE CoC Insecure Server Test\" x \"Bluetooth LE CoC Insecure Client Test\"
        \n\n\"Bluetooth LE CoC Insecure Client Test\" x \"Bluetooth LE CoC Insecure Server Test\"
        \n\n\"Bluetooth LE CoC Secure Server Test\" x \"Bluetooth LE CoC Secure Client Test\"
        \n\n\"Bluetooth LE CoC Secure Client Test\" x \"Bluetooth LE CoC Secure Server Test\"
        \n\nThe Device Communication tests require two
        devices to pair and exchange messages. The two devices must be:
        \n\n1. a candidate device implementation running the software build to be tested
        \n\n2. a separate device implementation already known to be compatible
    </string>

    <string name="bt_control">Bluetooth Control</string>
    <string name="bt_device_communication">Device Communication</string>
    <string name="bt_le">Bluetooth LE</string>
    <string name="bt_hid">Bluetooth HID</string>
    <string name="bt_le_coc">Bluetooth LE CoC</string>
    <string name="bt_background_rfcomm">Bluetooth Background RFCOMM</string>

    <string name="bt_toggle_bluetooth">Toggle Bluetooth</string>
    <string name="bt_toggle_instructions">Disable and enable Bluetooth to successfully complete this test.</string>
    <string name="bt_enable_bluetooth">Enable Bluetooth</string>
    <string name="bt_disable_bluetooth">Disable Bluetooth</string>
    <string name="bt_disabling">Disabling Bluetooth...</string>
    <string name="bt_disabling_error">Could not disable Bluetooth...</string>

    <string name="ble_coc_insecure_client_test_list_name">Bluetooth LE CoC Insecure Client Test</string>
    <string name="ble_coc_insecure_client_test_list_info">
        The Bluetooth LE CoC test must be done simultaneously on two devices. This device is the client.
        All tests listed here must be done without pairing. Tap \"Bluetooth LE CoC Insecure Server Test\" on the other device.
        \n\nTap \"01 Bluetooth LE CoC Client Test\" on this device, then tap \"01 Bluetooth LE CoC Server Test\" on the other device.
        \nWhen the test is complete, move to the next item. You must complete all tests.
    </string>
    <string name="ble_coc_insecure_client_test_info">
        The Bluetooth LE CoC test must be done simultaneously on two devices. This device is the client.
        All tests listed here must be done without pairing.
    </string>
    <string name="ble_coc_insecure_server_test_list_name">Bluetooth LE CoC Insecure Server Test</string>
    <string name="ble_coc_insecure_server_test_list_info">
        This test is mostly automated, but requires some user interaction.
        Once the list items below have check marks, the test is complete.
        \n\nTap \"01 Bluetooth LE CoC Server Test\" on this device, then tap \"01 Bluetooth LE CoC Client Test\" on the other device.
        \nWhen the test is complete, move to the next item. You must complete all tests.
    </string>

    <string name="ble_coc_secure_client_test_list_name">Bluetooth LE CoC Secure Client Test</string>
    <string name="ble_coc_secure_client_test_list_info">
        The Bluetooth LE CoC test must be done simultaneously on two devices. This device is the client.
        All tests listed here must be done with pairing. Tap \"Bluetooth LE CoC Secure Server Test\" on the other device.
        \n\nTap \"01 Bluetooth LE CoC Client Test\" on this device, then tap \"01 Bluetooth LE CoC Server Test\" on the other device.
        \nWhen the test is complete, move to the next item. You must complete all tests.
    </string>
    <string name="ble_coc_secure_client_test_info">
        The Bluetooth LE CoC test must be done simultaneously on two devices. This device is the client.
        All tests listed here must be done with pairing.
    </string>
    <string name="ble_coc_secure_server_test_list_name">Bluetooth LE CoC Secure Server Test</string>
    <string name="ble_coc_secure_server_test_list_info">
        This test is mostly automated, but requires some user interaction.
        Once the list items below have check marks, the test is complete.
        \n\nTap \"01 Bluetooth LE CoC Server Test\" on this device, then tap \"01 Bluetooth LE CoC Client Test\" on the other device.
        \nWhen the test is complete, move to the next item. You must complete all tests.
    </string>
    <string name="bt_background_rfcomm_test_name">Bluetooth Background RFCOMM Test</string>
    <string name="bt_background_rfcomm_test_info">
        This test verifies that system applications can register RFCOMM listeners via the
        BluetoothAdapter without needing a foreground service.
    </string>
    <string name="bt_background_rfcomm_test_client_name">Bluetooth Background RFCOMM Test Client</string>
    <string name="bt_background_rfcomm_test_client_info">
        Run by a second phone which acts as the RFCOMM client to connect to the rfcomm listener.
        This phone should be paired with the primary phone which runs the Bluetooth Background
        RFCOMM Test.
    </string>
    <string name="bt_background_rfcomm_test_uuid">1bd18454-462a-4117-bd58-77cb4d81ddbe</string>
    <string name="bt_background_rfcomm_test_message">Test Message</string>

    <!-- BLE CoC client side strings -->
    <string name="ble_coc_client_test_name">01 Bluetooth LE CoC Client Test</string>
    <string name="ble_coc_client_le_connect">Bluetooth LE Client Connect</string>
    <string name="ble_coc_client_get_psm">Get peer PSM value</string>
    <string name="ble_coc_client_coc_connect">LE CoC client Connect</string>
    <string name="ble_coc_client_check_connection_type">Check connection type</string>
    <string name="ble_coc_client_send_data_8bytes">Send 8 bytes</string>
    <string name="ble_coc_client_receive_data_8bytes">Receive 8 bytes</string>
    <string name="ble_coc_client_data_exchange">Send and receive large data buffer</string>

    <!-- BLE CoC server side strings -->
    <string name="ble_coc_server_start_name">01 Bluetooth LE CoC Server Test</string>
    <string name="ble_coc_server_le_connect">Bluetooth LE Server Connect</string>
    <string name="ble_coc_server_create_listener">Create LE CoC listener</string>
    <string name="ble_coc_server_psm_read">Waiting on PSM to be read</string>
    <string name="ble_coc_server_connection">Waiting on LE CoC connection</string>
    <string name="ble_coc_server_check_connection_type">Check connection type</string>
    <string name="ble_coc_server_receive_data_8bytes">Waiting to receive 8 bytes</string>
    <string name="ble_coc_server_send_data_8bytes">Sending 8 bytes</string>
    <string name="ble_coc_server_data_exchange">Send and receive large data buffer</string>

    <string name="bt_connection_access_server">Connection Access Server</string>
    <string name="bt_connection_access_client">Connection Access Client</string>
    <string name="bt_connection_access_server_info">
        Start the CTS Verifier on another device, start the Bluetooth test, and choose
        \"Connection Access Client\" to setup the test.
        \n\nFirst, unpair the devices via Bluetooth settings. Then connect the devices together
        using the \"Make Discoverable\" and \"Pick Server\" buttons.
        \n\nA connection access request should appear on the server and enable the pass button.
    </string>
    <string name="bt_connection_access_client_info">
        Start the CTS Verifier on another device, start the Bluetooth test, and choose
        \"Connection Access Server\" to complete the test.
        \n\nMake the device acting as the server discoverable and connect to it via the
        \"Pick Server\" button. Check that the server displays the connection access request
        dialog. The client device does not need to do anything else.
    </string>
    <string name="bt_ca_dialog">Was the connection access request dialog shown?</string>
    <string name="bt_ca_tips">
        Tap the \"Bluetooth Settings\" button and check that both devices are not paired
        before running the test.
        \n\nUse the \"Make Discoverable\" and \"Pick Server\" buttons to connect the two Bluetooth
        devices together and start the test.
    </string>

    <!-- Strings for HidHost and HidDevice activity -->
    <string name="bt_hid_host_test_name">Bluetooth HID Host Test</string>
    <string name="bt_hid_host_test_info">
        Start the CTS Verifier on another device, start the Bluetooth test, and choose
        \"Bluetooth HID Device\" to complete the test.
        \n\nClick \"Register app\" and \"Make discoverable\" on another device first, and click
        \"Select device\". Choose the device from device picker. If the remote device is already
        paired, unpair it first from system Settings.
        \n\nAfter the remote device completes the \"Send_report\" command, text \"bluetooth\" should
        appear in the EditText. Mark the test as passed.
        \n\n If the device under test (DUT) does not have Bluetooth HID Host service or HID Device
        service enabled, mark the test as passed.
    </string>
    <string name="bt_hid_host">Bluetooth HID Host</string>
    <string name="bt_hid_host_select_device">Select device</string>

    <string name="bt_hid_device_test_name">Bluetooth HID Device Test</string>
    <string name="bt_hid_device_test_info">
        Start the CTS Verifier on another device, start the Bluetooth test, and choose
        \"Bluetooth HID Host\" to complete the test.
        \n\nFirst, click the \"Register app\" button, and click the \"Make discoverable\" button.
        \n\nThen, on another device, click the \"Select device" button, and choose this device.
        \n\nWait until the dialog shows up for pairing two devices.
        \n\nFinally, click the \"Test send_report\", \"Test reply_report\", \"Test report_error\".
        \n\nIf all the commands are successful, then click \"Unregister app\" and mark the test as
        passed.
        \n\n If the device under test (DUT) does not have Bluetooth HID Host service or HID Device
        service enabled, mark the test as passed.
    </string>

    <string name="bt_hid_device">Bluetooth HID Device</string>
    <string name="bt_hid_device_register">Register app</string>
    <string name="bt_hid_device_unregister">Unregister app</string>
    <string name="bt_hid_device_send_report">Test Send_report</string>
    <string name="bt_hid_device_reply_report">Test Reply_report</string>
    <string name="bt_hid_device_report_error">Test Report_error</string>


    <string name="bt_secure_server">Secure Server</string>
    <string name="bt_secure_server_instructions">Start the CTS Verifier on another device, start the Bluetooth test, and choose \"Secure Client\" to complete the test.</string>
    <string name="bt_insecure_server">Insecure Server</string>
    <string name="bt_insecure_server_instructions">Start the CTS Verifier on another device, start the Bluetooth test, and choose \"Insecure Client\" to complete the test.</string>
    <string name="bt_waiting">Waiting for client...</string>
    <string name="bt_listening">Listening...</string>
    <string name="bt_connecting">Connecting...</string>
    <string name="bt_connected">Connected</string>
    <string name="bt_received_messages">Received Messages</string>
    <string name="bt_sent_messages">Sent Messages</string>
    <string name="bt_no_messages">No messages</string>
    <string name="bt_make_discoverable">Make Discoverable</string>
    <string name="bt_pick_server">Pick Server</string>
    <string name="bt_insecure_pairing_error_title">Pairing dialog shown?</string>
    <string name="bt_insecure_pairing_error_message">Insecure connections should not show the pairing dialog!</string>
    <string name="bt_advertise_unsupported_title">Advertising is not supported</string>
    <string name="bt_advertise_unsupported_message">Advertising is not supported on this device.\nTest finishes.</string>
    <string name="bt_open_failed_title">BLE open failed</string>
    <string name="bt_open_failed_message">Cannot open BLE GattService.\nTest finishes.</string>
    <string name="bt_add_service_failed_title">Add service failed</string>
    <string name="bt_add_service_failed_message">Failed to add services.\nTest finishes.</string>

    <string name="bt_secure_client">Secure Client</string>
    <string name="bt_insecure_client">Insecure Client</string>

    <string name="bt_device_picker">Device Picker</string>
    <string name="bt_paired_devices">Paired Devices</string>
    <string name="bt_new_devices">New Devices</string>
    <string name="bt_no_devices">No devices</string>
    <string name="bt_scan">Scan for Devices</string>
    <string name="bt_scanning">Scanning...</string>
    <string name="bt_unpair">Device must be unpaired via Bluetooth settings before completing the test.\n\nUnpair the device in settings, make the server discoverable, and rescan to pick this device.</string>
    <string name="bt_settings">Bluetooth Settings</string>

    <string name="bt_background_rfcomm_test_start_client">On the client device: enable (or toggle) Bluetooth and connect to this device, then start the client test.</string>
    <string name="bt_background_rfcomm_test_socket_received">Received client connection.</string>
    <string name="bt_background_rfcomm_test_sending_message">Sending test message.</string>
    <string name="bt_background_rfcomm_test_waiting_for_message">Waiting for message.</string>
    <string name="bt_background_rfcomm_test_connecting_to_server">Connecting to server.</string>
    <string name="bt_background_rfcomm_test_doing_sdp">Doing service discovery of server.</string>

    <!-- BLE client side strings -->
    <string name="ble_client_service_name">Bluetooth LE GATT Client Handler Service</string>
    <string name="ble_client_test_name">01 Bluetooth LE Client Test</string>
    <string name="ble_client_connect_name">Bluetooth LE Client Connect</string>
    <string name="ble_discover_service_name">Bluetooth LE Discover Service</string>
    <string name="ble_read_characteristic_name">Bluetooth LE Read Characteristic</string>
    <string name="ble_write_characteristic_name">Bluetooth LE Write Characteristic</string>
    <string name="ble_reliable_write_name">Bluetooth LE Reliable Write</string>
    <string name="ble_reliable_write_bad_resp_name">Bluetooth LE Reliable Write (receive bad response)</string>
    <string name="ble_notify_characteristic_name">Bluetooth LE Notify Characteristic</string>
    <string name="ble_read_descriptor_name">Bluetooth LE Read Descriptor</string>
    <string name="ble_write_descriptor_name">Bluetooth LE Write Descriptor</string>
    <string name="ble_read_rssi_name">Bluetooth LE Read RSSI</string>
    <string name="ble_read_phy_name">Bluetooth LE Read PHY</string>
    <string name="ble_on_service_changed">Bluetooth LE On Service Changed</string>
    <string name="ble_client_disconnect_name">Bluetooth LE Client Disconnect</string>
    <string name="ble_insecure_client_test_info">
        The Bluetooth LE test must be done simultaneously on two devices. This device is the client.
        All tests listed here must be done without pairing.
    </string>
    <string name="ble_client_send_connect_info">Type in the Bluetooth address of the remote device to connect to, and verify that the devices are connected.</string>
    <string name="ble_discover_service_info">Verify that the service is discovered when you press the "Discover Service" button.</string>
    <string name="ble_read_write_info">Write values to and read values from the server to verify that the write and read functionalities are working correctly.</string>
    <string name="ble_reliable_write_info">A Reliable Write has two steps.\n\n1) Write to the device. This will trigger a callback from the server to verify that the value written was correct.\n2) Execute the write, if the value written is valid.</string>
    <string name="ble_notify_characteristic_info">Start accepting notifications, and verify that notifications are being reported correctly. The server should be notifying this device with the time every second.</string>
    <string name="ble_read_rssi_info">Press button to read the RSSI value. Verify that the RSSI changes as you move the two devices further apart or closer together.</string>
    <string name="ble_client_disconnect_info">Verify that the device is disconnected when you press the "Disconnect" button</string>
    <string name="ble_address">Bluetooth address</string>
    <string name="ble_connect">Connect</string>
    <string name="ble_discover_service">Discover service</string>
    <string name="ble_write_hint">Nothing to write yet</string>
    <string name="ble_read_hint">Nothing read yet</string>
    <string name="ble_write">Write</string>
    <string name="ble_read">Read</string>
    <string name="ble_begin_write">Begin write</string>
    <string name="ble_execute_write">Execute write</string>
    <string name="ble_begin_notification">Begin notification</string>
    <string name="ble_stop_notification">Stop notification</string>
    <string name="ble_waiting_notification">Waiting on notification</string>
    <string name="ble_read_rssi">Read RSSI</string>
    <string name="ble_disconnect">Disconnect</string>
    <string name="ble_test_text">TEST</string>
    <string name="ble_test_finished">Test finished</string>
    <string name="ble_test_next">Next</string>
    <string name="ble_test_running">Test Running</string>
    <string name="ble_test_running_message">This test requires a few minutes. Don\'t interrupt the test.</string>
    <string name="ble_mtu_23_name">Bluetooth LE Request MTU(23bytes)</string>
    <string name="ble_mtu_512_name">Bluetooth LE Request MTU(512bytes)</string>

    <!-- BLE server side strings -->
    <string name="ble_server_service_name">Bluetooth LE GATT Server Handler Service</string>
    <string name="ble_server_start_name">01 Bluetooth LE Server Test</string>
    <string name="ble_server_start_info">
        The Bluetooth LE test must be done simultaneously on two devices, a server device and a client device. This device is the server.
    </string>
    <string name="ble_server_receiving_connect">Waiting on connection from Bluetooth LE client.</string>
    <string name="ble_server_add_service">Adding service to Bluetooth LE server.</string>
    <string name="ble_server_write_characteristic">Waiting on write characteristic request</string>
    <string name="ble_server_read_characteristic">Waiting on read characteristic request</string>
    <string name="ble_server_write_descriptor">Waiting on write descriptor request</string>
    <string name="ble_server_read_descriptor">Waiting on read descriptor request</string>
    <string name="ble_server_reliable_write">Waiting on reliable write from client</string>
    <string name="ble_server_reliable_write_bad_resp">Waiting on reliable write from client (send bad response)</string>
    <string name="ble_server_service_changed_indication">Waiting on service changed indication</string>
    <string name="ble_server_receiving_disconnect">Waiting on disconnection from Bluetooth LE client</string>
    <string name="ble_connection_priority_server_name">02 Bluetooth LE Connection Priority Server Test</string>
    <string name="ble_connection_priority_server_info">Bluetooth LE Connection Priority Server receive message from message in 3 different priority.</string>
    <string name="ble_server_notify_characteristic">Waiting on notify characteristic request</string>
    <string name="ble_server_write_characteristic_without_permission">Waiting on write characteristic request without permission</string>
    <string name="ble_server_read_characteristic_without_permission">Waiting on read characteristic request without permission</string>
    <string name="ble_server_write_descriptor_without_permission">Waiting on write descriptor request without permission</string>
    <string name="ble_server_read_descriptor_without_permission"> Waiting on read descriptor request without permission</string>
    <string name="ble_server_write_characteristic_need_encrypted">Waiting on write encrypted characteristic request</string>
    <string name="ble_server_read_characteristic_need_encrypted">Waiting on read encryptedcharacteristic request</string>
    <string name="ble_server_write_descriptor_need_encrypted">Waiting on write encrypted descriptor request</string>
    <string name="ble_server_read_descriptor_need_encrypted"> Waiting on read encrypted descriptor request</string>
    <string name="ble_server_indicate_characteristic">Waiting on indicate characteristic request</string>
    <string name="ble_server_mtu_23bytes">Waiting on MTU request(23 bytes)</string>
    <string name="ble_server_mtu_512bytes">Waiting on MTU request(512 bytes)</string>
    <string name="ble_encrypted_server_name">03 Bluetooth LE Encrypted Server Test</string>
    <string name="ble_encrypted_server_info">Bluetooth LE Encrypted Server Waiting on read/write characteristic and descriptor request need encrypted.</string>
    <string name="ble_insecure_server_enctypted_info">Bluetooth LE Server is in operation.\nThis test does not change server state.\n\nIf Bluetooth pairing request was notified by system, you must cancel it.\n\nOnce the client tests are all successful, please change the state of the server-side to the "success".</string>
    <string name="ble_insecure_server_test_list_name">Bluetooth LE Insecure Server Test</string>
    <string name="ble_insecure_server_test_list_info">
        This test is mostly automated, but requires some user interaction.
        Once the list items below have check marks, the test is complete.
        \n\nTap \"01 Bluetooth LE Server Test\" on this device, then tap \"01 Bluetooth LE Client Test\" on the other device.
        \nWhen the test is complete, move to the next item. You must complete all tests.
    </string>
    <string name="ble_secure_server_test_list_name">Bluetooth LE Secure Server Test</string>
    <string name="ble_secure_server_test_list_info">
        This test is mostly automated, but requires some user interaction.
        You can pass this test once the list items below are checked.
        \n\nTap \"01 Bluetooth LE Server Test\" on this device, then tap \"01 Bluetooth LE Client Test \"on other device.
        \nTest completed, then test next item. You must be done all tests.
    </string>

    <!-- BLE advertiser side strings -->
    <string name="ble_advertiser_test_name">Bluetooth LE Advertiser Test</string>
    <string name="ble_advertiser_test_info">
        The Bluetooth LE Advertiser Test and Scanner Test is a paired test.
        \nTap \"Bluetooth LE Advertiser Test\" on this device. Once it is passed, tap \"Bluetooth LE Scanner Test\".
        \nTap \"Bluetooth LE Scanner Test\" on this device. Once it is passed, tap \"Bluetooth LE Advertiser Test\".
    </string>
    <string name="ble_advertiser_service_name">Bluetooth LE Advertiser Handler Service</string>
    <string name="ble_privacy_mac_name">Bluetooth LE Privacy Mac</string>
    <string name="ble_privacy_mac_info">Bluetooth LE Advertiser should advertise in non-repeating MAC address.</string>
    <string name="ble_advertiser_privacy_mac_instruction">Click start to start advertising, you can disconnect USB and lock the screen of advertiser. Counts and mac address will show on scanner. You may receive message that this device does not support Bluetooth LE advertising.</string>
    <string name="ble_power_level_name">Bluetooth LE Tx Power Level</string>
    <string name="ble_power_level_info">Bluetooth LE Advertiser advertises in 4 different power levels. Scanner should receive them in different strength of Rssi, cannot receive weak signals beyond several feet.</string>
    <string name="ble_advertiser_power_level_instruction">
        Click start to start multi-advertising. Data packets are advertised in 4 different power levels.
        You may receive a message that this device does not support multi-advertising.
        If the advertiser does not advertise in 4 power levels, and you do not receive an error message,
        you may not have stopped advertising in the previous test, or this device may not support 4 advertisers at the same time.
        Try rebooting the device and running the test again to free those advertisers in use.
    </string>
    <string name="ble_advertiser_scan_filter_name">Bluetooth LE Hardware Scan Filter</string>
    <string name="ble_advertiser_scan_filter_info">Bluetooth LE Advertiser advertises with 2 different data separately. One can wake up the scanner, the other cannot. This test cares about behavior on scanner only.</string>
    <string name="ble_advertiser_scannable">Scannable advertising</string>
    <string name="ble_advertiser_scannable_instruction">Start scannable advertising, expect scanner consume more power on Monsoon monitor, or see log of GattService from scanner logcat.</string>
    <string name="ble_advertiser_unscannable">Unscannble advertising</string>
    <string name="ble_advertiser_unscannable_instruction">Start unscannable advertising, expect scanner stay calm on Monsoon monitor, no log of GattService from scanner logcat.</string>
    <string name="ble_advertiser_start">Start</string>
    <string name="ble_advertiser_stop">Stop</string>

    <!-- BLE scanner side strings -->
    <string name="ble_scanner_test_name">Bluetooth LE Scanner Test</string>
    <string name="ble_scanner_service_name">Bluetooth LE Scanner Handler Service</string>
    <string name="ble_scanner_test_info">The Bluetooth LE test must be done simultaneously on two devices, an advertiser and a scanner. This device is the scanner.</string>
    <string name="ble_scanner_privacy_mac">Hold for 15 min to see if receive a different MAC address from advertiser.</string>
    <string name="ble_scanner_privacy_mac_instruction">Mac address, counts are shown on screen. It should continuously receive data packet from advertiser. Every 15 min, a new mac address should show up, which prevents mac address disclosure.</string>
    <string name="ble_ultra_low">Ultra low</string>
    <string name="ble_low">Low</string>
    <string name="ble_medium">Medium</string>
    <string name="ble_high">High</string>
    <string name="ble_scanner_power_level_instruction">Count: Ultra low &lt; low &lt; medium &lt; high\nRssi: Ultra low &lt; low &lt; medium &lt; high\nDistance to see count freezing: Ultra low &lt; low &lt; medium &lt; high\nA common error is ultra low, low and medium behave similarly, with similar rssi, freeze at similar distance.\n\n All power level receive a mac address.</string>
    <string name="ble_scanner_scan_filter_name">BLE Hardware Scan Filter</string>
    <string name="ble_scanner_scan_filter_info">Lock the screen of scanner, and connect to monsoon. It will not wake up when advertiser is advertising unscannable, and scanner is scanning with filter.</string>
    <string name="ble_scanner_scan_filter_instruction">Scan filter is to scan data with service UUID = 0x6666 only. If you scan without scan filter, data with service UUID = 0x5555 and 0x6666 will show up on screen.\nFor monsoon test:\n\tClick scan with filter, lock the screen, connect to monsoon. It will not wake up when advertiser is advertising unscannable data packets, but will show a peak in power usage when advertiser is advertising scannable data.\nFor logcat test:\n\tClick scan with filter, logcat the scanner. No data will be received by GattService when advertiser is advertising unscannable data.</string>
    <string name="ble_scan_with_filter">Scan with filter</string>
    <string name="ble_scan_without_filter">Scan without filter</string>
    <string name="ble_scan_start">Start scan</string>
    <string name="ble_scan_stop">Stop scan</string>

    <!-- BLE Advertising Set test strings -->
    <string name="ble_advertising_set_test_name">Bluetooth LE Advertising Set Test</string>
    <string name="ble_advertising_set_test_info">Bluetooth LE Advertising Set tests AdvertisingSet and AdvertisingSetCallback APIs.</string>
    <string name="ble_advertising_set_test_instruction">Press the \"Set Up\" button first, then start the test by pressing the \"Start Test\" button. UI thread may freeze for a few seconds while enabling/disabling bluetooth adapter.</string>
    <string name="ble_advertising_set_start_test">Start Test</string>
    <string name="ble_advertising_set_running_test">Running Test...</string>
    <string name="ble_advertising_set_finished_test">Finished Test</string>
    <string name="ble_advertising_set_start">Starting advertising set.</string>
    <string name="ble_advertising_set_enable_disable">Enabling/Disabling advertising set.</string>
    <string name="ble_advertising_set_advertising_data">Setting advertising data.</string>
    <string name="ble_advertising_set_advertising_params">Setting advertising parameters.</string>
    <string name="ble_advertising_set_periodic_advertising_data">Setting periodic advertising data.</string>
    <string name="ble_advertising_set_periodic_advertising_enabled_disabled">Enabling/Disabling periodic advertising.</string>
    <string name="ble_advertising_set_periodic_advertising_params">Setting periodic advertising parameters.</string>
    <string name="ble_advertising_set_scan_response_data">Setting scan response data.</string>
    <string name="ble_advertising_set_stop">Stopping advertising set.</string>

    <!-- BLE connection priority test strings -->
    <string name="ble_client_connection_priority">Testing connection priority switching </string>
    <string name="ble_server_connection_priority_result_passed">All test passed</string>
    <string name="ble_server_connection_priority_result_failed">Test failed.</string>
    <string name="ble_server_connection_priority_result_intervals">
        Transfer interval time (msec):\nHIGH=%1$d\nBALANCED=%2$d\nLOW=%3$d\n\nRequirements:\n HIGH &lt;= BALANCED &lt;= LOW
    </string>

    <!-- BLE Test Name -->
    <string name="ble_secure_client_test_name">Bluetooth LE Secure Client Test</string>
    <string name="ble_insecure_client_test_name">Bluetooth LE Insecure Client Test</string>
    <string name="ble_secure_server_test_name">Bluetooth LE Secure Server Test</string>
    <string name="ble_insecure_server_test_name">Bluetooth LE Insecure Server Test</string>

    <string name="ble_coc_secure_client_test_name">Bluetooth LE CoC Secure Client Test</string>
    <string name="ble_coc_insecure_client_test_name">Bluetooth LE CoC Insecure Client Test</string>
    <string name="ble_coc_secure_server_test_name">Bluetooth LE CoC Secure Server Test</string>
    <string name="ble_coc_insecure_server_test_name">Bluetooth LE CoC Insecure Server Test</string>

    <string name="ble_read_characteristic_nopermission_name">Bluetooth LE Read Characteristic Without Perrmission</string>
    <string name="ble_write_characteristic_nopermission_name">Bluetooth LE Write Characteristic Without Permission</string>
    <string name="ble_read_descriptor_nopermission_name">Bluetooth LE Read Descriptor Without Perrmission</string>
    <string name="ble_write_descriptor_nopermission_name">Bluetooth LE Write Descriptor Without Permission</string>
    <string name="ble_connection_priority_client_name">02 Bluetooth LE Connection Priority Client Test</string>
    <string name="ble_connection_priority_client_info">Bluetooth LE Connection Priority Client send message in 3 different priority.</string>
    <string name="ble_read_authenticated_characteristic_name">Bluetooth LE Read Encrypted Characteristic</string>
    <string name="ble_write_authenticated_characteristic_name">Bluetooth LE Write Encrypted Characteristic</string>
    <string name="ble_read_authenticated_descriptor_name">Bluetooth LE Read Encrypted Descriptor</string>
    <string name="ble_write_authenticated_descriptor_name">Bluetooth LE Write Encrypted Descriptor</string>
    <string name="ble_connection_priority_client_description">Client Switching Connection Priority</string>
    <string name="ble_indicate_characteristic_name">Bluetooth LE Indicate Characteristic</string>
    <string name="ble_encrypted_client_name">03 Bluetooth LE Encrypted Client Test</string>
    <string name="ble_encrypted_client_info">Bluetooth LE Encrypted Client read/write on characteristic and descriptor need encrypted.</string>
    <string name="ble_insecure_client_test_list_name">Bluetooth LE Insecure Client Test</string>
    <string name="ble_insecure_client_test_list_info">
        The Bluetooth LE test must be done simultaneously on two devices. This device is the client.
        All tests listed here must be done without pairing. Tap \"Bluetooth LE Insecure Server Test\" on the other device.
        \n\nTap \"01 Bluetooth LE Client Test\" on this device, then tap \"01 Bluetooth LE Server Test\" on the other device.
        \nWhen the test is complete, move to the next item. You must complete all tests.
    </string>
    <string name="ble_secure_client_test_list_name">Bluetooth LE Secure Client Test</string>
    <string name="ble_secure_client_test_list_info">
        The Bluetooth LE test must be done simultaneously on two devices.
        This device is the client. All tests listed here must be done with pairing.
        \n\nTap \"01 Bluetooth LE Client Test\" on this device, then tap \"01 Bluetooth LE Server Test\" on the other device.
        \nWhen the test is complete, move to the next item. You must complete all tests.
    </string>
    <string name="ble_encrypted_client_no_encrypted_characteristic">Error!\nThe Characteristics unencrypted.</string>
    <string name="ble_encrypted_client_no_encrypted_descriptor">Error!\nThe Descriptor unencrypted.</string>
    <string name="ble_encrypted_client_fail_write_encrypted_characteristic">It failed to write to Characteristic.</string>
    <string name="ble_encrypted_client_fail_write_encrypted_descriptor">It failed to write to Descriptor.</string>
    <string name="ble_encrypted_client_fail_read_encrypted_characteristic">It failed to read the Characteristic.</string>
    <string name="ble_encrypted_client_fail_read_encrypted_descriptor">It failed to read the Descriptor.</string>
    <string name="ble_secure_client_test_info">
        The Bluetooth LE test must be done simultaneously on two devices. This device is the client.
        All tests listed here must be done with pairing.
    </string>

    <string name="ble_bluetooth_disable_title">Bluetooth Disable!</string>
    <string name="ble_bluetooth_disable_message">Please set bluetooth enable.</string>

    <string name="ble_bluetooth_mismatch_title">Bluetooth pairing state is a mismatch!</string>
    <string name="ble_bluetooth_mismatch_secure_message">
        And even though it has already been trying to run a test of Secure, the device has not been paired.
        \nGo setting mode, set Bluetooth to pair other device.
    </string>
    <string name="ble_bluetooth_mismatch_insecure_message">
        And even though it has already been trying to run a test of Insecure, the device has already been paired.
        \nGo setting mode, set Bluetooth to unpair other device.
    </string>

    <string name="ble_mtu_mismatch_message">MTU is not correct.(Request:%1$d, Actual:%2$d)</string>
    <string name="ble_mtu_fail_message">MTU test: failed to receive data</string>

    <string name="companion_test">Companion Device Test</string>
    <string name="companion_test_info">
        This test checks that APIs to manage companion devices are working correctly,
        including showing the dialog to the user to verify a device, as well as updating an internal
        record once the user made the choice and then removing it.\n\n
        Before proceeding, make sure you have a bluetooth device nearby and discoverable.
        Also, make sure that bluetooth is turned on on this device.
        Once you press the button, wait for a dialog to pop up and select your device from the list.
    </string>

    <string name="companion_service_test">Companion Device Service Test</string>
    <string name="companion_service_test_info">
        This test checks that APIs to notify the companion app of its associated device going in and
        out of Bluetooth range are working correctly.
        Before proceeding, make sure you have a Bluetooth LE device nearby and
        discoverable. Also, make sure that bluetooth is turned on. Note that, the nearby device can
        not be a phone since it considers advertising as classic device scan.
        First, you press the go button, wait for a dialog to pop up and select your device from the
        list. Second, make sure your bluetooth device is unreachable(you can power off/reboot your
        Bluetooth device or put it into a Faraday bag) and press the Device Gone button.
        Lastly, make your bluetooth device reachable by waiting for the device to power on or
        removing it from the Faraday bag and press the Device Present button.
    </string>

    <string name="companion_service_test_gone_text">
        Now, please make your Bluetooth device unreachable.
        Put your bluetooth device into a RF Bag or power off/reboot your device,
        then press the Device Gone button.
    </string>

    <string name="companion_service_test_present_text">
        Now, please make your Bluetooth device reachable.
        Remove your Bluetooth device from a RF Bag or power on your device,
        then press the Device Present button.
    </string>

    <!-- Strings for FeatureSummaryActivity -->
    <string name="feature_summary">Hardware/Software Feature Summary</string>
    <string name="feature_summary_info">This is a test for...</string>
    <string name="fs_disallowed">WARNING: device reports a disallowed feature name</string>
    <string name="fs_missing_wifi_telephony">WARNING: device reports neither WiFi nor telephony</string>
    <string name="fs_no_data">No data.</string>
    <string name="fs_legend_good">standard feature reported by device</string>
    <string name="fs_legend_indeterminate">optional feature not reported by device</string>
    <string name="fs_legend_warning">non-standard feature reported by device</string>
    <string name="fs_legend_error">required feature not reported, or forbidden feature reported</string>

    <string name="empty"></string>

    <!-- Strings for HifiUltrasoundTestActivity -->
    <string name="hifi_ultrasound_test">Hifi Ultrasound Microphone Test</string>
    <string name="hifi_ultrasound_test_info">
        This is a test for near-ultrasound (18500Hz - 20000Hz) microphone response.\n
        This test requires two devices.\n</string>
    <string name="hifi_ultrasound_test_play">PLAY</string>
    <string name="hifi_ultrasound_test_record">RECORD</string>
    <string name="hifi_ultrasound_test_plot">PLOT</string>
    <string name="hifi_ultrasound_test_dismiss">DISMISS</string>
    <string name="hifi_ultrasound_test_ok">OK</string>
    <string name="hifi_ultrasound_test_instruction1">
        Open Hifi Ultrasound Microphone Test on the test device and the reference device.\n
        Set the media volume of the reference device at 70% and hold it with one hand.\n
        Hold the testing device with the other hand\n
        Press the RECORD button on the testing device, then the PLAY button on the reference device within one second.\n
        After the test, report result on the testing (recording) device.\n</string>
    <string name="hifi_ultrasound_test_pass">PASS</string>
    <string name="hifi_ultrasound_test_fail">FAIL</string>
    <string name="hifi_ultrasound_test_default_false_string">false</string>
    <string name="hifi_ultrasound_test_mic_no_support">
        Device does not support near-ultrasound recording.\n
        Please report PASS.\n</string>
    <string name="hifi_ultrasound_test_spkr_no_support">
        Device does not support near-ultrasound playback.\n
        If this is your reference device, please use a different reference device.\n</string>

    <string name="hifi_ultrasound_speaker_test">Hifi Ultrasound Speaker Test</string>
    <string name="hifi_ultrasound_speaker_test_info">
        This is a test for near-ultrasound (18500Hz - 20000Hz) speaker response.\n
        This test requires two devices.\n</string>
    <string name="hifi_ultrasound_speaker_test_instruction1">
        Open Hifi Ultrasound Speaker Test on the test device and the reference device.\n
        Set the media volume of the testing device at 70% and hold it with one hand.\n
        Hold the reference device with the other hand\n
        Press the RECORD button on the reference device, then the PLAY button on the testing device within one second.\n
        After the test, report result on the testing (playback) device.\n</string>
    <string name="hifi_ultrasound_speaker_test_mic_no_support">
        Device does not support near-ultrasound recording.\n
        If this is your reference device, please use a different reference device.\n</string>
    <string name="hifi_ultrasound_speaker_test_spkr_no_support">
        Device does not support near-ultrasound playback.\n
        Please report PASS.\n</string>
    <string name="hifi_ultrasound_speaker_test_test_side">
        Please wait for the result on the reference device then report here.</string>
    <string name="hifi_ultrasound_speaker_test_reference_side">
        Please report on the testing device.\n</string>

    <!-- Strings for IgnoreBatteryOptimizationsTestActivity -->
    <string name="ibo_test">Ignore Battery Optimizations Test</string>
    <string name="ibo_test_info">
        This test verifies that the device provides a user affordance to ask the user if the system
        should disable battery optimizations for an app and to allow a user to remove the app from
        the exemption list.
    </string>
    <string name="ibo_test_start_unexempt_app">
        Remove the test app from the ignore battery optimizations list to begin the test. (Try going
        to the App Info page and make sure the system is optimizing battery for the app.)
    </string>
    <string name="ibo_exempt_app_request">
        Click Next to have the test request the exemption. Grant the exemption when prompted.
    </string>
    <string name="ibo_next_to_confirm">Press next to confirm.</string>
    <string name="ibo_app_not_exempted">The app is not exempted from battery optimizations.</string>
    <string name="ibo_unexempt_app">
        Remove the test app from the ignore battery optimizations list. (Either run \"adb shell cmd
        deviceidle whitelist -com.android.cts.verifier\" or open the list of apps and their
        exemption statuses. Find the test app in the list and remove the app\'s exemption.)
    </string>
    <string name="ibo_app_is_exempted">The app is exempted from battery optimizations.</string>
    <string name="ibo_exempt_app_list">
        Click Next to have the test open the list of apps and their exemption statuses. Find the
        test app in the list and exempt it.
    </string>
    <string name="ibo_unexempt_app_list">
        Click Next to have the test open the list of apps and their exemption statuses. Find the
        test app in the list and remove the app\'s exemption.
    </string>

    <!-- Strings for Location tests -->
    <string name="location_gps_test">GPS Test</string>
    <string name="location_gps_test_info">This test verifies basic GPS behavior
        and callback scheduling.
        Make sure the device has line of sight to GPS satellites
        (for example, outside, or near a window)
        and then press OK to run the automated tests.</string>

    <!-- Strings for Location GNSS tests -->
    <string name="location_gnss_constellation_type_test">GNSS Measurement Constellation Test</string>
    <string name="location_gnss_measure_no_location_test">GNSS Measurement Before Location Test</string>
    <string name="location_gnss_reg_test">GNSS Measurement Registration Test</string>
    <string name="location_gnss_value_test">GNSS Measurement Values Test</string>
    <string name="location_pseudorange_value_test">GNSS Pseudorange Test</string>
    <string name="location_gnss_ttff_test">GNSS TTFF Test</string>
    <string name="location_gnss_nav_msg_test">GNSS Navigation Message Test</string>
    <string name="location_gnss_status_test">GNSS Status Test</string>
    <string name="location_gnss_test_info">This test verifies basic GNSS behavior.
        Make sure the device has line of sight to GNSS satellites
        (for example, stationary on a windowsill.  If needed, try again, outside, also with the
        device stationary, and with at least some view of the sky.) and then press Next to run
        the automated tests.</string>
    <string name="location_emergency_call_test_info">This test verifies whether basic features
        (wifi, sms, gps) works correctly during the emergency call. Make sure the device is using
        a special white listed sim card. The wifi and GPS should be on and have internet connection.
        Press the pass button to skip this test if outside US/Canada.
    </string>
    <string name="emergency_call_confirm_info">This test will dial 911! Please make sure to use a
        whitelisted sim card to run this test!
    </string>
    <string name="emergency_call_skip_info">Current device doesn\'t support cellular network. Skipping the Test.
    </string>
    <string name="emergency_call_emergency_number_hint_text">
        Emergency Number:
    </string>
    <string name="emergency_call_current_number_hint_text">
        Current Number:
    </string>
    <string name="emergency_call_dial_text">
        Dial 911
    </string>
    <string name="emergency_call_emergency_number_text">
        911
    </string>
    <string name="location_gnss_test_retry_info">If this test fails, please make sure the device
        has line of sight to GNSS satellites (for example, stationary on a windowsill. If needed,
        try again, outside, also with the device stationary, with as much view of the sky as
        possible.) </string>
    <string name="location_emergency_call_gps_test">Emergency Call GPS Test</string>
    <string name="location_emergency_call_message_test">Emergency Call Message Test</string>
    <string name="location_emergency_call_wifi_test">Emergency Call Wifi Test</string>

    <!-- Strings for ConnectivityBackgroundTestActivity -->
    <string name="network_background_test">Network Background Connectivity Test</string>
    <string name="network_background_test_instructions">
        This test verifies that IPv6 network connectivity continues to work
        when the screen is off or is idle for some time.\n\n

        1. Join a Wi-Fi network with IPv6 Internet access.\n
        2. If the device has battery power, disconnect all power connectors.\n
        3. Turn the screen off if possible.\n
        4. Wait until the screen turns on or the test result is displayed (it will take at least two minutes).\n
        5. If necessary, unlock the device.\n
        6. Please mark the test according to the result status indicated.\n
    </string>
    <string name="network_background_test_start">Start</string>

    <!-- Strings for net.MultiNetworkConnectivityTestActivity -->
    <string name="multinetwork_connectivity_test">Multinetwork connectivity Test</string>
    <string name="multinetwork_connectivity_test_instructions">
        This test verifies that, when a phone has internet connectivity via mobile network
        is connected to a Wi-Fi access point that doesn\'t have internet or loses internet access,
        it restores the internet activity over the mobile cell network, while connected to the
        Wi-Fi access point. \n\n

        1. Setup a wireless access point with ability to turn on and off internet access.
        2. Have SIM or cellular data connectivity on the phone being tested.
        3. Execute the tests with the instructions outlined in the test
        4. When the test completes, it will finish and mark it passed. If it fails, it will mark it \n
           as failed.

    </string>
    <string name="multinetwork_connectivity_test_pre_requisites">Prerequisite - Setup a Wi-Fi access point with WPA PSK in which we can turn on or off internet access. Delete that access point from this device if it exists already. </string>
    <string name="multinetwork_connectivity_test_start">Start</string>
    <string name="multinetwork_connectivity_test_ap_name">Wi-Fi SSID</string>
    <string name="multinetwork_connectivity_test_ap_passphrase">WPA 2 passphrase</string>
    <string name="multinetwork_connectivity_test_continue">Confirm and continue with test.</string>
    <string name="multinetwork_connectivity_test_rerun">Completed. Re-run.</string>
    <string name="multinetwork_connectivity_test_running">Running.</string>
    <string name="multinetwork_connectivity_test_connect_cellular">Connecting to cellular network.</string>
    <string name="multinetwork_connectivity_test_connect_wifi">Connecting to Wi-Fi network.</string>
    <string name="multinetwork_connectivity_test_complete">Test completed.</string>
    <string name="multinetwork_connectivity_test_progress_1">Waiting for Wi-Fi to lose connectivity.</string>
    <string name="multinetwork_connectivity_test_progress_2">Waiting to check connectivity.</string>
    <string name="multinetwork_connectivity_test_progress_3">Waiting to make sure Wi-Fi has connectivity.</string>
    <string name="multinetwork_connectivity_test_1_desc">Test 1 - Connect to Wi-Fi with no internet doesnt disable current connectivity (new API)</string>
    <string name="multinetwork_connectivity_test_2_desc">Test 2 - Connect to Wi-Fi with no internet doesnt disable current connectivity (legacy API)</string>
    <string name="multinetwork_connectivity_test_3_desc">Test 3 - When connected to Wi-Fi, on losing connectivity, restores mobile connectivity (legacy API)</string>
    <string name="multinetwork_status_wifi_connect_success">Wi-Fi connect success.</string>
    <string name="multinetwork_status_mobile_connect_success">Mobile net connect success.</string>
    <string name="multinetwork_status_wifi_connect_timed_out">Wi-Fi connect timed out.</string>
    <string name="multinetwork_status_wifi_connect_wrong_ap">Wi-Fi connected to wrong access point.</string>
    <string name="multinetwork_status_unable_to_toggle_wifi">User did not toggle wifi on and off.</string>
    <string name="multinetwork_status_mobile_connect_timed_out">Mobile network connect timed out.</string>
    <string name="multinetwork_status_mobile_restore_success">Mobile restore succeeded.</string>
    <string name="multinetwork_status_mobile_restore_failed">Mobile restore failed.</string>
    <string name="multinetwork_connectivity_test_1_prereq">Make sure that the Hotspot does not have internet access.</string>
    <string name="multinetwork_connectivity_test_2_prereq_1">Make sure that the Hotspot has internet access.</string>
    <string name="multinetwork_connectivity_test_2_prereq_2">Make sure that the Hotspot does not have internet access. When prompted to go back to using mobile data, choose ok.</string>
    <string name="multinetwork_connectivity_test_all_prereq_1">Looks like your device does not support telephony or mobile data. If yes, you can mark test passed and proceed.</string>
    <string name="multinetwork_connectivity_test_all_prereq_2">Need mobile data to proceed. Please insert a mobile data capable sim and repeat the test. By marking test as passed, you acknowledge that the device cannot do mobile data.</string>
    <string name="multinetwork_status_wifi_connectivity_failed">Wi-Fi connectivity failed.</string>
    <string name="multinetwork_connectivity_overlay_permission_message">This test requires the CTS verifier to have the system overlay permission, please locate CTS Verifier app in the next screen, then enable it.</string>
    <string name="multinetwork_connectivity_overlay_permission_positive">Settings</string>
    <string name="multinetwork_connectivity_overlay_permission_negative">Cancel</string>
    <string name="multinetwork_connectivity_turn_wifi_on">Please turn Wi-Fi on.</string>
    <string name="multinetwork_connectivity_turn_wifi_off">Please turn Wi-Fi off.</string>
    <string name="multinetwork_connectivity_turn_wifi_positive">OK</string>
    <string name="multinetwork_connectivity_turn_wifi_negative">Cancel</string>
    <!-- Strings for NfcTestActivity -->
    <string name="nfc_test">NFC Test</string>
    <string name="nfc_test_info">The Peer-to-Peer Data Exchange tests require two devices with
        NFC enabled to exchange messages. One device must be the candidate device running the
        software build to be tested, while the other device must be an implementation already
        known to be compatible.\n\nThe Tag Verification tests check that your
        device can properly read and write to tags of different technologies. The MIFARE
        Ultralight test is only applicable for devices that support it.
        \n\nThe Host-based card emulation tests check that your device has properly implemented
             host-based card emulation.
    </string>

    <string name="nfc_not_enabled">NFC is not enabled!</string>
    <string name="nfc_not_enabled_message">These tests require NFC to be enabled. Click the
        button below to goto Settings and enable it.</string>
    <string name="nfc_settings">NFC Settings</string>
    <string name="secure_nfc_enabled">\"Require device unlock for NFC\" is enabled!</string>
    <string name="secure_nfc_enabled_message">These tests require \"Require device unlock for NFC\"
        to be disabled. Click the button below to goto Settings and disable it.</string>

    <string name="ndef_push_not_enabled">NDEF Push is not enabled!</string>
    <string name="ndef_push_not_enabled_message">These tests require Android Beam to be enabled.
        Click the button below to goto NFC Sharing Settings and enable it.</string>
    <string name="ndef_push_settings">NFC Sharing Settings</string>

    <string name="nfc_pee_2_pee">Peer-to-Peer Data Exchange</string>
    <string name="nfc_ndef_push_sender">NDEF Push Sender</string>
    <string name="nfc_ndef_push_receiver">NDEF Push Receiver</string>
    <string name="nfc_llcp_version_check">LLCP version check</string>

    <string name="nfc_tag_verification">Tag Verification</string>
    <string name="nfc_ndef">NDEF</string>
    <string name="nfc_mifare_ultralight">MIFARE Ultralight</string>

    <string name="nfc_ndef_push_sender_info">Start the \"CTS Verifier NDEF Receiver\" test on
        another device and touch the devices back to back. The receiver should show a
        dialog indicating it has successfully received the correct message!</string>
    <string name="nfc_ndef_push_sender_instructions">Touch this device to the back of another
        device running the \"CTS Verifier NDEF Receiver\"...</string>

    <string name="nfc_ndef_push_receiver_info">Start the \"CTS Verifier NDEF Sender\" test on
        another device and touch the devices back to back. The receiver should show a
        dialog indicating it has successfully received the correct message!</string>
    <string name="nfc_ndef_push_receiver_instructions">Touch this device to the back of another
        device running the \"CTS Verifier NDEF Sender\"...</string>
    <string name="nfc_ndef_push_receive_success">Successfully received the correct NDEF push
        message.</string>
    <string name="nfc_ndef_push_receive_failure">Failed to receive the correct NDEF push
        message.</string>

    <string name="nfc_llcp_version_check_info">This test requires two candidate devices
       with NFC enabled to exchange P2P messages. Start the \"LLCP version check\" test on
       the other candidate device also, and touch the devices back to back. This test
       then verifies that the candidate device correctly advises the LLCP version as 1.2</string>
    <string name="nfc_llcp_version_check_failure">The candidate devices does not report LLCP
       version 1.2 or higher.</string>
    <string name="nfc_llcp_version_check_success">The candidate device has a valid LLCP version.</string>
    <string name="nfc_tag_verifier">NFC Tag Verifier</string>
    <string name="nfc_tag_verifier_info">Follow the on-screen instructions to write and read
        a tag of the chosen technology.</string>

    <string name="nfc_scan_tag">Place device on a writable %s tag...</string>
    <string name="nfc_write_tag_title">Writable tag discovered!</string>
    <string name="nfc_write_tag_message">Press OK to write to this tag...</string>
    <string name="nfc_scan_tag_again">Tap the same %s tag again to confirm that its contents match...</string>
    <string name="nfc_wrong_tag_title">Wrong type of tag scanned</string>
    <string name="nfc_no_tech">No tag technologies detected...</string>

    <string name="nfc_writing_tag">Writing NFC tag...</string>
    <string name="nfc_writing_tag_error">Error writing NFC tag...</string>
    <string name="nfc_reading_tag">Reading NFC tag...</string>
    <string name="nfc_reading_tag_error">Error reading NFC tag...</string>

    <string name="nfc_result_message">Written data:\n%1$s\n\nRead data:\n%2$s</string>
    <string name="nfc_ndef_content">Id: %1$s\nMime: %2$s\nPayload: %3$s</string>

    <string name="nfc_hce">Host-based card emulation</string>
    <string name="nfc_hce_f">Host-based Felica card emulation</string>
    <string name="nfc_hce_reader_tests">HCE reader tests</string>
    <string name="nfc_hce_f_reader_tests">HCE Felica reader tests</string>
    <string name="nfc_hce_emulator_tests">HCE emulator tests</string>
    <string name="nfc_hce_f_emulator_tests">HCE Felica emulator tests</string>
    <string name="nfc_hce_f_emulator">HCE Felica emulator</string>
    <string name="nfc_hce_f_reader">HCE Felica reader</string>
    <string name="nfc_hce_emulator_test_info">The host-based card emulation
        tests require two devices to be completed. The HCE emulator tests are used
        to actually test the host-based card emulation feature of the device-under-test. So the
        device running the emulator tests must be the candidate device running the software
        to be tested. \n\nFor each emulator test, there is a corresponding "reader test"
        in the "HCE reader tests" section. The "reader test" acts as a NFC terminal/POS
        and makes sure the device-under-test implements card emulation correctly.</string>
    <string name="nfc_hce_reader_test_info">The host-based card emulation
        tests require two devices to be completed. The HCE emulator tests are used
        to actually test the host-based card emulation feature of the device-under-test. So the
        device running the emulator tests must be the candidate device running the software
        to be tested. \n\nFor each emulator test, there is a corresponding "reader test"
        in the "HCE reader tests" section. The "reader test" acts as a NFC terminal/POS
        and makes sure the device-under-test implements card emulation correctly.
    </string>
    <string name="nfc_hce_type_selection">By default HCE applications must run on type A. If your device is restricted to type B (for example, because of a type B only UICC), select "Type B" from the drop-down box above. Note that all tests must be completed in the same mode (either "Type A" or "Type B").</string>
    <string name="nfc_hce_please_wait">Please wait</string>
    <string name="nfc_hce_setting_up">Setting up card emulation services...</string>

    <string name="nfc_hce_default_route_emulator">Default route (Emulator)</string>
    <string name="nfc_hce_default_route_reader">Default route (Reader)</string>
    <string name="nfc_hce_default_route_emulator_help">This test verifies that the default route for ISO-DEP (ISO14443-4) frames is the host CPU. It does this by selecting an AID that any Android HCE phone will respond to if the select command is routed to the host. Please verify that there is no rule in the routing table that points this AID to the host. This test may be passed if the "PASS" button on the reader side lights up after tapping the devices together.</string>

    <string name="nfc_hce_protocol_params_emulator">Protocol parameters (Emulator)</string>
    <string name="nfc_hce_protocol_params_reader">Protocol parameters (Reader)</string>
    <string name="nfc_hce_protocol_params_emulator_help">This test verifies that the Nfc-A and ISO-DEP protocol parameters are being set correctly. The test may be passed when no FAIL entries show up in the results below. Note that the reader device may be different from the device under test - the DUT itself does not need to be able to act as the reader for this test. \n\n Note that for each test there are 3 possible outcomes:\n1) OK -> test has passed;\n2) FAIL -> test has failed and this must be fixed;\n3) FAIL EMVCO -> this protocol parameter is deviating from the requirements in the EMV Contactless Communication Protocol specification.\n\nWhile it is allowed to ship a HCE implementation with EMVCo failures, it may not perform optimal when EMVco based payment HCE apps are run on the device.</string>

    <string name="nfc_hce_single_payment_emulator">Single payment (Emulator)</string>
    <string name="nfc_hce_single_payment_reader">Single payment (Reader)</string>

    <string name="nfc_hce_dual_payment_emulator">Two payment services (Emulator)</string>
    <string name="nfc_hce_dual_payment_reader">Two payment services (Reader)</string>

    <string name="nfc_hce_change_default_emulator">Change default payment service (Emulator)</string>
    <string name="nfc_hce_change_default_reader">Change default payment service (Reader)</string>

    <string name="nfc_hce_tap_reader_title">Tap reader</string>
    <string name="nfc_hce_tap_reader_message">Select the corresponding reader test on the remote device, click OK on this dialog, and tap devices together. The pass button will be enabled if the test passes.</string>

    <string name="nfc_hce_single_non_payment_emulator">Single non-payment (Emulator)</string>
    <string name="nfc_hce_single_non_payment_reader">Single non-payment (Reader)</string>

    <string name="nfc_hce_dual_non_payment_emulator">Two non-payment services (Emulator)</string>
    <string name="nfc_hce_dual_non_payment_reader">Two non-payment services (Reader)</string>

    <string name="nfc_hce_conflicting_non_payment_emulator">Two conflicting non-payment services (Emulator)</string>
    <string name="nfc_hce_conflicting_non_payment_reader">Two conflicting non-payment services (Reader)</string>

    <string name="nfc_hce_foreground_non_payment_emulator">Foreground override non-payment services (Emulator)</string>
    <string name="nfc_hce_foreground_non_payment_reader">Foreground override non-payment services (Reader)</string>
    <string name="nfc_hce_foreground_non_payment_help">This test enables two non-payment services with conflicting AIDs. It then uses Androids API to allow the foreground app to set a preference for a specific service. This should prevent a popup dialog from showing. If you see a popup dialog during this asking you to select an app, this test has failed.</string>

    <string name="nfc_hce_foreground_payment_emulator">Foreground override payment services (Emulator)</string>
    <string name="nfc_hce_foreground_payment_reader">Foreground override payment services (Reader)</string>
    <string name="nfc_hce_foreground_payment_help">This test enables two payment services, and asks you to set one as the default service. It then uses Androids API to allow the foreground app to set a preference for the non-default service. This will cause the non-default payment service to be invoked.</string>
    <string name="nfc_hce_change_favor_foreground">This test requires the \"Use default\" setting to be set to \"Except when another payment app is open\". Tap OK to go to Tap and Pay settings and make sure the \"Use default\" setting is set to \"Except when another payment app is open\".</string>
    <string name="nfc_hce_offhost_service_emulator">Off-host service (Emulator)</string>
    <string name="nfc_hce_offhost_service_reader">Off-host service (Reader)</string>
    <string name="nfc_hce_offhost_emulator_help">This test enables a service that declares some AIDs to reside off-host. This test only needs to be passed if your device has a secure element (either embedded or UICC.). The responses from the secure element are not verified by the test - it is up to the tester to verify the responses are as expected.</string>

    <string name="nfc_hce_on_and_offhost_service_emulator">On and off-host services (Emulator)</string>
    <string name="nfc_hce_on_and_offhost_service_reader">On and off-host services (Reader)</string>
    <string name="nfc_hce_on_and_offhost_emulator_help">This test enables a service that declares some AIDs to reside off-host, and another service that runs on host. It then first sends an APDU sequence that goes off-host, and subsequently some APDUs that should go to the on-host service. This test only needs to be passed if your device has a secure element (either embedded or UICC.). The pass button will be enabled if the on-host sequence is performed as expected. The responses from the secure element are not verified by the test - it is up to the tester to verify the responses are as expected. </string>

    <string name="nfc_hce_tap_test_emulator">50 successful taps test (Emulator)</string>
    <string name="nfc_hce_tap_test_reader">50 successful taps test (Reader)</string>
    <string name="nfc_hce_tap_test_emulator_help">This test requires you to complete at least 50 HCE taps, to ensure stability of the HCE feature. The NFC service and controller should not crash or hang during any of the 50 taps.</string>
    <string name="nfc_hce_throughput_emulator">HCE throughput test (Emulator)</string>
    <string name="nfc_hce_throughput_reader">HCE throughput test (Reader)</string>
    <string name="nfc_hce_throughput_emulator_help">This test verifies that your HCE implementation can reach a decent throughput. While Android does not have any requirements on HCE performance, many HCE applications such as transport and payment apps do. If the average APDU roundtrip time is more than 50ms, please take a look at your implementation to see where the delay is coming from.</string>
    <string name="nfc_hce_change_preinstalled_wallet">The device has an installed payment application that is currently set as default. To complete the test, you will be asked whether you want to make another app the default app. Select yes.</string>
    <string name="nfc_hce_change_default_help">You will now be asked whether you want to make Payment Service #1 the default app. Select yes.</string>
    <string name="nfc_hce_conflicting_non_payment_help">When tapping the first time, you will be shown a dialog that asks you to choose between TransportService #1 and TransportService #2. Select TransportService #2. Verify a dialog is shown that asks you to tap again to complete. Now tap again, and if communication with TransportService #2 is successfull the pass button will be enabled."</string>

    <string name="nfc_hce_payment_dynamic_aids_emulator">Dynamic payment AIDs (Emulator)</string>
    <string name="nfc_hce_payment_dynamic_aids_reader">Dynamic payment AIDs (Reader)</string>
    <string name="nfc_hce_payment_dynamic_aids_help">This test tries to register dynamic AIDs for a payment service.</string>

    <string name="nfc_hce_large_num_aids_emulator">Large number of AIDs (Emulator)</string>
    <string name="nfc_hce_large_num_aids_reader">Large number of AIDs (Reader)</string>
    <string name="nfc_hce_large_num_aids_help">This test tries to register a large number of different AIDs, to make sure there are no limitations on the maximum amount of HCE apps on the device. Note that this test may take a few seconds to complete; please be patient.</string>

    <string name="nfc_hce_payment_prefix_aids_emulator">Payment prefix AIDs (Emulator)</string>
    <string name="nfc_hce_payment_prefix_aids_reader">Payment prefix AIDs (Reader)</string>
    <string name="nfc_hce_payment_prefix_aids_help">This test statically registers prefix AIDs for a payment service.</string>

    <string name="nfc_hce_payment_prefix_aids_emulator_2">Payment prefix AIDs 2 (Emulator)</string>
    <string name="nfc_hce_payment_prefix_aids_reader_2">Payment prefix AIDs 2 (Reader)</string>

    <string name="nfc_hce_other_prefix_aids_emulator">Other prefix AIDs (Emulator)</string>
    <string name="nfc_hce_other_prefix_aids_reader">Other prefix AIDs (Reader)</string>
    <string name="nfc_hce_other_prefix_aids_help">This test dynamically registers prefix AIDs for a non-payment service.</string>

    <string name="nfc_hce_other_conflicting_prefix_aids_emulator">Conflicting non-payment prefix AIDs (Emulator)</string>
    <string name="nfc_hce_other_conflicting_prefix_aids_reader">Conflicting non-payment prefix AIDs (Reader)</string>
    <string name="nfc_hce_other_conflicting_prefix_aids_help">This test registers conflicting prefix AIDs and makes sure AID conflict detection with prefix AIDs works properly. When tapping the first time, you will be shown a dialog that asks you to choose between TransportService #1 and TransportService #2. Select TransportService #2. Verify a dialog is shown that asks you to tap again to complete. Now tap again, and if communication with TransportService #2 is successfull the pass button will be enabled."</string>

    <string name="nfc_screen_on_only_offhost_emulator">Screen on only Off-host Service (Emulator)</string>
    <string name="nfc_screen_on_only_offhost_reader">Screen on only Off-host Service (Reader)</string>
    <string name="nfc_screen_on_only_offhost_help">This test enables a service that declares some AIDs to reside off-host. This test only needs to be passed if your device has a secure element. The responses from the secure element are not verified by the test - it is up to the tester to verify the responses are as expected. The expected behavior is the AID can be selected only when the device is in screen on state.</string>

    <string name="nfc_screen_off_hce_payment_emulator">Screen off HCE Payment (Emulator)</string>
    <string name="nfc_screen_off_hce_payment_reader">Screen off HCE Payment (Reader)</string>
    <string name="nfc_screen_off_hce_payment_help">This test verifies emulator responds when device is in screen off state. Please put the emulator to screen off state.</string>

    <string name="nfc_payment_service_desc">NFC Payment service</string>
    <string name="ppse">PPSE</string>
    <string name="mastercard">MasterCard</string>
    <string name="visa">Visa</string>
    <string name="paymentService1">Payment Service #1</string>
    <string name="paymentService2">Payment Service #2</string>
    <string name="transportService1">TransportService #1</string>
    <string name="transportService2">TransportService #2</string>
    <string name="accessService">AccessService</string>
    <string name="offhostService">OffhostService</string>
    <string name="felicaservice">Felica Service</string>
    <string name="UiccTransactionEventService">Uicc Transaction Event Service</string>
    <string name="screenOffPaymentService">Screen Off Payment Service</string>
    <string name="screenOnOnlyOffHostService">Screen On Only OffHost Service</string>

    <string name="nfc_offhost_uicc">Offhost UICC-based card emulation</string>
    <string name="nfc_offhost_uicc_emulator_tests">Offhost card emulation emulator tests</string>
    <string name="nfc_offhost_uicc_reader_tests">Offhost card emulation reader tests</string>
    <string name="nfc_offhost_uicc_transaction_event1_emulator">Offhost transaction event-field off (Emulator)</string>
    <string name="nfc_offhost_uicc_transaction_event1_reader">Offhost transaction event-field off (Reader)</string>
    <string name="nfc_offhost_uicc_transaction_event2_emulator">Offhost transaction event-deselect (Emulator)</string>
    <string name="nfc_offhost_uicc_transaction_event2_reader">Offhost transaction event-deselect (Reader)</string>
    <string name="nfc_offhost_uicc_transaction_event3_emulator">Offhost transaction event-HCI CMD (Emulator)</string>
    <string name="nfc_offhost_uicc_transaction_event3_reader">Offhost transaction event-HCI CMD (Reader)</string>

    <string name="nfc_offhost_uicc_emulator_test_info">The offhost-based card emulation
        tests require two devices to be completed. The emulator tests are used
        to actually test the off-based card emulation feature of the device-under-test. So the
        device running the emulator tests must be the candidate device running the software
        to be tested. \n\nFor each emulator test, there is a corresponding "reader test"
        in the "Offhost reader tests" section. The "reader test" acts as a NFC terminal/POS
        and makes sure the device-under-test implements card emulation correctly
    </string>
    <string name="nfc_offhost_uicc_reader_test_info">The offhost-based card emulation
        tests require two devices to be completed. The emulator tests are used
        to actually test the off-based card emulation feature of the device-under-test. So the
        device running the emulator tests must be the candidate device running the software
        to be tested. \n\nFor each emulator test, there is a corresponding "reader test"
        in the "Offhost card emulation reader tests" section. The "reader test" acts as a NFC terminal/POS
        and makes sure the device-under-test implements card emulation correctly.
    </string>
    <string name="nfc_offhost_uicc_type_selection">By default Offhost card emulation applications run on type A.
      If your device supports type B (for example, because of a type B only UICC), select "Type B" from the drop-down box above. Note that all tests must be completed in the same mode (either "Type A" or "Type B").</string>
    <string name="nfc_offhost_please_wait">Please wait</string>
    <string name="nfc_offhost_setting_up">Setting up card emulation services...</string>
    <string name="nfc_offhost_uicc_transaction_event_emulator_help"> This is an optional test for Android version beofre S. This is okay to set this test to passed and continue. Switch application to background before starting tests. Successful transaction event will switch application to foreground with transaction event data.</string>

    <!-- Strings for Sensor Test Activities -->
    <string name="snsr_device_admin_receiver">Sensor Tests Device Admin Receiver</string>
    <string name="snsr_test_summary">Tests passed: %1$d, Tests skipped: %2$d, Tests failed: %3$d</string>
    <string name="snsr_test_complete">Test completed without errors.</string>
    <string name="snsr_test_complete_with_errors">Test completed with errors which indicates
      the device does not meet Android compatibility requirement.
      This will degrade user experience and cause applications to misbehave.
      To help debugging, please take a bug report and back up contents under
      /sdcard/sensorTests of the device under test.
    </string>
    <string name="snsr_test_pass">PASS</string>
    <string name="snsr_test_skipped">SKIPPED</string>
    <string name="snsr_test_fail">FAIL</string>
    <string name="snsr_execution_time">Test execution time %1$s sec</string>
    <string name="snsr_rvcvxchk_test">Rotation Vector CV Crosscheck</string>
    <string name="snsr_rvcvxchk_test_rec">Rotation Vector CV Recording</string>

    <!-- Strings to interact with users in Sensor Tests -->
    <string name="snsr_test_play_sound">A sound will be played once the verification is complete...</string>
    <string name="snsr_no_interaction">Leave the device on top of a flat surface.</string>
    <string name="snsr_interaction_needed">Once the test begins, you will have to wave your hand over the front of the device.</string>
    <string name="snsr_interaction_needed_prox">Once the test begins, if possible, flip the device so it is face down on a surface, then flip back to face up after a second or two. Otherwise, wave your hand over the front of the device.</string>
    <string name="snsr_device_steady">Keep the device steady.</string>
    <string name="snsr_keep_device_rotating_clockwise">Once the test begins, you will have to keep rotating the device clockwise.</string>
    <string name="snsr_wait_for_user">Press \'Next\' to continue.</string>
    <string name="snsr_wait_to_begin">Press \'Next\' to begin.</string>
    <string name="snsr_wait_to_retry">Press \'Retry\' to rerun or \'Fail and Next\' to skip to next.</string>
    <string name="snsr_wait_to_finish">Press \'Retry\' to rerun or \'Finish\' to end.</string>
    <string name="snsr_on_complete_return">After completing the task, go back to this test.</string>
    <string name="snsr_movement_expected">Movement was expected during the test. Found=%1$b.</string>
    <string name="snsr_sensor_feature_deactivation">IMPORTANT NOTE: Please also turn off any special features in the
        device that use sensors (wake up gestures, motion triggered events, moves, etc).
        Not doing so is expected to cause test failures. Once you are done, you can begin the test.</string>
    <string name="snsr_setting_mode_request">You will be redirected to set \'%1$s\' to: %2$s.</string>
    <string name="snsr_setting_mode_set">\'%1$s\' set to: %2$s.</string>
    <string name="snsr_setting_mode_not_set">\'%1$s\' not set to: %2$s.</string>
    <string name="snsr_setting_airplane_mode">Airplane mode</string>
    <string name="snsr_setting_screen_brightness_mode">Adaptive Brightness</string>
    <string name="snsr_setting_auto_rotate_screen_mode">Auto-rotate screen</string>
    <string name="snsr_setting_keep_screen_on">Stay awake</string>
    <string name="snsr_setting_location_mode">Location</string>
    <string name="snsr_setting_ambient_display">Ambient Display</string>
    <string name="snsr_pass_on_error">Pass Anyway</string>
    <string name="snsr_run_automated_tests">The screen will be turned off to execute the tests,
        when tests complete, the device will vibrate and the screen will be turned back on.</string>

    <!-- Accelerometer -->
    <string name="snsr_accel_test">Accelerometer Test</string>
    <string name="snsr_accel_test_info">This test verifies that the accelerometer is working properly. As you move the device around through space, the triangle should always point down (i.e. in the direction of gravity.) If it does not, the accelerometer is improperly configured.</string>
    <string name="snsr_accel_m_test">Accelerometer Measurement Tests</string>
    <string name="snsr_accel_test_face_up">Place the device on a flat surface with the screen
        facing the ceiling.</string>
    <string name="snsr_accel_test_face_down">Place the device on a flat surface with the screen
        facing it.</string>
    <string name="snsr_accel_test_right_side">Place the device in a flat surface resting vertically
        on its right side.</string>
    <string name="snsr_accel_test_left_side">Place the device in a flat surface resting vertically
        on its left side.</string>
    <string name="snsr_accel_test_top_side">Place the device in a flat surface resting vertically
        on its top side.</string>
    <string name="snsr_accel_test_bottom_side">Place the device in a flat surface resting vertically
        on its bottom side.</string>

    <!-- Gyroscope -->
    <string name="snsr_gyro_test">Gyroscope Test</string>
    <string name="snsr_gyro_test_info">This test verifies that the gyroscope is working properly.\n\nRotate your device as shown by the 3D block. A green background or a check mark indicates that the gyroscope\'s value is correct. A red background or a X mark indicates that the gyroscope\'s value is not right.\n\nThere are 6 parts of the test corresponding to each rotation. Press Pass for all the stages to complete this test.</string>
    <string name="snsr_gyro_test_progress">Test %1$d of %2$d</string>
    <string name="snsr_gyro_test_no_gyro_title">No gyroscope?</string>
    <string name="snsr_gyro_test_no_gyro_message">It doesn\'t seem like you have a gyroscope, so you don\'t need to run this test.</string>
    <string name="snsr_gyro_test_degrees_title">Wrong units?</string>
    <string name="snsr_gyro_test_degrees_message">These values looks like degrees per second. These should be radians per second!</string>
    <string name="snsr_gyro_m_test">Gyroscope Measurement Test</string>
    <string name="snsr_gyro_device_placement">Place the device in a flat surface with the screen
        facing the ceiling. Read the instructions for each scenario, before you perform the
        test.</string>
    <string name="snsr_gyro_device_static">Leave the device static.</string>
    <string name="snsr_gyro_rotate_device">Once you begin the test, you will need to rotate the
        device 360deg (one time) in the direction show by the animation, then place it back on the
        flat surface.</string>

    <!-- Heart Rate -->
    <string name="snsr_heartrate_test">Heart Rate Test</string>
    <string name="snsr_heartrate_test_info">This test verifies that the heart rate monitor is working properly.\n\nWait for at least 1 minute before verifying.\n\nVerify that the resting heart rate is between 0 and 100.</string>
    <string name="snsr_heartrate_test_no_heartrate_title">No heart rate monitor?</string>
    <string name="snsr_heartrate_test_no_heartrate_message">It doesn\'t seem like you have a heart rate monitor, so you don\'t need to run this test.</string>

    <!-- Hinge Angle -->
    <string name="snsr_hinge_angle_test">Hinge Angle Test</string>
    <string name="snsr_hinge_angle_test_instructions">Place the device into its default position. Read the instructions for each scenario before you perform the test.</string>
    <string name="snsr_hinge_angle_test_exercise_hinge">Transition the device from its default position as far in one direction as the hinge sensor measures.
        Then, transition it in the other direction as far as it can measure. Lastly, return the device back to its default position. Once completed, press \"Next\" to finish the test.</string>

    <!-- Magnetic Field -->
    <string name="snsr_mag_m_test">Magnetic Field Measurement Tests</string>
    <string name="snsr_mag_verify_norm">Verifying the Norm...</string>
    <string name="snsr_mag_verify_offset">Verifying the Offset...</string>
    <string name="snsr_mag_verify_std_dev">Verifying the Standard Deviation...</string>
    <string name="snsr_mag_verify_calibrated_uncalibrated">Verifying the relationship between
        calibrated and uncalibrated measurements...</string>
    <string name="snsr_mag_calibration_description">Please calibrate the Magnetometer by moving
        it in 8 shapes in different orientations. Click \"Next\" to start and click \"Next\" once again to end calibration.</string>
    <string name="snsr_mag_calibration_complete">When done, leave the device in a flat surface, far
        from all metallic objects (if the test does not pass, try re-running it outdoors).</string>
    <string name="snsr_mag_measurement">-&gt; (%1$.2f, %2$.2f, %3$.2f) : %4$.2f uT</string>
    <string name="snsr_mag_move_outside">Unable to acquire location. Please move outside to allow a location fix.</string>
    <string name="snsr_mag_no_location">Failed to acquire location. Using default magnetic field of %1$.2f uT.</string>

    <!-- Sensor Value Accuracy -->
    <string name="snsr_rot_vec_test">Rotation Vector Accuracy Test</string>
    <string name="snsr_event_length">Sensor(%3$s). Event values expected to have size=%1$d. Found=%2$d.</string>
    <string name="snsr_event_value">Sensor(%3$s). Event value[0] expected to be of value=%1$f. Found=%2$f.</string>
    <string name="snsr_event_time">Sensor(%5$s). Event timestamp expected to be synchronized with SystemClock.elapsedRealtimeNanos(). Event received at=%1$d. Event timestamp=%2$d. Delta=%3$d. Threshold=%4$d.</string>

    <!-- Sensor Batching -->
    <string name="snsr_batch_test">Sensor Batching Manual Tests</string>
    <string name="snsr_batching_walking_needed">Once the test begins, you will have to take the
        device in your hand and walk.</string>

    <!-- Sensor Synchronization -->
    <string name="snsr_synch_test">Sensor Synchronization Test</string>

    <!-- Step Counter and Detector -->
    <string name="snsr_step_counter_test">Step Counter and Detector Tests</string>
    <string name="snsr_step_counter_test_walking">Once the test begins, you will need to walk, and tap on the screen with each step you take.</string>
    <string name="snsr_step_counter_test_still">Once the test begins, you will need to remain still and hold the device still in your hand.</string>
    <string name="snsr_step_counter_expected_steps">At least %1$d steps are expected to be reported. Reported=%2$d.</string>
    <string name="snsr_step_counter_detected_reported">Steps reported by user=%1$d. Steps counted=%2$d. Delta=%3$d. Tolerance=%4$d.</string>
    <string name="snsr_step_detector_detected_reported">Steps reported by user=%1$d. Steps detected=%2$d. Delta=%3$d. Tolerance=%4$d.</string>
    <string name="snsr_step_counter_event_changed">Step counter expected to increase monotonically, with a delta > 0. Found=%1$d. Timestamp=%2$d.</string>
    <string name="snsr_step_reported">%1$d | User reported step.</string>
    <string name="snsr_step_counter_event">%1$d | Step Counter event. count=%2$d.</string>
    <string name="snsr_step_detector_event">%1$d | Step Detector event.</string>

    <!-- Step Counter and Detector Permission -->
    <string name="snsr_step_permission_test">Step Permission Test</string>
    <string name="snsr_step_permission_disable">Please change the \'Physical Activity\' permission for CtsVerifier to \'Deny\'</string>
    <string name="snsr_step_permission_enable">Please change the \'Physical Activity\' permission for CtsVerifier to \'Allow\'</string>
    <string name="snsr_step_permission_walk">Please begin walking while holding the device. A sound will play when you may stop walking</string>

    <!-- Device suspend tests -->
    <string name="snsr_device_suspend_test">Device Suspend Tests</string>
    <string name="snsr_device_did_not_go_into_suspend">Device did not go into suspend mode during test execution </string>
    <string name="snsr_batch_did_not_arrive_at_expected_time">Batch did not arrive at the expected time estimatedBatchArrivalMs=%1$d
    firstEventReceivedMs=%2$d diffMs=%3$d toleranceMs=%4$d </string>
    <string name="snsr_device_suspend_test_instr">One you begin the test, disconnect USB, turn off the display and allow
    the device to go into suspend mode. The screen will turn on and a sound will be played once all the tests are completed.</string>
    <string name="snsr_device_suspend_service">Device Suspend Service</string>
    <string name="snsr_device_suspend_service_active">Device Suspend Test Active</string>
    <string name="snsr_device_suspend_service_notification">Device Suspend Test is using sensors.</string>

    <!-- Significant Motion -->
    <string name="snsr_significant_motion_test">Significant Motion Tests</string>
    <string name="snsr_significant_motion_event_arrival">Event expected to trigger. Triggered=%1$s.</string>
    <string name="snsr_significant_motion_event_type">Event expected to be of type=%1$d. Found=%2$d.</string>
    <string name="snsr_significant_motion_event_unexpected">Event not expected to trigger. Triggered=%1$s.</string>
    <string name="snsr_significant_motion_disable_info">Significant Motion is expected to disable itself after it triggers once.</string>
    <string name="snsr_significant_motion_test_trigger">Once you begin the test, you will need to walk for Significant Motion to be detected.</string>
    <string name="snsr_significant_motion_test_cancel">Once you begin the test, you will need to walk to ensure Significant Motion is not reported after trigger canceled.</string>
    <string name="snsr_significant_motion_test_vibration">Leave the device in a level surface. Once you begin the test, the device will vibrate to ensure that Significant Motion is not triggered.</string>
    <string name="snsr_significant_motion_test_in_hand">Once you begin the test, hold the device in your hand while you perform natural hand movements.</string>
    <string name="snsr_significant_motion_test_sitting">Once you begin the test, keep the device in your pocket and move naturally while sitting in a chair.</string>
    <string name="snsr_significant_motion_test_deactivation">Once you begin the test, you will need to walk to ensure Significant Motion triggers only once.</string>
    <string name="snsr_significant_motion_registration">Expected to be able to register for TriggerSensor. Found=%1$b.</string>
    <string name="snsr_significant_motion_cancelation">Expected to be able to cancel TriggerSensor. Found=%b.</string>
    <string name="snsr_significant_motion_ap_suspend">One you begin the test, disconnect USB, turn off the display and allow the device to go into suspend.
    You will need to walk to ensure that Significant Motion triggers. The screen will turn on and a sound will be played once the test completes.</string>
    <string name="snsr_device_did_not_wake_up_at_trigger">Device did not wakeup at trigger time. wakeTime=%1$d ms triggerTime=%2$d ms</string>

    <!-- Event sanitization for idle UIDs -->
    <string name="snsr_event_sanitization_test">Event sanitization for idle UID test</string>
    <string name="snsr_event_sanitization_test_setup">Run the \'adb shell cmd sensorservice set-uid-state com.android.cts.verifier idle\' shell command
        to emulate the CtsVerifier UID being idle.</string>
    <string name="snsr_event_sanitization_test_cleanup">Run the \'adb shell cmd sensorservice reset-uid-state com.android.cts.verifier\' shell command
        to stop emulating the CtsVerifier UID being idle. Failing to do that would lead to other tests failing!</string>
    <string name="snsr_significant_motion_test_uid_idle">Move around with the device to try triggering significant motion</string>
    <string name="snsr_significant_motion_test_uid_idle_expectation">No trigger events should be generated while idle</string>
    <string name="snsr_proximity_test_uid_idle">Touch the proximity sensor to try triggering it</string>
    <string name="snsr_proximity_test_uid_idle_expectation">No on-change events should be generated while idle</string>

    <!-- Low Latency Off-Body Detect -->
    <string name="snsr_offbody_sensor_test">Off Body Sensor Tests</string>
    <string name="snsr_offbody_sensor_registration">Registration failed for low latency offbody detect sensor.\n</string>
    <string name="snsr_offbody_event_arrival">Expected to receive a low latency offbody detect event. Found=%b.</string>
    <string name="snsr_offbody_event_type">Event expected to be of type=%1$d. Found=%2$d.</string>
    <string name="snsr_offbody_event_invalid_value">Invalid value received for offbody state; Expected value %1$d or %2$d. Found=%2$d.</string>
    <string name="snsr_offbody_event_wrong_value">Expected to receive an event having value=%1$d. Found=%2$d.</string>
    <string name="snsr_offbody_event_unexpected">Event not expected to trigger. Triggered=%1$s.</string>
    <string name="snsr_offbody_response_timing_violation">%1$s event maximum allowed latency is %2$d. Found=%3$d ms.</string>
    <string name="snsr_offbody_state_change">Offbody state changed to %1$d. Timestamp=%2$d.</string>
    <string name="snsr_start_offbody_sensor_test_instr">Put watch on your wrist and then click Next button.</string>
    <string name="snsr_start_onbody_sensor_test_instr">Remove the watch from your wrist and then click Next button.</string>
    <string name="snsr_offbody_detect_test_instr">Click Next button, then immediate remove the watch from your wrist after the countdown reaches 0.</string>
    <string name="snsr_offbody_detect_test_countdown">Countdown: %1$d.</string>
    <string name="snsr_onbody_detect_test_instr">Click Next button, then immediately attach the watch on your wrist.</string>
    <string name="snsr_ap_wake_offbody_detect_test_instr">Click Next button, then palm the screen. Wait a few seconds after screen blackens, then remove watch from wrist.</string>

    <!-- Strings for Sensor CTS tests inside CtsVerifier -->
    <string name="snsr_single_sensor_tests">CTS Single Sensor Tests</string>
    <string name="snsr_sensor_integration_tests">CTS Sensor Integration Tests</string>
    <string name="snsr_sensor_test">CTS Sensor Test</string>
    <string name="snsr_sensor_batching_tests">CTS Sensor Batching Tests</string>

    <!-- String for DynamicSensorDiscoveryTest -->
    <string name="snsr_dynamic_sensor_discovery_test">Dynamic Sensor Discovery Test</string>

    <!-- Strings for Sample Test Activities -->
    <string name="share_button_text">Share</string>
    <string name="sample_framework_test">Sample Framework Test</string>
    <string name="sample_test">Sample Test</string>
    <string name="sample_test_info">This test verifies that bluetooth sharing is working properly.\nThe test assumes the Device Under Test has bluetooth enabled and is already paired with a second device, also with bluetooth enabled.\nStart this test by clicking share, choose bluetooth from the options, and then select a device to share with.\nNote: This is a sample test, used to demonstrate how to write CTS Verifier tests, so just click pass.</string>

    <!-- Strings for UsbDebuggingDialogTapjackingTest -->
    <string name="usb_tapjacking_button_text">Show overlay</string>
    <string name="usb_tapjacking_test">Usb Debugging Dialog Tapjacking Test</string>
    <string name="usb_tapjacking_test_info">This test verifies that tapjacking on the usb dialog is not possible by disallowing users from accepting usb debugging pemissions when dialog is obscured.</string>
    <string name="usb_tapjacking_test_instructions">
        1. Connect device via usb to computer.\n
        2. Click \"Show overlay\" button.  Settings may appear if the CTS Verifier app doesn\'t have display over apps permission.  Enable this permission and then click back to navigate back to the app.\n
        3. Trigger USB debugging dialog (from computer terminal): \"adb shell am start -e fingerprints placeholder -e key placeholder %s\"\n
        4. USB debugging dialog should appear.  If the overlay cannot be seen above the USB debugging dialog, PASS this test (no need to proceed to Step 5).  Else, if the overlay does appear on top saying \"This message covers the USB debugging RSA prompt\", continue to Step 5.\n
        5. Try clicking OK. \n
        Test pass if you cannot click OK when the text quoted above is on top of the USB debugging dialog.  Toast should appear saying there is an overlay so Settings cannot verify your response. \n
        Note: Fake message overlay may remain on screen until you leave the test. This is working as intended. \n
    </string>
    <string name="usb_tapjacking_usb_debugging_component">com.android.systemui/.UsbDebuggingActivityAlias</string>
    <string name="usb_tapjacking_overlay_message">This message covers the USB debugging RSA prompt</string>
    <string name="usb_tapjacking_error_toast">Please restart the application and try again.</string>
    <string name="usb_tapjacking_error_toast2">Please enable display over apps permission for this application before proceeding.</string>

    <!-- Strings for Camera Orientation -->
    <string name="camera_orientation">Camera Orientation</string>
    <string name="co_info">This test verifies the orientation capabilities of
    camera preview and capture.\n - The left view shows a preview window rotated
    clockwise by a given magnitude of degrees.\n - The right view, after taking
    a photo, shows the captured image.\n - For each camera and orientation, both
    the left and right views should appear rotated clockwise by the amount of
    degrees specified. Choose \"Pass\" if this is the case. Otherwise, choose
    \"Fail\".\n - For front-facing cameras, the test will horizontally mirror
    the captured image prior to rotation, in attempt to make the left and right
    views appear the same.\n - The physical orientation of the device does not
    matter.\n - Read the message above the \"Take Photo\" button for
    step-by-step instructions.
    </string>
    <string name="co_preview_label">Camera preview</string>
    <string name="co_format_label">Oriented photo</string>
    <string name="co_camera_label">Camera:</string>
    <string name="co_orientation_label">Orientation</string>
    <string name="co_orientation_direction_label">clockwise</string>
    <string name="co_instruction_heading_label">Instruction:</string>
    <string name="co_instruction_text_photo_label">Take a photo</string>
    <string name="co_instruction_text_passfail_label">Choose \"Pass\" if the left view is oriented the same as the right view. Otherwise, choose \"Fail\".</string>
    <string name="co_instruction_text_extra_label">(mirrored horizontally prior to rotation, since camera is front-facing)</string>
    <string name="co_photo_button_caption">Take Photo</string>

    <!-- Strings for Camera Intents -->
    <string name="camera_intents">Camera Intents</string>
    <string name="ci_info">
    This test verifies that the default camera app is firing intents
    after pictures/videos are taken. It also verifies that when the
    default camera app is invoked via intents, the launch intents work,
    ,broadcast intents are received when appropriate per the SDK
    documentation and also, that the intent results do not have location
    information in them. Before starting with the tests, please go to the
    Settings app and deny location permissions to the CtsVerifier app, and
    after finishing with the camera intent tests, please go to the Settings app and
    restore location permissions, otherwise, other tests may fail.\n\n
    - Read the message above the \"Start Test\" button for
    step-by-step instructions.
    </string>
    <string name="ci_preview_label">Camera preview</string>
    <string name="ci_format_label">Oriented photo</string>
    <string name="ci_camera_label">Camera:</string>
    <string name="ci_intents_label">Intents Test</string>
    <string name="ci_intents_direction_label">clockwise</string>
    <string name="ci_instruction_heading_label">Instructions:</string>
    <string name="ci_location_permissions_error">Please give CTS Verifier location permissions before clicking on the pass / fail button</string>
    <string name="ci_location_permissions_fail_error">Please give CTS Verifier location permissions if the fail button needs to be clicked</string>
    <string name="ci_directory_creation_error">CTS Verifier debug directory could not be created, please try again</string>
    <string name="ci_instruction_text_photo_label">READ BEFORE STARTING TEST</string>
    <string name="ci_instruction_text_passfail_label">Choose \"Pass\" if the right intent is fired after taking a photo from the camera app. Otherwise, choose \"Fail\".</string>
    <string name="ci_instruction_text_app_picture_label">\n

    1. Click Open Settings and deny location permissions to CTS Verifier and return. \n
    2. Click Start Test. \n
    3. Go to home screen (HOME key). \n
    4. Launch Camera application. \n
    5. Capture photo within 1 minute. \n
    6. Return to CTS verifier app. \n
    7. Pass button will light up if intent and URI triggers were fired.\n
    8. Click "Pass" if possible, otherwise open settings app, allow location again and click "Fail".
    </string>
    <string name="ci_instruction_text_app_video_label">\n
    1. Click Start Test. \n
    2. Go to home screen (HOME key). \n
    3. Launch Camera application. \n
    4. Capture video within 1 minute. \n
    5. Return to CTS verifier app. \n
    6. Pass button will light up if intent and URI triggers were fired.\n
    7. Click "Pass" if possible, otherwise open settings app, allow location again and click "Fail".
    </string>
    <string name="ci_instruction_text_intent_picture_label">\n
    1. Click Start Test.\n
    2. Camera app will launch, prompting to take photo.\n
    3. Capture/confirm photo using camera app controls within 1 minute.\n
    4. Pass button will light up if intent and URI trigger were NOT received.\n
    5. Click "Pass" if possible, otherwise open settings app, allow location again and click "Fail".
    </string>
    <string name="ci_instruction_text_intent_picture_secure_label">\n
    1. Click Start Test.\n
    2. Camera app will launch, prompting to take photo.\n
    3. Capture/confirm photo using camera app controls within 1 minute.\n
    4. Pass button will light up if intent and URI trigger were NOT received.\n
    5. Click "Pass" if possible, otherwise open settings app, allow location again and click "Fail".
    </string>
    <string name="ci_instruction_text_intent_video_label">\n
    1. Click Start Test.\n
    2. Camera app will launch, prompting to take video.\n
    3. Capture/confirm video using camera app controls within 1 minute.\n
    4. Return to the CTS Verifier app. Click Open Settings and give back CTS Verifier location permissions \n
    (Note this must be done before clicking on Pass / Fail).\n
    5. Click "Pass" if possible.
    </string>
    <string name="ci_start_test_button_caption">Start Test</string>
    <string name="ci_settings_button_caption">Open Settings</string>

    <!-- Strings for Camera Formats -->
    <string name="camera_format">Camera Formats</string>
    <string name="cf_info">This test checks that all the supported
    output formats for camera preview callbacks work correctly, and
    that the mandatory formats are available. \n - The left view shows
    a standard preview window. \n - The right view shows the output
    processed from camera preview callbacks. \n - For each camera,
    resolution, and format combination in the dropdowns, the right
    view should look the same as the left, and neither should have
    streaks, lines, or other artifacts. \n - For front-facing cameras,
    the right view must be horizontally mirrored relative to the left
    view.\n - Note that the frame rate of the right view may be much
    lower than on the left; this is not an indication of a failed
    test.\n - The next button triggers the next resolution and format
    combination of the current camera to show; this is optional.
    </string>
    <string name="cf_preview_label">Normal preview</string>
    <string name="cf_format_label">Processed callback data</string>

    <!-- Strings for Camera Video -->
    <string name="record_button_text">Test</string>
    <string name="camera_video">Camera Video</string>
    <string name="video_info"> This test checks video capture
    at different resolutions. \n - The left view window shows the preview.
    \n - Pressing the test button will trigger three
    seconds of video recording. Playback will show up in the right view
    window after recording is complete. \n - Use the spinners to choose
    camera and resolution combinations. The playback should be similar
    to what you saw in preview. \n - The next button triggers test for the next
    untested resolution of the currently selected camera. - After all possible
    combinations are tested, the pass button will be enabled. You may press the
    pass button to indicate a pass. \n - You may press fail button any time
    during the test to indicate failure. \n
    </string>
    <string name="video_capture_label">Video capture</string>
    <string name="video_playback_label">Video playback</string>
    <string name="dialog_fail_test">Test failed</string>
    <string name="fail_quit">Fail and quit</string>
    <string name="cancel">Cancel</string>
    <string name="status_ready">Ready</string>
    <string name="status_recording">Recording</string>
    <string name="status_playback">Playing back</string>

    <!-- Strings for USB accessory test activity -->
    <string name="usb_accessory_test">USB Accessory Test</string>
    <string name="usb_accessory_test_info">
        1. Install the Cts Verifier USB Companion app on a separate helper device.
        \n\n2. Start the accessory test companion in the Cts Verifier USB Companion.
        \n\n3. Connect the two devices. If using a OTG adapter make sure the adapter is directly connected to the helper device. If using an Type-C cable make sure that the helper device is set as "supply power to the attached device".
        \n\n4. Confirm access to the USB device on the helper device.
        \n\n5. Confirm access to the USB accessory on this device
        \n\n6. Confirm access to the USB device on the helper again.
        \n\n7. Test will run and complete automatically in less than 30 seconds.
        \n\n8. Cancel all further dialogs on this device
    </string>
    <string name="usb_accessory_test_step1">
        In this specific order:
        \n1. Install the Cts Verifier USB Companion app on a separate helper device.
        \n2. Start the accessory test companion in the Cts Verifier USB Companion.
        \n3. Connect the two devices. If using a OTG adapter make sure the adapter is directly connected to the helper device. If using an Type-C cable make sure that the helper device is set as "supply power to the attached device".
        \n4. Confirm access to the USB device on the helper device. Only confirm once.
        \n5. Confirm access to the USB accessory on this device.
        \n6. Confirm access to the USB device on the helper device again.
        \n\nResult: A progress indicator should appear or test will finish.
    </string>
    <string name="usb_accessory_test_step2">
        Test is running and will complete automatically in less than 30 seconds.
    </string>

    <!-- String for the USB device test activity -->
    <string name="usb_device_test">USB Device Test</string>
    <string name="usb_device_test_info">
        1. Install the Cts Verifier USB Companion app on a separate helper device.
        \n\n2. Start the device test companion in the Cts Verifier USB Companion.
        \n\n3. Connect the two devices. If using a OTG adapter make sure the adapter is directly connected to this device. If using an Type-C cable make sure that this device is set as "supply power to the attached device".
        \n\n4. Confirm access to the USB device on this device. Do <u>not</u> make this app the default app for the device.
        \n\n5. Confirm access to the USB accessory on the helper device.
        \n\n6. Confirm access to the USB device on this device again. Do <u>not</u> make this app the default app for the device.
        \n\n7. Test will run and complete automatically in less than 30 seconds.
        \n\n8. Cancel all further dialogs on the helper device.
    </string>
    <string name="usb_device_test_step1">
        In this specific order:
        \n1. Install the Cts Verifier USB Companion app on a separate helper device.
        \n2. Start the device test companion in the Cts Verifier USB Companion.
        \n3. Connect the two devices. If using a OTG adapter make sure the adapter is directly connected to this device. If using an Type-C cable make sure that this device is set as "supply power to the attached device".
        \n\nResult: A dialog should show up on this device asking for access to a USB device.
    </string>
    <string name="usb_device_test_step2">
        Confirm access to the USB device on this device. Do <u>not</u> make this app the default app for the device.
        \n\nResult: Dialogs should show up on this device and on the helper device asking for access to a USB device/accessory.
    </string>
    <string name="usb_device_test_step3">
        1. Confirm access to the USB accessory on the helper device.
        \n2. Confirm access to the USB device on this device again. Do <u>not</u> make this app the default app for the device.
        \n\nResult: A progress indicator should appear or test will finish.
    </string>
    <string name="usb_device_test_step4">
        Test is running and will complete automatically in a less than 30 seconds.
    </string>
    <string name="usb_device_unexpected">Usb companion device is not as expected %1$s. Please retry test.</string>

    <!-- Strings for MTP host test activity -->
    <string name="mtp_host_test">MTP Host Test</string>
    <string name="mtp_host_test_info">The CTS-verifier tests the MTP host feature with another Android device. Please connect another Android device to this Android device by using OTG cable or USB type C cable, then follow the instructions on this screen. Note the test creates/deletes files in the connected Android device.</string>
    <string name="mtp_host_device_lookup_message">Connect MTP device.\nPlease connect another Android device to this device by using USB OTG cable or USB type C cable.\nOpen \"Use USB for\" dialog from the notification in the other Android device and choose \"File Transfer\" option.\nThen press the next button.</string>
    <string name="mtp_host_grant_permission_message">Grant permission.\nReply a dialog asking device permission.</string>
    <string name="mtp_host_test_read_event_message">Test MtpDevice#readEvent.\nTake a picture at the connected device.</string>
    <string name="mtp_host_test_send_object_message">Test MtpDevice#sendObject.</string>
    <string name="mtp_host_test_file_browse_message">Test MTP file browsing.\nCheck if the UI to browse files in the connected devices was shown automatically. If not, tap a notification on this device saying the other MTP device is connected. If different application launched, go to the applicaiton settings by clicking the App Settings button, open the detailes settings page of the app, clear the default action settings, and retry. </string>
    <string name="mtp_app_settings">App Settings</string>

    <!-- Strings for the Camera ITS test activity -->
    <string name="camera_its_test">Camera ITS Test</string>
    <string name="camera_its_test_info">
        1. Connect your Android device to a computer with adb installed via a USB cable.
        \n\n2. Setup the CameraITS test environment by following the setup instructions in the
        README file found in the CameraITS directory included in the CTS Verifier bundle
        (cd CameraITS; source build/envsetup.sh;).
        \n\n3. Setup the test scene described in the CameraITS README file, and aim the camera
        at it.
        \n\n4. Run the full ITS test suite on all possible camera Ids.
        (cd CameraITS; python tools/run_all_tests.py).  Once all
        of the tests have been run, the \'PASS\' button will be enabled if all of the tests have
        succeeded. Please note that these tests can take more than 2 hours to run on some devices.
    </string>
    <string name="no_camera_manager">
        No camera manager exists!  This test device is in a bad state.
    </string>
    <string name="all_exempted_devices">
        All cameras on this device are exempted from ITS - Pass.
    </string>
    <string name="its_test_passed">All Camera ITS tests passed.  Pass button enabled!</string>
    <string name="its_test_failed">Some Camera ITS tests failed.</string>
    <string name="its_version_mismatch">
        CtsVerifier and ITS script version mismatch. Please update CtsVerifier and ITS script.
    </string>
    <string name="its_test_progress">ITS test progress will be shown here.</string>

    <!-- Strings for the Camera Flashlight test activity -->
    <string name="camera_flashlight_test">Camera Flashlight</string>
    <string name="camera_flashlight_info">
        This test checks the flashlight functionality. It will turn on and off the flashlight of
        each camera device that has a flash unit. Follow the instructions on screen and observe the
        flashlight status changing.
    </string>
    <string name="camera_flashlight_start_button">Start</string>
    <string name="camera_flashlight_next_button">Next</string>
    <string name="camera_flashlight_done_button">Done</string>
    <string name="camera_flashlight_on_button">On</string>
    <string name="camera_flashlight_off_button">Off</string>
    <string name="camera_flashlight_start_text">Press Start to start flashlight test.</string>
    <string name="camera_flashlight_question_text">Is Camera %1$s flashlight on or off?</string>
    <string name="camera_flashlight_next_text">Ok. Press next.</string>
    <string name="camera_flashlight_failed_text">Test failed. Press Done or Fail button.</string>
    <string name="camera_flashlight_passed_text">All tests passed. Press Done or Pass button.
    </string>

    <!-- Strings for the Camera Performance test activity -->
    <string name="camera_performance_test">Camera Performance</string>
    <string name="camera_performance_test_info">
        This activity will run performance test cases. For optimal and consistent results please
        make sure that all camera sensors are pointing in a direction with sufficiently bright
        light source.
    </string>
    <string name="camera_performance_spinner_text">Running CTS performance test case...</string>
    <string name="camera_performance_result_title">Test Result</string>

    <!-- Strings for StreamingVideoActivity -->
    <string name="streaming_video">Streaming Video Quality Verifier</string>
    <string name="streaming_video_info">This is a test for assessing the quality of streaming videos.  Play each stream and verify that the video is smooth and in sync with the audio, and that there are no quality problems.</string>
    <string name="sv_no_data">No videos.</string>
    <string name="sv_failed_title">Test Failed</string>
    <string name="sv_failed_message">Unable to play stream.  See log for details.</string>

    <!-- Strings for MediaCodecFlushActivity -->
    <string name="media_codec_flush">Video codec flushing in Tunnel Mode</string>

    <!-- Strings for VolumeLevelChangesActivity -->
    <string name="volume_level_changes">Volume level changes</string>
    <string name="volume_level_changes_title">This test is for verifying that the Volume level
        changes are reflected when playback occurs with and without tunnel mode playback for
        PCM audio.</string>
    <string name="increase_volume_level"> Increase the volume until you can clearly recognize the
        audio, and then press OK button.</string>
    <string name="ok_button_volume_level">OK</string>
    <string name="decrease_volume_level"> Decrease the volume until you can no longer recognize the
        audio, and then press OK button.</string>
    <string name="yes_button_volume_level">Yes</string>
    <string name="no_button_volume_level">No</string>
    <string name="is_same_volume"> "Is the volume still the same as what you had set?"</string>
    <string name="volume_level_changes_failure_tunnel_to_non_tunnel">
        "The volume change was not maintained when switching from tunnel mode to non-tunnel mode."
    </string>
    <string name="volume_level_changes_failure_non_tunnel_to_tunnel">
        "The volume change was not maintained when switching from non-tunnel mode to tunnel mode."
    </string>

    <!-- Strings for the Camera Bokeh mode test activity -->
    <string name="camera_bokeh_test">Camera Bokeh</string>
    <string name="camera_bokeh_test_info">
        This test checks camera bokeh mode functionality. It enumerates supported bokeh modes, and
        makes sure each non-OFF bokeh mode works correctly. For optimal and consistent results,
        please make sure the camera device is pointing to a well-lit scene with a human face in
        the center at least 1 meter away, and the rest of the scene is further away in the
        background.
    </string>
    <string name="camera_bokeh_no_support">
        None of the camera devices support bokeh modes. Please click the Test Passed button.
    </string>

    <!-- Strings for TestListActivity -->
    <string name="wifi_test">Wi-Fi Test</string>
    <string name="wifi_test_info">
        The Wi-Fi tests requires an open or PSK access point in the environment along with the DUT.
        \nPlease perform a network settings reset between each test to reset platform\'s internal state which
        might interfere with the test flow.\nNavigate to \"Settings -> System -> Reset Options -> Reset Wi-Fi,
        mobile &amp; Bluetooth\" to perform a network settings reset.
    </string>
    <string name="wifi_location_not_enabled">Wi-Fi / Location Mode is not enabled</string>
    <string name="wifi_location_not_enabled_message">These tests require Wi-Fi and Location Mode to be enabled.
        Click the button below to go to system settings and enable Wi-Fi and Location Mode.</string>
    <string name="wifi_settings">Wi-Fi Settings</string>
    <string name="location_settings">Location Settings</string>
    <string name="wifi_setup_error">Test failed with set up error.</string>
    <string name="wifi_unexpected_error">Test failed with unexpected error. Check logcat.</string>

    <string name="wifi_ssid_label">SSID for network</string>
    <string name="wifi_psk_label">Passphrase for network (leave empty for open network)</string>
    <string name="wifi_start_test_label">Start test</string>

    <string name="wifi_status_need_psk">Need a psk network for this test.</string>
    <string name="wifi_status_initiating_scan">Initiating scan.</string>
    <string name="wifi_status_scan_failure">Unable to initiate scan or find matching network in scan results.</string>
    <string name="wifi_status_connected_to_other_network">Connected to some other network on the device. Please ensure that there is no saved networks on the device.</string>
    <string name="wifi_status_initiating_network_request">Initiating network request.</string>
    <string name="wifi_status_network_wait_for_available">Waiting for network connection. Please click the network in the dialog that pops up for approving the request.</string>
    <string name="wifi_status_network_available">"Connected to network."</string>
    <string name="wifi_status_network_available_error">Connected to network unexpectedly.</string>
    <string name="wifi_status_network_wait_for_unavailable">"Ensuring device does not connect to any network. You should see an empty dialog that pops up for approving the request."</string>
    <string name="wifi_status_network_wait_for_unavailable_invalid_credential">"Ensuring device does not connect to the network. Please click the network in the dialog that pops up for approving the request."</string>
    <string name="wifi_status_network_unavailable">"Did not connect to any network."</string>
    <string name="wifi_status_network_wait_for_lost">Ensuring device does not disconnect from the network until the request is released.</string>
    <string name="wifi_status_network_lost">Disconnected from the network.</string>
    <string name="wifi_status_network_cb_timeout">Network callback timed out.</string>

    <string name="wifi_status_suggestion_add">Adding suggestions to the device.</string>
    <string name="wifi_status_suggestion_add_failure">Failed to add suggestions.</string>
    <string name="wifi_status_suggestion_get_failure">Failed to get suggestions.</string>
    <string name="wifi_status_suggestion_remove">Removing suggestions from the device.</string>
    <string name="wifi_status_suggestion_remove_failure">Failed to remove suggestions.</string>
    <string name="wifi_status_suggestion_wait_for_connect">Waiting for network connection.</string>
    <string name="wifi_status_suggestion_ensure_no_connect">Ensuring no network connection.</string>
    <string name="wifi_status_suggestion_connect">Connected to the network.</string>
    <string name="wifi_status_suggestion_not_connected">Did not connect to the network.</string>
    <string name="wifi_status_suggestion_wait_for_post_connect_bcast">Waiting for post connection broadcast.</string>
    <string name="wifi_status_suggestion_post_connect_bcast">Received post connection broadcast.</string>
    <string name="wifi_status_suggestion_post_connect_bcast_failure">Failed to receive post connection broadcast.</string>
    <string name="wifi_status_suggestion_wait_for_connection_status">Waiting for connection status.</string>
    <string name="wifi_status_suggestion_connection_status">Received connection status.</string>
    <string name="wifi_status_suggestion_connection_status_failure">Failed to receive connection status.</string>
    <string name="wifi_status_suggestion_wait_for_disconnect">Ensuring device does disconnect from the network after removing suggestions.</string>
    <string name="wifi_status_suggestion_metered_change">Marking the network metered.</string>
    <string name="wifi_status_suggestion_metered_check_failed">Network meteredness check failed.</string>
    <string name="wifi_status_suggestion_metered_changed">Network marked metered successfully.</string>
    <string name="wifi_status_suggestion_capabilities_not_changed">Network capabilities did not change.</string>
    <string name="wifi_status_suggestion_not_disconnected">Did not disconnect from the network.</string>
    <string name="wifi_status_suggestion_disconnected">Disconnected from the network.</string>
    <string name="wifi_status_suggestion_add_user_approval_status_listener_failure">Failed to add user approval status listener</string>
    <string name="wifi_status_suggestion_wait_for_user_approval">Waiting for user approval. Please click \"Allow\" in the dialog that pops up for approving the app</string>
    <string name="wifi_status_suggestion_user_approval_status_failure">Failed to receive user approval status change</string>
    <string name="wifi_status_suggestion_user_approve_failure">Failed to get user approval</string>

    <string name="wifi_status_test_success">Test completed successfully!</string>
    <string name="wifi_status_test_failed">Test failed!</string>

    <string name="wifi_test_network_request">Network Request tests</string>
    <string name="wifi_test_network_request_specific">Network Request with a specific SSID and BSSID.</string>
    <string name="wifi_test_network_request_specific_info">Tests whether the API can be used to a connect to network with a specific SSID and BSSID specified in the request.</string>
    <string name="wifi_test_network_request_pattern">Network Request with a SSID and BSSID pattern.</string>
    <string name="wifi_test_network_request_pattern_info">Tests whether the API can be used to a connect to network with a SSID and BSSID pattern specified in the request.</string>
    <string name="wifi_test_network_request_unavailable">Network Request with a specific network that is unavailable.</string>
    <string name="wifi_test_network_request_unavailable_info">Tests that the API fails to connect when an unavailable network is specified in the request.</string>
    <string name="wifi_test_network_request_invalid_credential">Network Request with a specific network with wrong credential.</string>
    <string name="wifi_test_network_request_invalid_credential_info">Tests that the API fails to connect when a network with wrong credential is specified in the request.</string>

    <string name="wifi_test_network_suggestion">Network Suggestion tests</string>
    <string name="wifi_test_network_suggestion_ssid">Network suggestion with SSID.</string>
    <string name="wifi_test_network_suggestion_ssid_info">Tests whether the API can be used to suggest a network with SSID to the device and the device connects to it.</string>
    <string name="wifi_test_network_suggestion_ssid_bssid">Network suggestion with SSID and BSSID.</string>
    <string name="wifi_test_network_suggestion_ssid_bssid_info">Tests whether the API can be used to suggest a network with SSID and specific BSSID to the device and the device connects to it.</string>
    <string name="wifi_test_network_suggestion_ssid_post_connect">Network suggestion with SSID and post connection broadcast.</string>
    <string name="wifi_test_network_suggestion_ssid_post_connect_info">Tests whether the API can be used to suggest a network with SSID to the device and the device connects to it and sends the post connect broadcast back to the app.</string>
    <string name="wifi_test_network_suggestion_connection_failure">Network suggestion connection failure.</string>
    <string name="wifi_test_network_suggestion_connection_failure_info">Tests whether the SuggestionConnectionStatusListener API can be used to listen to connection failures for suggested networks.</string>
    <string name="wifi_test_network_suggestion_modification_in_place">Network suggestion modification in place.</string>
    <string name="wifi_test_network_suggestion_modification_in_place_info">Tests whether the suggested network params can be modified in place when connected to it.</string>

    <!-- Strings for P2pTestActivity -->
    <string name="p2p_test">Wi-Fi Direct Test</string>
    <string name="p2p_test_info">
        The Wi-Fi Direct tests require two devices with Wi-Fi Direct enabled to exchange
        messages. One device must be the candidate device running the software build to
        be tested, while the other device must be an implementation already known to be
        compatible.\n\nOne device should start the requester test, and the other should
        start the responder test. Your device must pass both requester and responder
        tests.
        </string>
    <string name="p2p_group_formation">Group Formation</string>
    <string name="p2p_join">Group Join</string>
    <string name="p2p_service_discovery">Service Discovery</string>

    <string name="p2p_go_neg_responder_test">GO Negotiation Responder Test</string>
    <string name="p2p_go_neg_requester_test">GO Negotiation Requester Test</string>
    <string name="p2p_group_owner_test">Group Owner Test</string>
    <string name="p2p_join_with_config">Group Join with Config</string>
    <string name="p2p_join_with_config_2g_band">Group Join with Config 2G Band</string>
    <string name="p2p_join_with_config_fixed_frequency">
        Group Join with Config Fixed Frequency</string>
    <string name="p2p_group_owner_with_config_test">Group Owner With Config Test</string>
    <string name="p2p_group_owner_with_config_2g_band_test">
        Group Owner With Config 2G Band Test</string>
    <string name="p2p_group_owner_with_config_fixed_frequency_test">
        Group Owner With Config Fixed Frequency Test</string>
    <string name="p2p_group_client_test">Group Client Test</string>
    <string name="p2p_group_client_with_config_test">Group Client With Config Test</string>
    <string name="p2p_group_client_with_config_2g_band_test">
        Group Client With Config 2G Band Test</string>
    <string name="p2p_group_client_with_config_fixed_frequency_test">
        Group Client With Config Fixed Frequency Test</string>
    <string name="p2p_service_discovery_responder_test">
        Service Discovery Responder Test</string>
    <string name="p2p_service_discovery_requester_test">
        Service Discovery Requester Test</string>

    <string name="p2p_go_neg_responder">GO Negotiation Responder</string>
    <string name="p2p_go_neg_requester">GO Negotiation Requester</string>
    <string name="p2p_accept_client">Group Owner</string>
    <string name="p2p_join_go">Group Client</string>
    <string name="p2p_service_discovery_responder">Service Discovery Responder</string>
    <string name="p2p_service_discovery_requester">Service Discovery Requester</string>

    <string name="p2p_go_neg_responder_info">
        Go to the Security and Location settings and ensure that Location is enabled. Then go to the
        Wi-Fi settings and forget all remembered networks.  Then start the \"GO Negotiation
        Requester Test\" on the other device and follow
        the instructions.</string>
    <string name="p2p_accept_client_info">
        Go to the Security and Location settings and ensure that Location is enabled. Then go to the
        Wi-Fi settings and forget all remembered networks.  Then start the \"Group Client Test\" on
        the other device and follow
        the instructions.</string>
    <string name="p2p_service_discovery_responder_info">
        Start the \"Service Discovery Requester Test\" on the other device and follow
        the instructions.</string>

    <string name="p2p_go_neg_requester_info">
        Go to the Security and Location settings and ensure that Location is enabled. Then go to the
        Wi-Fi settings and forget all remembered networks.  Then start the \"GO Negotiation
        Responder Test\" on the other device.
        Then run each test individually by clicking on its name.</string>
    <string name="p2p_join_go_info">
        Go to the Security and Location settings and ensure that Location is enabled. Then go to the
        Wi-Fi settings and forget all remembered networks.  Then start the \"Group Owner Test\" on
        the other device.
        Then run each test individually by clicking on its name.</string>
    <string name="p2p_service_discovery_requester_info">
        Go to the Security and Location settings and ensure that Location is enabled. Then go to the
        Wi-Fi settings and forget all remembered networks.  Then start the \"Service Discovery
        Responder Test\" on the other device.
        Then run each test individually by clicking on its name.</string>

    <string name="p2p_not_enabled">Wi-Fi is not enabled</string>
    <string name="p2p_not_enabled_message">These tests require Wi-Fi to be enabled.
        Click the button below to go to system settings and enable Wi-Fi.</string>
    <string name="p2p_settings">Wi-Fi Direct Settings</string>

    <string name="p2p_result_success">Test passed successfully.</string>

    <string name="p2p_go_neg_responder_ready">
        The go negotiation responder is now ready to start.
        Go to the Security and Location settings and ensure that Location is enabled. Then go to the
        Wi-Fi settings and forget all remembered networks.  Then start the \"GO Negotiation
        Requester Test\" on the other device.
        Keep the screen here until all tests on the other device are
        finished.</string>
    <string name="p2p_go_ready">
        The group owner is now ready to start.
        Go to the Security and Location settings and ensure that Location is enabled. Then go to the
        Wi-Fi settings and forget all remembered networks.  Then start the \"Join Group Test\" on
        the other device.
        Keep the screen here until all tests on the other device are
        finished.</string>
    <string name="p2p_service_responder_ready">
        The service responder is now ready to start.
        Go to the Security and Location settings and ensure that Location is enabled. Then go to the
        Wi-Fi settings and forget all remembered networks.  Then start the \"Service Discovery
        Requester Test\" on the other device.
        Keep the screen here until all tests on the other device are
        finished.</string>

    <string name="p2p_setup_error">
        Test failed.\n\nSet up error. Check whether Wi-Fi can be enabled.</string>
    <string name="p2p_unexpected_error">
        Test failed.\n\nUnexpected error. Check logcat.</string>
    <string name="p2p_add_local_service_error">
        Test failed.\n\nFailed to add local service.</string>
    <string name="p2p_add_service_request_error">
        Test failed.\n\nFailed to add service request.</string>
    <string name="p2p_remove_service_request_error">
        Test failed.\n\nFailed to remove service request.</string>
    <string name="p2p_clear_service_requests_error">
        Test failed.\n\nFailed to clear service requests.</string>
    <string name="p2p_connect_error">
        Test failed.\n\nFailed to start a p2p connection to the target device.</string>
    <string name="p2p_remove_group_error">
        Test failed.\n\nFailed to remove a p2p group.</string>
    <string name="p2p_discover_peers_error">
        Test failed.\n\nFailed to discover peers.</string>
    <string name="p2p_discover_services_error">
        Test failed.\n\nFailed to discover services.</string>
    <string name="p2p_ceate_group_error">
        Test failed.\n\nFailed to start up group owner.</string>
    <string name="p2p_no_service_requests_error">
        Test failed.\n\n\"NO_SERVICE_REQUESTS\" error did not occur.</string>
    <string name="p2p_receive_invalid_response_error">
        Test failed.\n\nReceived an invalid message or could not receive
         the expected message.\n\n</string>
    <string name="p2p_target_not_found_error">Test failed.\n\n
        The target responder device was NOT found. Start up the responder
        test on the other device, then run the test again.</string>
    <string name="p2p_target_invalid_role_error">Test failed.\n\n
        The target responder must be p2p device. However, the target responder
        device was group owner. Check the test case on the other device.</string>
    <string name="p2p_target_invalid_role_error2">Test failed.\n\n
        The target responder must be group owner. However, the target responder
        device was p2p device. Check the test case on the other device.</string>
    <string name="p2p_connection_error">
        Test failed.\n\nFailed to establish a p2p connection.</string>
    <string name="p2p_connection_latency_error">
        Test failed. \n\nConnection was expected to be established within %1$dms. But took=%2$dms.
        \n\nPlease ensure that the Group Owner is ready on the other device before running
        this test</string>
    <string name="p2p_detect_disconnection_error">
        Test failed.\n\nFailed to detect client disconnection.</string>
    <string name="p2p_disconnect_error">
        Test failed.\n\nFailed to disconnect a p2p connection.</string>

    <string name="p2p_search_target">Search Target</string>
    <string name="p2p_searching_target">Searching for target device ...</string>
    <string name="p2p_checking_serv_capab">Checking the service discovery
        capability ...</string>
    <string name="p2p_connecting_with_pbc">Trying to connect the target device ...\n\n
        Click the \"OK\" button on the other device to accept the connection
        request from this device.</string>
    <string name="p2p_connecting_with_pin">Trying to connect the target device ...\n\n
        Enter the pin number on the other device.</string>
    <string name="p2p_waiting_for_peer_to_connect">Waiting for peer to
        connect ...</string>
    <string name="p2p_waiting_for_peer_to_disconnect">Waiting for peer
        to disconnect ...</string>

    <!-- Strings for TestListActivity -->
    <string name="aware_test">Wi-Fi Aware Test</string>
    <string name="aware_test_info">
        The Wi-Fi Aware tests require two devices with Wi-Fi enabled. One device must
        be the candidate device running the software build to be tested, while the other
        device must be an implementation already known to be compatible.\n\nThere are
        tests for Publisher and Subscriber, Responder and Initiator. One device should
        start in a role, and the other should start in the complementary
        role. Your device must pass the tests in all roles.
    </string>
    <string name="aware_not_enabled">Wi-Fi / Location Mode is not enabled</string>
    <string name="aware_not_enabled_message">These tests require Wi-Fi and Location Mode to be enabled.
        Click the button below to go to system settings and enable Wi-Fi and Location Mode.</string>
    <string name="aware_settings">Wi-Fi Settings</string>
    <string name="aware_setup_error">
        Test failed.\n\nSet up error. Check whether Wi-Fi is enabled.</string>
    <string name="aware_unexpected_error">
        Test failed.\n\nUnexpected error. Check logcat.</string>

    <string name="aware_dp_ib_open_unsolicited">Data Path: Open: Unsolicited/Passive</string>
    <string name="aware_dp_ib_passphrase_unsolicited">Data Path: Passphrase: Unsolicited/Passive</string>
    <string name="aware_dp_ib_pmk_unsolicited">Data Path: PMK: Unsolicited/Passive</string>
    <string name="aware_dp_ib_open_solicited">Data Path: Open: Solicited/Active</string>
    <string name="aware_dp_ib_passphrase_solicited">Data Path: Passphrase: Solicited/Active</string>
    <string name="aware_dp_ib_pmk_solicited">Data Path: PMK: Solicited/Active</string>
    <string name="aware_dp_ib_open_unsolicited_accept_any">Data Path: Open: Unsolicited/Passive: accept any peer</string>
    <string name="aware_dp_ib_passphrase_unsolicited_accept_any">Data Path: Passphrase: Unsolicited/Passive: accept any peer</string>
    <string name="aware_dp_ib_pmk_unsolicited_accept_any">Data Path: PMK: Unsolicited/Passive: accept any peer</string>
    <string name="aware_dp_ib_open_solicited_accept_any">Data Path: Open: Solicited/Active: accept any peer</string>
    <string name="aware_dp_ib_passphrase_solicited_accept_any">Data Path: Passphrase: Solicited/Active: accept any peer</string>
    <string name="aware_dp_ib_pmk_solicited_accept_any">Data Path: PMK: Solicited/Active: accept any peer</string>
    <string name="aware_dp_ib_force_channel_setup">Data Path: force channel setup</string>
    <string name="aware_discovery_ranging">Discovery with Ranging</string>
    <string name="aware_publish">Publish</string>
    <string name="aware_subscribe">Subscribe</string>

    <string name="aware_dp_oob_open">Data Path (OOB): Open</string>
    <string name="aware_dp_oob_passphrase">Data Path (OOB): Passphrase</string>
    <string name="aware_responder">Responder</string>
    <string name="aware_initiator">Initiator</string>

    <string name="aware_status_attached">Attached ...</string>
    <string name="aware_status_attach_fail">Attach failure!</string>
    <string name="aware_status_attach_timeout">Attach failure - timed out!</string>
    <string name="aware_status_identity">Discovery (Identity) MAC address: %1$s ...</string>
    <string name="aware_status_identity_fail">Identity listener failure - timed out!</string>
    <string name="aware_status_subscribe_started">Subscribe discovery session started ...</string>
    <string name="aware_status_subscribe_failed">Subscribe failure!</string>
    <string name="aware_status_subscribe_timeout">Subscribe failure - timed out!</string>
    <string name="aware_status_subscribe_null_session">Subscribe failure - null session!</string>
    <string name="aware_status_publish_started">Publish discovery session started ...</string>
    <string name="aware_status_publish_failed">Publish failure!</string>
    <string name="aware_status_publish_timeout">Publish failure - timed out!</string>
    <string name="aware_status_publish_null_session">Publish failure - null session!</string>
    <string name="aware_status_discovery">Service discovered ...</string>
    <string name="aware_status_discovery_with_info">Service discovered ... peer MAC : %1$s</string>
    <string name="aware_status_discovery_timeout">Service discovery failure - timed out!</string>
    <string name="aware_status_discovery_fail">Service discovery failure - parameter mismatch!</string>
    <string name="aware_status_send_success">Sent message successfully ...</string>
    <string name="aware_status_send_failed">Send message failure!</string>
    <string name="aware_status_send_timeout">Send message failure - timed out!</string>
    <string name="aware_status_send_fail_parameter">Send message failure - mismatched ids!</string>
    <string name="aware_status_received">Received message ...</string>
    <string name="aware_status_starting_rtt">Starting RTT operations ...</string>
    <string name="aware_status_waiting_for_peer_rtt">Pausing to let other device perform RTT ...</string>
    <string name="aware_status_received_peer_rtt_done">Other device done with RTT ...</string>
    <string name="aware_status_received_mac">Received peer MAC address: %1$s ...</string>
    <string name="aware_status_receive_timeout">Receive message failure - timed out!</string>
    <string name="aware_status_receive_failure">Receive message failure - didn\'t receive expected message!</string>
    <string name="aware_status_network_requested">Network requested ...</string>
    <string name="aware_status_network_success">Network formed ...</string>
    <string name="aware_status_network_failed">Network request failure - timed out!</string>
    <string name="aware_status_network_failed_leak">Failure: Network request success - but leaked information!</string>
    <string name="aware_status_sleeping_wait_for_responder">Pausing to let Responder time to set up ...</string>
    <string name="aware_status_ranging_peer_failure">Ranging to PeerHandle failure: %1$d failures of %2$d attempts!</string>
    <string name="aware_status_ranging_mac_failure">Ranging to MAC address failure: %1$d failures of %2$d attempts!</string>
    <string name="aware_status_ranging_peer_success">Ranging to PeerHandle success: %1$d successes of %2$d attempts!</string>
    <string name="aware_status_ranging_mac_success">Ranging to MAC address success: %1$d successes of %2$d attempts!</string>
    <string name="aware_status_lifecycle_failed">Discovery lifecycle FAILURE!</string>
    <string name="aware_status_lifecycle_ok">Discovery lifecycle validated!</string>

    <string name="aware_status_socket_failure">Failure on socket connection setup!</string>
    <string name="aware_status_socket_server_socket_started">ServerSocket started on port %1$d!</string>
    <string name="aware_status_socket_server_info_rx">Peer server info: IPv6=%1$s @ port=%2$d!</string>
    <string name="aware_status_socket_server_message_from_peer">Message from peer: \'%1$s\'</string>

    <string name="aware_data_path_open_unsolicited_publish">Data Path: Open: Unsolicited Publish</string>
    <string name="aware_data_path_open_unsolicited_publish_info">The publisher is now ready.\n\nOn the other device: start the \'Data Path: Open: Unsolicited/Passive\' / \'Subscribe\' test.</string>
    <string name="aware_data_path_open_passive_subscribe">Data Path: Open: Passive Subscribe</string>

    <string name="aware_data_path_passphrase_unsolicited_publish">Data Path: Passphrase: Unsolicited Publish</string>
    <string name="aware_data_path_passphrase_unsolicited_publish_info">The publisher is now ready.\n\nOn the other device: start the \'Data Path: Passphrase: Unsolicited/Passive\' / \'Subscribe\' test.</string>
    <string name="aware_data_path_passphrase_passive_subscribe">Data Path: Passphrase: Passive Subscribe</string>

    <string name="aware_data_path_pmk_unsolicited_publish">Data Path: PMK: Unsolicited Publish</string>
    <string name="aware_data_path_pmk_unsolicited_publish_info">The publisher is now ready.\n\nOn the other device: start the \'Data Path: PMK: Unsolicited/Passive\' / \'Subscribe\' test.</string>
    <string name="aware_data_path_pmk_passive_subscribe">Data Path: PMK: Passive Subscribe</string>

    <string name="aware_data_path_open_solicited_publish">Data Path: Open: Solicited Publish</string>
    <string name="aware_data_path_open_solicited_publish_info">The publisher is now ready.\n\nOn the other device: start the \'Data Path: Open: Solicited/Active\' / \'Subscribe\' test.</string>
    <string name="aware_data_path_open_active_subscribe">Data Path: Open: Active Subscribe</string>

    <string name="aware_data_path_passphrase_solicited_publish">Data Path: Passphrase: Solicited Publish</string>
    <string name="aware_data_path_passphrase_solicited_publish_info">The publisher is now ready.\n\nOn the other device: start the \'Data Path: Passphrase: Solicited/Active\' / \'Subscribe\' test.</string>
    <string name="aware_data_path_passphrase_active_subscribe">Data Path: Passphrase: Active Subscribe</string>

    <string name="aware_data_path_pmk_solicited_publish">Data Path: PMK: Solicited Publish</string>
    <string name="aware_data_path_pmk_solicited_publish_info">The publisher is now ready.\n\nOn the other device: start the \'Data Path: PMK: Solicited/Active\' / \'Subscribe\' test.</string>
    <string name="aware_data_path_pmk_active_subscribe">Data Path: PMK: Active Subscribe</string>

    <string name="aware_data_path_oob_open_responder">Data Path (OOB): Open: Responder</string>
    <string name="aware_data_path_oob_open_responder_info">The responder is now ready.\n\nOn the other device: start the \'Data Path (OOB): Open\' / \'Initiator\' test.</string>
    <string name="aware_data_path_oob_open_initiator">Data Path (OOB): Open: Initiator</string>

    <string name="aware_data_path_oob_passphrase_responder">Data Path (OOB): Passphrase: Responder</string>
    <string name="aware_data_path_oob_passphrase_responder_info">The responder is now ready.\n\nOn the other device: start the \'Data Path (OOB): Passphrase\' / \'Initiator\' test.</string>
    <string name="aware_data_path_oob_passphrase_initiator">Data Path (OOB): Passphrase: Initiator</string>

    <string name="aware_discovery_ranging_publish">Discovery with Ranging: Publish</string>
    <string name="aware_discovery_ranging_publish_info">The publisher is now ready.\n\nOn the other device: start the \'Discovery with Ranging\' / \'Subscribe\' test.</string>
    <string name="aware_discovery_ranging_subscribe">Discovery with Ranging: Subscribe</string>

    <string name="aware_data_path_force_channel_setup_publish">Data Path: force channel setup Publish</string>
    <string name="aware_data_path_force_channel_setup_publish_info">The publisher is now ready.\n\nOn the other device: start the \'Data Path: force channel setup\' / \'Subscribe\' test.</string>
    <string name="aware_data_path_force_channel_setup_subscribe">Data Path: force channel setup Subscribe</string>

    <string name="camera_fov_calibration">Camera FOV Calibration</string>
    <string name="camera_fov_calibration_done">Done</string>
    <string name="camera_fov_general_settings">General settings</string>
    <string name="camera_fov_label_options">Settings</string>
    <string name="camera_fov_tap_to_take_photo">Tap to calibrate</string>
    <string name="camera_fov_marker_distance">Marker distance (in cm)</string>
    <string name="camera_fov_marker_distance_description">The distance in centimeters between
        the solid lines on the target pattern.</string>
    <string name="camera_fov_target_distance">Target distance (in cm)</string>
    <string name="camera_fov_target_distance_description">The distance in centimeters from the
        device to the target pattern.</string>
    <string name="camera_fov_settings_button_text">Setup</string>
    <string name="camera_fov_change_preview_sizes_button_text">Preview Sizes</string>
    <string name="camera_fov_choose_preview_size_for_camera">Choose preview size for camera %1$s</string>
    <string name="camera_fov_displayed_fov_label">Displayed FOV : </string>
    <string name="camera_fov_reported_fov_label">Reported  FOV : </string>
    <string name="camera_fov_reported_fov_problem">Reported FOV problem</string>
    <string name="camera_fov_reported_fov_problem_message">The reported FOV before takePicture() is
        different from when onPictureTaken() is called.\nAs picture size has not been changed, the
        reported FOV should be identical at both times.\n\nFOV before/after: %1$f / %2$f</string>

    <string name="camera_fov_panorama_wallpaper_title">Photo Sphere Live Wallpaper</string>
    <string name="camera_fov_panorama_wallpaper_description">This live wallapper displays photo
        spheres.</string>
    <string name="camera_fov_select_panorama">Select panorama</string>
    <string name="camera_fov_select_panorama_description">Select a panorama to display in the
       live wallpaper.</string>
    <string name="camera_fov_reset_panorama">Reset panorama</string>
    <string name="camera_fov_reset_panorama_description">Resets the panorama to show the demo
        file.</string>
    <string name="camera_fov_enable_compass_mode">Enable compass mode</string>
    <string name="camera_fov_enable_compass_mode_description">If enabled, the panorama orients
        itself according to the current rotation of the device.</string>

    <string name="test_category_notifications">Notifications</string>
    <string name="test_category_tiles">Tiles</string>
    <string name="package_priority_test">Notification Package Priority Test</string>
    <string name="package_priority_info">This test checks that the NotificationManagerService respects
        user preferences about relative package priorities.
    </string>
    <string name="package_priority_bot">Verifying that the CTS Robot helper package is installed.</string>
    <string name="package_priority_high">Find \"%s\" in the \"Notifications\" settings panel, and allow it to Override Do Not Disturb.</string>
    <string name="package_priority_default">Find \"%s\" in the \"Notifications\" settings panel, and disallow it to Override Do Not Disturb.</string>
    <string name="package_priority_user_order">Check that ranker respects user priorities.</string>

    <string name="shortcut_reset_test">Shortcut Reset Rate-limiting Test</string>
    <string name="shortcut_reset_info">This test checks that when an inline-reply happens, ShortcutManager\'s rate-limiting
        is reset.</string>
    <string name="shortcut_reset_bot">Verifying that the CTS Robot helper package is installed.</string>
    <string name="shortcut_reset_start">Showing the notification.</string>
    <string name="shortcut_reset_prompt_inline_reply">Open the notification shade,
        find the \"Shortcut Reset Rate-limiting Test\" notification, type something in the inline-reply field and
        press the send button.</string>
    <string name="shortcut_reset_check_result">Check ShortcutManager rate-limit has been reset.</string>

    <string name="attention_test">Notification Attention Management Test</string>
    <string name="attention_info">This test checks that the NotificationManagerService is
        respecting user preferences about notification ranking and filtering.
    </string>
    <string name="ringer_mode_tests">Ringer Mode Tests</string>
    <string name="ringer_mode_info">This test checks that Audio manager functionality that requires
        particular ringer mode states works properly.
    </string>
    <string name="ringer_mode_pass_test">These tests are handled by CTS.</string>
    <string name="test_sound_effects">Test touch sound</string>
    <string name="test_vibrate_notification">Test vibrate notification</string>
    <string name="test_vibrate_ringer">Test vibrate ringer</string>
    <string name="test_access_ringer_mode">Test access ringer mode</string>
    <string name="test_ringer_mode_policy_access">Test ringer mode policy access</string>
    <string name="test_volume_dnd_affected_stream">Test volume change</string>
    <string name="test_mute_dnd_affected_streams">Test mute streams</string>
    <string name="test_ringer_manager">Test RingtoneManager</string>
    <string name="enable_sound_effects">Please enable touch sound in Sound settings.</string>
    <string name="attention_ready">I\'m done</string>
    <string name="attention_filter_any">Please enable \"Do not disturb\" by tapping the Quick Settings tile.</string>
    <string name="attention_filter_all">Please disable \"Do not disturb\" by tapping the Quick Settings tile.</string>
    <string name="attention_filter_priority">Please enable \"Do not disturb\" by tapping the Quick
        Settings tile.  Then, long press the same tile and customize the setting to allow messages
        from starred contacts only.</string>
    <string name="attention_filter_priority_mimic_alarms_only">Please enable Priority-Only \"Do not disturb\"
        by tapping the Quick Settings tile.  Then, long press the same tile and customize the setting to allow sounds
        from Alarms and Media (if applicable) only.</string>
    <string name="attention_create_contacts">Create contacts for notification annotations.</string>
    <string name="attention_delete_contacts">Delete test contacts.</string>
    <string name="attention_default_order">Check that ranker defaults to time order.</string>
    <string name="attention_priority_order">Check that ranker respects developers priorities.</string>
    <string name="attention_ambient_bit">Check that the ambient bit is set appropriately.</string>
    <string name="attention_lookup_order">Check that ranker respects Lookup URIs for contacts.</string>
    <string name="attention_email_order">Check that ranker respects mailto URIs for contacts.</string>
    <string name="attention_phone_order">Check that ranker respects telephone URIs for contacts.</string>
    <string name="attention_interruption_order">Check that ranker temporarily boosts interruptions.
    This test takes 30 seconds to complete.</string>
    <string name="attention_none_are_filtered_messages">Check that \"All\" mode doesn\'t filter any notifications (messages).</string>
    <string name="attention_none_are_filtered_diff_categories">Check that \"All\" mode doesn\'t filter any notifications (event, reminder, alarm).</string>
    <string name="attention_some_are_filtered_messages">Check that \"Priority\" mode doesn\'t filter priority notifications (messages from starred contacts).</string>
    <string name="attention_some_are_filtered_alarms">Check that \"Priority\" mode doesn\'t filter priority notifications (alarms).</string>
    <string name="attention_some_are_filtered_media_system_other">Check that \"Priority\" mode doesn\'t filter priority notifications (media, system, other).</string>
    <string name="attention_all_are_filtered">Check that \"None\" mode filters all notifications.</string>
    <string name="attention_cannot_disallow_alarms_or_media">Check that apps targeted with Pre-P SDK can\'t disallow alarms or media from bypassing DND.</string>
    <string name="nls_test">Notification Listener Test</string>
    <string name="nas_test">Notification Assistant Test</string>
    <string name="nls_service_name">Notification Listener for CTS Verifier</string>
    <string name="nls_info">This test checks that a NotificationListenerService can be enabled
        and disabled, and that once enabled the service is able to receive notifications and
        dismiss them.
    </string>
    <string name="nas_service_name">Notification Assistant for CTS Verifier</string>
    <string name="nas_info">This test checks that a NotificationAssistantService can be enabled
        and disabled, and that once enabled the service is able to receive notifications and
        dismiss them.
    </string>
    <string name="nls_anr">This test checks that notifications are not sent with content that is
        too long. If this test causes the test app to ANR, the test has failed.
    </string>
    <string name="action_not_sent">SecureActionOnLockScreenTest</string>
    <string name="action_received">Action Sent - SecureActionOnLockScreenTest</string>
    <string name="action_test_title">Action</string>
    <string name="nls_visibility">Please change the lock screen setting to hide sensitive content
        on the lockscreen</string>
    <string name="nls_restore_visibility">Please change the lock screen setting to show all
        content on the lockscreen</string>
    <string name="add_screen_lock">Add a secure screen lock of any type.\nLet all notification content be shown.</string>
    <string name="set_global_visibility_public">Update notification settings to ensure that all notification content is shown.</string>
    <string name="set_global_visibility_private">Update notification settings to ensure that sensitive notification content is shown only when unlocked.</string>
    <string name="set_global_visibility_secret">Update notification settings to ensure that all notifications are hidden on the lock screen.</string>
    <string name="remove_screen_lock">Remove the added screen lock</string>
    <string name="secure_action_lockscreen">Lock the screen and find the SecureActionOnLockScreenTest
        notification. Tap on its action. Verify that the keyguard displays on tap, and that the
        notification text does not update until the passcode is entered. Ensure that the notification
        text does update once the device is unlocked.</string>
    <string name="np_start_channel_settings">Launch Channel Settings</string>
    <string name="np_start_security_settings">Launch Security Settings</string>
    <string name="np_start_notif_settings">Launch Notification Settings</string>
    <string name="np_when_locked_see_redacted">Lock the screen and find the NotifPrivacyTest notification.\n
        Pass the test if the notification content is REDACTED.</string>
    <string name="np_when_locked_see_private">Lock the screen and find the NotifPrivacyTest notification.\n
        Pass the test if the notification content is EXPOSED.</string>
    <string name="np_when_locked_hidden">Lock the screen and look for the NotifPrivacyTest notification.\n
        Fail the test if it can be found without unlocking the device.</string>
    <string name="np_start_occluding">Launch CallSimulator</string>
    <string name="np_occluding_instructions">Launch the CallSimulator and follow the instructions on that screen.</string>
    <string name="np_occluding_see_redacted">CallSimulator
        \n\n(Like a call, this screen will be visible even when the device is locked.)
        \n\nLock the screen, then come back here without unlocking.
        \nPull down the notification shade and find the NotifPrivacyTest notification.
        \nPass the test if the notification content is REDACTED.
        \n\nGo back when ready to Pass/Fail the step.</string>
    <string name="np_occluding_see_private">CallSimulator
        \n\n(Like a call, this screen will be visible even when the device is locked.)
        \n\nLock the screen, then come back here without unlocking.
        \nPull down the notification shade and find the NotifPrivacyTest notification.
        \nPass the test if the notification content is EXPOSED.
        \n\nGo back when ready to Pass/Fail the step.</string>
    <string name="np_occluding_hidden">CallSimulator
        \n\n(Like a call, this screen will be visible even when the device is locked.)
        \n\nLock the screen, then come back here without unlocking.
        \nPull down the notification shade and look for the NotifPrivacyTest notification.
        \nFail the test if it can be found without unlocking the device.
        \n\nGo back when ready to Pass/Fail the step.</string>
    <string name="np_public_version_text">NotifPrivacyTest: REDACTED</string>
    <string name="np_private_version_text">NotifPrivacyTest: EXPOSED</string>
    <string name="notif_privacy_test">Notification Privacy Test</string>
    <string name="notif_privacy_info">This test checks that Notification privacy is correctly
        handled on the insecure and secure lockscreen.
    </string>
    <string name="msg_extras_preserved">Check that Message extras Bundle was preserved.</string>
    <string name="conversation_section_ordering">If this device supports conversation notifications,
        and groups them into a separate section from alerting and silent non-conversation
        notifications, fully expand the notification display and verify that the \"Person A\"
        notification appears before the "\Non-Person Notification\".
        If this device does not support conversation notifications or does not group them together, press Pass.</string>
    <string name="hun_display">If this device supports heads-up notifications,
        verify that a notification just peeked on screen, displaying all of the following: small
        icon, large icon, notification title, notification text, and two action buttons.
        If this device does not support heads-up notifications, press Pass.</string>
    <string name="action">Action %1$d</string>
    <string name="media_controls_title">Media Controls Test</string>
    <string name="media_controls_info">This test checks that media controls appear in the shade for
        applications that post a media style notification.</string>
    <string name="media_controls_visible">Pull down the notification shade and check that the media
        controls from the CTS Verifier app are visible.
    </string>
    <string name="media_controls_output_switcher_chip">Pull down the notification shade and look at
        the media controls for the CTS Verifier app.
        Check that it contains an affordance to switch between available media routes.
    </string>
    <string name="tile_service_name">Tile Service for CTS Verifier</string>
    <string name="tiles_test">Tile Service Test</string>
    <string name="tiles_info">This test checks that a Tile Service added by a third party
        application is not immediately added to the current Quick Settings tiles but can be added
        by the user.
    </string>
    <string name="tiles_adding_tile">Check that Tile Service is enabled</string>
    <string name="tiles_not_added">Open Quick Settings and check that the Tile Service for CTS
        Verifier is not visible in any page</string>
    <string name="tiles_in_customizer">Open Quick Settings and click the button to customize Quick
        Settings. Check that the Tile Service for CTS Verifier is available to be added</string>
    <string name="tiles_removing_tile">Check that Tile Service is disabled</string>
    <string name="tile_request_service_name">Request Tile Service</string>
    <string name="tile_request_helper_app_name">CtsTileServiceApp</string>
    <string name="tiles_request_test">Tile Service Request Test</string>
    <string name="tiles_request_info">This test checks that a request to add a TileService is
    shown correctly to the user and the correct answer is relayed to the app.</string>
    <string name="tiles_request_uninstall">This will verify that the helper app is not installed.
    If that is correct, the test will pass automatically. If the app is installed, press the button
    and you will be prompted for confirmation to uninstall the app.</string>
    <string name="tiles_request_install">You should have received a helper app apk with this CTS
    Verifier package. Its name is \"CtsTileServiceApp\". Install the test app, by running\n
    \"adb install /path/to/CtsTileServiceApp.apk\".\n
    Pass the test if the install was successful. Fail it otherwise.
    </string>
    <string name="tiles_request_install_verify">This will automatically verify that the helper app
    is correctly installed.</string>
    <string name="tiles_request_tile_not_present">Open Quick Settings and pass this test
    if there are no tiles named %1$s in any page.</string>
    <string name="tiles_request_dismissed">After pressing \"Start request\", a dialog will appear
        requesting to add a quick settings tile. When it appears, dismiss it by tapping outside of
        it, or going back.</string>
    <string name="tiles_request_answer_no">After pressing \"Start request\", a dialog will appear
        requesting to add a quick settings tile. When it appears, tap the option in the dialog to
        not add the tile.</string>
    <string name="tiles_request_correct_info">After pressing \"Start request\", a dialog will appear
        requesting to add a quick settings tile. When it appears, verify the following information
        in the dialog:\n
  1. The name of the app requesting to add the tile is %1$s.\n
  2. The label in the tile is %2$s.\n
After verifying, tap the option in the dialog to not add the tile.\n
When the buttons are enabled, pass this test if the information in the dialog was correct.
    </string>
    <string name="tiles_request_answer_yes">After pressing \"Start request\", a dialog will appear
        requesting to add a quick settings tile. When it appears, tap the option in the dialog to
        add the tile.
    </string>
    <string name="tiles_request_tile_present">Open Quick Settings and pass this test if a tile named
        %1$s is visible in some page.
    </string>
    <string name="tiles_request_check_tile_already_added">Checking tile already added response
    </string>
    <string name="vr_tests">VR Tests</string>
    <string name="test_category_vr">VR</string>
    <string name="vr_test_title">VR Listener Test</string>
    <string name="vr_service_name">VR Listener for CTS Verifier</string>
    <string name="vr_info">This test checks that a VrListenerService can be enabled and disabled, and
        and that it receives the correct lifecycle callbacks when entering and exiting VR mode.
    </string>
    <string name="vr_start_settings">Launch Settings</string>
    <string name="vr_start_vr_activity">Launch VR mode activity</string>
    <string name="vr_start_double_vr_activity">Launch Two VR mode activities</string>
    <string name="vr_start_vr_activity_desc">Click the button to launch the VR mode activity.</string>
    <string name="vr_start_vr_double_activity_desc">Click the button to launch two consecutive VR mode activities.</string>
    <string name="vr_check_disabled">Check that the CTS VR helper service is disabled by default.</string>
    <string name="vr_enable_service">Please enable \"VR Listener for CTS Verifier\"
        under Apps > Gear Icon > Special Access > VR Helper Services and return here.</string>
        <string name="vr_disable_service">Please disable \"VR Listener for CTS Verifier\"
        under Apps > Gear Icon > Special Access > VR Helper Services and return here.</string>
    <string name="nas_enable_service">Please enable \"Notification Assistant for CTS Verifier\"
        under Apps > Gear Icon > Default > Notification Assistant and return here.</string>
    <string name="nas_disable_service">Please disable \"Notification Assistant for CTS Verifier\"
        under Apps > Gear Icon > Default > Notification Assistant and return here.</string>
    <string name="nls_enable_service">Please enable \"Notification Listener for CTS Verifier\"
        under Apps > Gear Icon > Special Access > Notification Access and return here.</string>
    <string name="nls_block_app">Please block the linked application and return here.</string>
    <string name="nls_unblock_app">Please unblock the linked application and return here.</string>
    <string name="nls_block_channel">Please block the linked notification channel and return here.</string>
    <string name="nls_block_group">Please block the linked notification channel group and return here.</string>
    <string name="nls_disable_service">Please disable \"Notification Listener for CTS Verifier\"
        under Apps > Gear Icon > Special Access > Notification Access and return here.</string>
    <string name="nls_start_settings">Launch Settings</string>
    <string name="nls_service_started">Service should start once enabled.</string>
    <string name="nas_note_enqueued_received">Check that notification was enqueued.</string>
    <string name="nls_note_received">Check that notification was received.</string>
    <string name="nls_payload_intact">Check that notification payload was intact.</string>
    <string name="nls_audibly_alerted">Check that notification audibly alerting was reported correctly.</string>
    <string name="nas_adjustment_payload_intact">Check that the Assistant can adjust notifications.</string>
    <string name="nas_adjustment_enqueue_payload_intact">Check that the Assistant can adjust notifications on enqueue.</string>
    <string name="nas_create_channel">Check that the Assistant can create a Notification Channel for another app.</string>
    <string name="nas_update_channel">Check that the Assistant can update a Notification Channel for another app.</string>
    <string name="nas_block_channel">Check that the Assistant can block a Notification Channel.</string>
    <string name="nas_delete_channel">Check that the Assistant can delete a Notification Channel for another app.</string>
    <string name="nas_snooze_context">Check that the Assistant can snooze a notification until a given context.</string>
    <string name="nls_clear_one">Check that service can clear a notification.</string>
    <string name="nls_clear_one_reason">Check that service can clear a notification and receive the correct reason for dismissal.</string>
    <string name="nls_clear_one_stats">Check that service does not receive notification stats.</string>
    <string name="nls_clear_all">Check that service can clear all notifications.</string>
    <string name="nls_service_stopped">Service should stop once disabled.</string>
    <string name="nls_note_missed">Check that notification was not received.</string>
    <string name="nls_snooze">Check the service can be snoozed.</string>
    <string name="nls_unsnooze">Check the service can be unsnoozed.</string>
    <string name="nls_hints">Check that the listener can set hints.</string>
    <string name="nls_snooze_one">Check that service can snooze a notification.</string>
    <string name="nls_snooze_one_time">Check that service can snooze a notification for a given time.</string>
    <string name="nls_get_snoozed">Check that service can retrieve snoozed notifications.</string>
    <string name="nls_unsnooze_one">Check that service can unsnooze a notification.</string>
    <string name="nls_change_type_filter">Click this button to launch the settings page for this app\'s notification listener in settings. Note what types were checked and which were disabled before you make any changes. View the list of apps and note any that are not allowed. Change the filter types to allow everything except ongoing and silent notifications, and then return to this screen</string>
    <string name="nls_original_filter_verification">Were only alerting and silent notifications allowed? Was the Settings app not allowed? Was the ongoing option disabled? Are all only conversations and alerting notification types allowed now?</string>
    <string name="nls_filter_test">Checking that an alerting notification is received and a silent one is not</string>
    <string name="nls_reset_type_filter">Go to settings and allow all notification types, and then return here.</string>
    <string name="nas_note_missed_enqueued">Check that notification was not enqueued.</string>
    <string name="cp_test">Condition Provider test</string>
    <string name="cp_service_name">Condition Provider for CTS Verifier</string>
    <string name="cp_info">This test checks that ConditionProviderService can be enabled
        and disabled, and that once enabled the service is able to create, query, edit, and delete
        automatic zen rules.
    </string>
    <string name="cp_enable_service">Please enable \"CTS Verifier\" under Do Not Disturb access and return here.</string>
    <string name="cp_disable_service">Please disable \"CTS Verifier\" under Do Not Disturb access and return here.</string>
    <string name="cp_start_settings">Launch Settings</string>
    <string name="cp_create_rule">Creating Automatic Zen Rule</string>
    <string name="cp_create_rule_with_zen_policy">Creating Automatic Zen Rule with Zen Policy</string>
    <string name="cp_update_rule">Updating Automatic Zen Rule</string>
    <string name="cp_update_rule_use_zen_policy">Updating Automatic Rule to Use Zen Policy</string>
    <string name="cp_subscribe_rule">Subscribing to Automatic Zen Rule</string>
    <string name="cp_service_started">Service should start once enabled.</string>
    <string name="cp_service_stopped">Service should stop once disabled.</string>
    <string name="cp_unsubscribe_rule">Unsubscribing to Automatic Zen Rule</string>
    <string name="cp_delete_rule">Deleting Automatic Zen Rule via api</string>
    <string name="cp_get_rules">Retrieving Automatic Zen Rules</string>
    <string name="cp_get_rule">Retrieving Automatic Zen Rule</string>
    <string name="cp_show_rules">Click this button to launch the Automatic Zen Rule listing page in settings, and then return to this screen</string>
    <string name="cp_show_rules_verification">Was the automatic rule screen shown?</string>
    <string name="cp_disable_rule">Please disable rule "123" and return here.</string>
    <string name="cp_enable_rule">Please enable rule "123" and return here.</string>
    <string name="cp_delete_rule_broadcast">Please delete rule "123" and return here.</string>
    <string name="cp_rule_type">CTS rule</string>
    <string name="iva_pass">Pass</string>
    <string name="iva_fail">Fail</string>

    <string name="cacert_test">CA Cert Notification Test</string>
    <string name="cacert_info">This test checks that when a CA Certificate is installed, the user is notified.</string>
    <string name="cacert_do_something">Do it</string>
    <string name="cacert_done">Done</string>
    <string name="cacert_install_cert_title">Tap to install a CA certificate</string>
    <string name="cacert_install_cert">Press the button to open Security settings. Navigate to \"Install a certificate\" (normally under \"Encryptions &amp; credentials\") and select \"CA certificate\". Pick \"MyCA.cer\" from device storage and proceed with the installation. If this button does nothing, pass the test and move on.</string>
    <string name="cacert_check_cert_in_settings">Visit the user-installed trusted credentials page and confirm that the "Internet Widgits Pty Ltd" cert appears in the list.</string>
    <string name="cacert_remove_screen_lock">You may have been prompted to set a screen lock when installing the certificate. If so, remove it. If not, you may skip this step.</string>
    <string name="cacert_check_notification">Look at the system notifications. Confirm that:\n
1. There is a notification saying a certificate authority is installed.\n
2. Tapping that notification brings up a more detailed explanation and a button to check trusted credentials.\n
3. Tapping that button brings up the Trusted Credentials page you just visited.</string>
    <string name="cacert_dismiss_notification">Open the notification and follow the link to remove CA certificates. If removing CA certificates does not dismiss the notification, fail the test.</string>

    <string name="caboot_test">CA Cert Notification on Boot test</string>
    <string name="caboot_info">This test is to confirm that when the user has installed a trusted credential, the system notifies the user when it boots.</string>
    <string name="caboot_check_cert_installed">Please check here to see whether a certificate is already installed. If this button does nothing, pass the test and move on.</string>
    <string name="caboot_check_creds">Check Credentials</string>
    <string name="caboot_if_not_installed">Only if there is no credential currently installed, install one.</string>
    <string name="caboot_install_cert">Install credential</string>
    <string name="caboot_remove_screen_lock">Remove screen lock</string>
    <string name="caboot_reboot_desc">Please reboot the device and return to this test.</string>
    <string name="caboot_after_boot">AFTER REBOOTING: Check that there is a notification saying a certificate authority is installed. Opening that notification should show a dialog box giving more information, with a button to check trusted credentials. This should open up the same view of trusted credentials that you get via the "Check credentials" button.</string>

    <!-- Strings for KeyChain -->
    <string name="keychain_test">KeyChain Storage Test</string>
    <string name="keychain_info">This test checks that credentials installed to the system can be granted, retrieved, and used to create valid HTTPS connections.</string>
    <string name="keychain_reset">Reset</string>
    <string name="keychain_skip">Skip</string>
    <string name="keychain_setup_desc">The first step sets up an internal KeyStore and generates credentials to use for the remainder of the test.\n\n
 Tap \'Next\' to begin.</string>
    <string name="keychain_install_desc">Credentials generated. Tap \'Next\' to install them to the system keychain.\n\n
The container for the credentials will not be protected with a password; if prompted for one, leave that field blank.\n\n
During installation you may be prompted for a name - accept the default suggestion.\n\n
In the case that these credentials were already installed, you may skip this step.</string>
    <string name="keychain_https_desc">The last test involves setting up an HTTPS connection using credentials from the KeyChain.\n\n
You should be prompted to select credentials; choose the ones you just installed in the previous step.</string>
    <string name="keychain_reset_desc">Before marking this test as passed, tap \'Next\' to open security settings to clear credentials:\n
 1. Open Encryption and credentials.\n
 2. Tap Clear credentials.</string>

    <!-- Strings for CA cert installation via intent test -->
    <string name="cacert_install_via_intent">CA Cert install via intent</string>
    <string name="cacert_install_via_intent_title">This test attempts to install a CA certificate via an intent.</string>
    <string name="cacert_install_via_intent_info">Attempt installing a CA certificate via an intent, which should not be possible. Tapping Go should show a dialog telling the user that CA certificates can put their privacy at risk and must be installed via Settings. If a any other dialog comes up, the test failed.</string>

    <!-- Strings for credential management test -->
    <string name="credential_management_app_test">Credential Management App Test</string>
    <string name="credential_management_app_info">This test requests to manage the user\'s KeyChain credentials and become the credential management app.</string>
    <string name="request_manage_credentials">Request to manage credentials</string>
    <string name="is_credential_management_app">Check is credential management app</string>
    <string name="credential_management_app_policy">Check correct authentication policy is set</string>
    <string name="generate_key_pair">Generate key pair</string>
    <string name="create_and_install_certificate">Create and install certificate</string>
    <string name="request_certificate_authentication">Request certificate for authentication</string>
    <string name="sign_data_with_key">Sign data with the private key</string>
    <string name="verify_signature">Verify signature with the public key</string>
    <string name="remove_credential_management_app">Remove credential management app</string>

    <!-- Strings for Widget -->
    <string name="widget_framework_test">Widget Framework Test</string>
    <string name="widget_framework_test_info">This test checks some basic features of the widget
        framework. In order to perform the test, press the Home button. Add the widget
        titled "CTS Verifier" to the home screen. Follow the instructions in the widget.</string>
    <string name="widget_name">Widget Framework Test</string>
    <string name="widget_pass">Pass</string>
    <string name="widget_fail">Fail</string>

    <string name="provisioning_byod_non_market_apps">Non-market app installation restrictions</string>
    <string name="provisioning_byod_non_market_apps_info">
        This test exercises user restrictions on installation of non-market apps. Follow
        instructions in each test.
    </string>

    <string name="provisioning_byod_nonmarket_allow">Enable non-market apps</string>
    <string name="provisioning_byod_nonmarket_allow_info">
        This test verifies that non-market apps can be installed if permitted.\n
        1. A package installation UI should appear.\n
        2. If \'Cts Verifier\' is not allowed to install apps, a warning dialog will appear
        blocking the install. In this case go to step 3, else skip to step 4.\n
        3. Allow \'Cts Verifier\' to install apps. Return to package installer.\n
        4. Accept the installation and verify that it succeeds (no error message is displayed).
    </string>

    <string name="provisioning_byod_nonmarket_deny">Disable non-market apps</string>
    <string name="provisioning_byod_nonmarket_deny_info">
        This test verifies that non-market apps cannot be installed unless permitted.\n
        1. A package installation UI should appear.\n
        2. Verify that the installation of the package is refused.
    </string>

    <string name="provisioning_byod_nonmarket_allow_global">Enable non-market apps (global restriction)</string>
    <string name="provisioning_byod_nonmarket_allow_global_info">
        This test verifies that non-market apps can be installed if permitted by device-wide block.\n
        1. A package installation UI should appear.\n
        2. If \'Cts Verifier\' is not allowed to install apps, a warning dialog will appear
        blocking the install. In this case go to step 3, else skip to step 4.\n
        3. Allow \'Cts Verifier\' to install apps. Return to package installer.\n
        4. Accept the installation and verify that it succeeds (no error message is displayed).
    </string>

    <string name="provisioning_byod_nonmarket_deny_global">Disable non-market apps (global restriction)</string>
    <string name="provisioning_byod_nonmarket_deny_global_info">
        This test verifies that non-market apps cannot be installed unless permitted by device-wide block.\n
        1. A package installation UI should appear.\n
        2. Verify that the installation of the package is refused.
    </string>

    <string name="provisioning_byod_nonmarket_allow_global_primary">Enable primary user non-market apps (global restriction)</string>
    <string name="provisioning_byod_nonmarket_allow_global_primary_info">
        This test verifies that non-market apps from the primary user can be installed if permitted.\n
        1. You should have received NotificationBot.apk together with the CTS verifier. If you built
        the CTS verifier yourself, build the NotificationBot.apk by issuing the following command on
        the host:\n
        make NotificationBot\n
        2. Upload the NotificationBot.apk to your device by issuing the following command on the
        host:\n
        adb push /path/to/NotificationBot.apk /data/local/tmp/\n
        3. Press \"Go\" to install NotificationBot.apk in your personal profile. A package
        installation UI should appear.\n
        4. If \'Cts Verifier\' is not allowed to install apps, a warning dialog will appear
        blocking the install. In this case go to step 5, else skip to step 6.\n
        5. Allow \'Cts Verifier\' to install apps. Return to package installer.\n
        6. Accept the installation and verify that it succeeds (no error message is displayed).
    </string>

    <string name="provisioning_byod_nonmarket_deny_global_primary">Disable primary user non-market apps (global restriction)</string>
    <string name="provisioning_byod_nonmarket_deny_global_primary_info">
        This test verifies that non-market apps from the primary user cannot be installed unless permitted.\n
        1. You should have received NotificationBot.apk together with the CTS verifier. If you built
        the CTS verifier yourself, build the NotificationBot.apk by issuing the following command on
        the host:\n
        make NotificationBot\n
        2. Upload the NotificationBot.apk to your device by issuing the following command on the
        host:\n
        adb push /path/to/NotificationBot.apk /data/local/tmp/\n
        3. Press \"Go\" to install NotificationBot.apk in your personal profile. A package
        installation UI should appear.\n
        4. Verify that the installation of the package is refused.
    </string>

    <string name="provisioning_byod_capture_image_support">Camera support cross profile image capture</string>
    <string name="provisioning_byod_capture_image_support_info">
        This test verifies that images can be captured from the managed profile using the primary profile camera.\n
        If prompted, accept the camera permission after pressing go.\n
        1. Capture a picture using the camera.\n
        2. Verify that the captured picture is shown.\n
        3. Click on the close button.
    </string>
    <string name="provisioning_byod_capture_video_support_with_extra_output">Camera support cross profile video capture (with extra output path)</string>
    <string name="provisioning_byod_capture_video_support_info">
        This test verifies that videos can be captured from the managed profile using the primary profile camera.\n
        If prompted, accept the camera permission after pressing go.\n
        1. Capture a video using the camera.\n
        2. Click on the play button.\n
        3. Verify that the captured video is played.\n
        4. Click on the close button.
    </string>
    <string name="provisioning_byod_capture_video_support_without_extra_output">Camera support cross profile video capture (without extra output path)</string>
    <string name="provisioning_byod_capture_audio_support">Sound recorder support cross profile audio capture</string>
    <string name="provisioning_byod_capture_audio_support_info">
        This test verifies that audio can be captured from the managed profile using the primary profile sound recorder.\n
        1. Capture audio.\n
        2. Click on the play button.\n
        3. Verify that the captured audio is played.\n
        4. Click on the close button.\n
        If this device does not support audio recording, please skip this test and mark it passing.\n
    </string>
    <string name="provisioning_byod_dismiss_result_dialog">Close</string>
    <string name="provisioning_byod_play">Play</string>
    <string name="provisioning_byod_verify_image_title">Verify captured image</string>
    <string name="provisioning_byod_verify_video_title">Verify captured video</string>
    <string name="provisioning_byod_verify_audio_title">Verify captured audio</string>
    <string name="provisioning_byod_no_image_capture_resolver">No image capture app present. Skip test.</string>
    <string name="provisioning_byod_no_video_capture_resolver">No video capture app present. Skip test.</string>
    <string name="provisioning_byod_no_audio_capture_resolver">No audio capture app present. Skip test.</string>
    <string name="provisioning_byod_capture_media_error">Error while capturing media from managed profile.</string>
    <string name="provisioning_byod_capture_image_error">Error while capturing image from managed profile.</string>

    <string name="provisioning_byod_auth_bound_key">Authentication-bound keys</string>
    <string name="provisioning_byod_auth_bound_key_info">
        This test verifies keystore cryptographic keys can be bound to device credentials.
        These keys should only be available if there was a recent enough authentication.
    </string>
    <string name="provisioning_byod_auth_bound_key_instruction">
        This test verifies keystore cryptographic keys can be bound to device lockscreen challenge or fingerprints (if available).
        These keys should only be available if there was a recent enough authentication. \n

        1. Press "Set up" to open Security settings. (If this device has a separate app for work
        settings, ignore this button and open that app manually from the launcher.) Create a
        lockscreen password and if available, enroll a fingerprint under "Work profile security".\n
        2. Go through the list of tests.\n
        3. Mark the overall test pass or fail.\n
        4. Once the set of tests are completed, remove the lockscreen challenge.
    </string>
    <string name="provisioning_byod_auth_bound_key_set_up">Set up</string>
    <string name="provisioning_byod_lockscreen_bound_key">Lockscreen-bound key test</string>
    <string name="provisioning_byod_fingerprint_bound_key">Fingerprint-bound key test</string>
    <string name="provisioning_byod_vpn">VPN test</string>
    <string name="provisioning_byod_always_on_vpn">Always-on VPN Settings</string>
    <string name="provisioning_byod_always_on_vpn_info">
        In this test, you\'ll verify that the Settings UI for always-on VPN is correct for different
        VPN apps.
    </string>
    <string name="provisioning_byod_always_on_vpn_instruction">
        In this test, you\'ll verify the Settings UI for always-on VPN for different VPN apps.
        You should have received three VPN app apks with this CTS Verifier package.
        They\'re named in the form of \"CtsVpnFirewallApp*.apk\".\n

        1. Before the test, make sure CtsVpnFirewallApp isn\'t installed on your device. You can
           uninstall either by UI, or by\n
           \"adb uninstall com.android.cts.vpnfirewall\"\n

        2. Install the first test app, by running\n
           \"adb install /path/to/CtsVpnFirewallAppApi23.apk\"\n

        3. Tap \"Prepare VPN\" button below and consent to the VPN connection.\n

        4. Once connected, verify that the system shows disclosure (on some devices this is shown in
           the notification area) that network traffic is being routed through the VPN app.\n

        5. Finish all three test cases listed below.\n

        6. Repeat step 1 to remove CtsVpnFirewallApp.
    </string>
    <string name="provisioning_byod_always_on_vpn_prepare_button">Prepare VPN</string>
    <string name="provisioning_byod_always_on_vpn_vpn_not_found_note">
        Can\'t find VPN app. Did you install it correctly?
    </string>
    <string name="provisioning_byod_always_on_vpn_api23">VPN app targeting SDK 23</string>
    <string name="provisioning_byod_always_on_vpn_api23_instruction">
        1. Re-install CtsVpnFirewallAppApi23.apk (skip this if you already have the correct version
           installed):\n
           \"adb install -r /path/to/CtsVpnFirewallAppApi23.apk\"\n
        2. Tap \"Go\" button below to go to the VPN settings page.\n
        3. Open configuration details page for CtsVpnFirewallApp.\n
        4. Confirm the \"Always-on VPN\" and \"Block connections without VPN\" switches are both off
           and disabled.\n
    </string>
    <string name="provisioning_byod_always_on_vpn_api24">VPN app targeting SDK 24</string>
    <string name="provisioning_byod_always_on_vpn_api24_instruction">
        1. Re-install CtsVpnFirewallAppApi24.apk (skip this if you already have the correct version
           installed):\n
           \"adb install -r /path/to/CtsVpnFirewallAppApi24.apk\"\n
        2. Tap \"Go\" button below to go to the VPN settings page.\n
        3. Open configuration details page for CtsVpnFirewallApp.\n
        4. Confirm\n
           4.1. \"Always-on VPN\" switch is enabled and in off position\n
           4.2. \"Block connections without VPN\" switch is disabled and in off position\n
           4.3. \"Block connections without VPN\" becomes enabled once the \"Always-on VPN\" switch
                is turned on\n
    </string>
    <string name="provisioning_byod_always_on_vpn_not_always_on">VPN app with opt-out</string>
    <string name="provisioning_byod_always_on_vpn_not_always_on_instruction">
        1. Re-install CtsVpnFirewallAppNotAlwaysOn.apk (skip this if you already have the correct
           version installed):\n
           \"adb install -r /path/to/CtsVpnFirewallAppNotAlwaysOn.apk\"\n
        2. Tap \"Go\" button below to go to the VPN settings page.\n
        3. Open configuration details page for CtsVpnFirewallApp.\n
        4. Confirm the \"Always-on VPN\" and \"Block connections without VPN\" switches are both off
           and disabled.\n
    </string>
    <string name="provisioning_byod_select_work_challenge">Select work lock test</string>
    <string name="provisioning_byod_select_work_challenge_description">
        This test verifies that a work lock can be chosen.\n

        1. Verify that you get sent to the page for Choosing a new work lock.\n
        2. Set a new work lock.
    </string>
    <string name="provisioning_byod_confirm_work_credentials">Confirm work lock test</string>
    <string name="provisioning_byod_confirm_work_credentials_description">
        This test verifies that work lock is shown when opening a work app,
        the work lock was set correctly and it is customized according to
        the policies set. You can only do this test after you have done the previous test.\n
        Before running this test press the power button to turn the screen off and then back on and
        swipe to unlock.\n

        1. Open a work app.\n
        2. Verify that a screen asking you for your work credentials is shown.\n
        3. Verify that the icon is a briefcase.\n
        4. Verify that the header text says \"CtsVerifier\".\n
        5. Confirm your credentials and verify that the credentials you entered previously work.\n
        6. The work app should be launched.
    </string>
    <string name="provisioning_byod_confirm_work_credentials_header">
        CtsVerifier
    </string>
    <string name="provisioning_byod_pattern_work_challenge">Confirm pattern lock test</string>
    <string name="provisioning_byod_pattern_work_challenge_description">
        This test verifies that when a work pattern lock is set, a work app can open correctly.\n

        1. Verify that you get sent to the page for Choosing a new work lock.\n
        2. Set a pattern lock.\n
        Some devices have the pattern lock option disabled and it will not show up in the list.\n
        If that\'s the case then mark the test as passed.\n
        3. Press the power button to turn the screen off and then back on and swipe to unlock.\n
        4. Open a work app.\n
        5. Verify that a screen asking you for your work credentials is shown.\n
        6. Confirm your credentials and verify that the credentials you entered previously work.\n
        7. The work app should be launched.
    </string>
    <string name="provisioning_byod_recents">Recents redaction test</string>
    <string name="provisioning_byod_recents_info">
        This test verifies that if a work profile is locked with a separate password, Recents views
        for applications in the work profile are redacted.
    </string>
    <string name="provisioning_byod_recents_instructions">
        This test verifies that if a work profile is locked with a separate password, Recents views
        for applications in the work profile are redacted.\n
        Some devices may not lock as soon as the screen is turned off by default. On such devices,
        use the button below when requested to lock the work profile. Please skip these tests if
        "Recents" is absent.
    </string>
    <string name="provisioning_byod_recents_lock_now">Lock now</string>

    <string name="provisioning_byod_recents_verify_redacted">
        Verify recents are redacted when locked.
    </string>
    <string name="provisioning_byod_recents_verify_redacted_instruction">
        1) Follow the instructions on-screen to set a work password.\n
        2) Turn the screen off and on again, or use the "lock now" button, to lock the work profile.\n
        3) Go to home screen and then open Recents.\n
        4) Confirm that this "CTS Verifier" activity is shown in Recents.\n
        5) Confirm that the contents of the activity <b>are</b> hidden.\n
        6) Return to this page and pass the test.
    </string>
    <string name="provisioning_byod_recents_verify_not_redacted">
        Verify recents are not redacted when unlocked.
    </string>
    <string name="provisioning_byod_recents_verify_not_redacted_instruction">
        1) Press the Go button to go to security settings.\n
        2) Make work profile use one lock with personal profile.\n
        3) Open Recents.\n
        4) Confirm that this "CTS Verifier" activity is shown in Recents.\n
        5) Confirm that the contents of the activity <b>are not</b> hidden.\n
        6) Return to this page and pass the test.
    </string>
    <string name="provisioning_byod_recents_remove_password">
        The work profile still has a separate password. Please make it use one lock with the
        personal profile.
    </string>

    <string name="provisioning_byod_keychain">KeyChain test</string>
    <string name="provisioning_byod_keychain_info_start">
        In this test, you\'ll verify that keys generated by KeyChain keys are as usable as keys
        installed into KeyChain and that they can be hidden from users.\n
        The test has two parts:\n
        1) Testing that a generated key can be selectable by the user.\n
        2) Testing that a generated key can be hidden from users.\n
        \n
        Tap \"Prepare Test\" button below to begin.\n
    </string>
    <string name="provisioning_byod_keychain_info_first_test">
        Once you press \'Go\', a prompt titled \"Choose certificate\" should appear.\n
        Verify that the list in this dialog has one item, starting with \'cts-verifier-gen\'.
        Press \'Select\' to select it.\n
        If the test passes, you\'ll see the text \"Second test ready\" at the bottom.\n
        \n
        Press \'Go\'.\n
    </string>
    <string name="provisioning_byod_keychain_info_second_test">
        Once you press \'Run 2nd test\', the prompt should NOT appear.\n
        Verify that the prompt does not appear at all.\n
        Mark the test as passed if the text at the bottom shows \"PASSED (2/2)\"\n
    </string>

    <!-- Strings for DeskClock -->
    <string name="deskclock_tests">Alarms and Timers Tests</string>
    <string name="deskclock_tests_info">
        The Alarms and Timers tests verify that the Clock app implements the AlarmClock API properly.
    </string>
    <string name="deskclock_group_alarms">Alarms</string>
    <string name="deskclock_group_timers">Timers</string>

    <string name="dc_show_alarms_test">Show Alarms Test</string>
    <string name="dc_show_alarms_test_info">
        This test verifies that the SHOW_ALARMS API works.\n
        1. Press the "Show Alarms" button.\n
        2. Verify that a UI of the clock app is launched and displays the list of alarms\n
    </string>
    <string name="dc_show_alarms_button">Show Alarms</string>

    <string name="dc_set_alarm_with_ui_test">Set Alarm Test</string>
    <string name="dc_set_alarm_with_ui_test_info">
        This test verifies that the ACTION_SET_ALARM with no parameters API works.\n
        1. Press the "Set Alarm" button.\n
        2. Verify that the clock app is launched and displays a UI to manage alarms.\n
    </string>
    <string name="dc_set_alarm_button">Set Alarm</string>
    <string name="dc_set_alarm_verify_button">Verify</string>

    <string name="dc_start_alarm_test">Start Alarm Test</string>
    <string name="dc_start_alarm_test_info">
        This test verifies that the ACTION_SET_ALARM API actually starts an alarm.\n
        1. Press the "Start Alarm" button.\n
        2. Make sure the alarms UI is NOT shown\n
        3. Wait for the alarm to fire (may take up to 2 minutes)\n
        4. Verify that the alarm title is: "Start Alarm Test",\n
           the alarm is silent and vibrating (if the device supports vibrate).\n
        5. Dismiss the alarm.\n
        6. Verify that the alarm is not in the Clock\'s alarms list. The Verify button opens
           the alarm view.\n
    </string>
    <string name="dc_start_alarm_button">Start Alarm</string>

    <string name="dc_full_alarm_test">Full Alarm Test</string>
    <string name="dc_full_alarm_test_info">
        This test verifies that the ACTION_SET_ALARM API supports all extras.\n
        1. Press the "Create Alarm" button.\n
        2. Verify that you see one alarm with the following information:\n
           Name of alarm: Create Alarm Test. \n
           Vibrate: on. (if the device supports vibrate).\n
           Ringtone: silent. (if the device has a speaker).\n
           Time:  01:23. \n
           Repeating on: Monday and Wednesday. \n
    </string>
    <string name="dc_full_alarm_button">Create Alarm</string>

    <string name="dc_set_timer_with_ui_test">Set Timer Test</string>
    <string name="dc_set_timer_with_ui_test_info">
        This test verifies that the ACTION_SET_TIMER API with no paramters open the UI\n
        1. Press the "Set Timer" button.\n
        2. Verify that the an app is launched and displays a UI to manage timers.\n
    </string>
    <string name="dc_set_timer_with_ui_button">Set Timer</string>

    <string name="dc_start_timer_test">Start Timer Test</string>
    <string name="dc_start_timer_test_info">
        This test verifies that the ACTION_SET_TIMER API actually starts a timer\n
        1. Press the "Start Timer" button.\n
        2. Verify that a timer is started  and NO timers UI is shown.\n
        3. Verify that the timer named "Start Timer Test" rings after 30 seconds. Dismiss it.\n
        4. Verify that the timer is deleted after the dismissal.\n
    </string>
    <string name="dc_start_timer_button">Start Timer</string>

    <string name="dc_start_timer_with_ui_test">Start Timer With UI Test</string>
    <string name="dc_start_timer_with_ui_test_info">
        This test verifies that the ACTION_SET_TIMER API actually starts a timer with UI\n
        1. Press the "Start Timer" button.\n
        2. Verify that a timer is started  and the timers UI is shown with a timer named "Start Timer Test".\n
        3. Verify that the timer rings after 30 seconds.\n
    </string>
    <!-- Strings for LockConfirmBypassTest -->
    <string name="lock_confirm_test_title">Keyguard Password Verification</string>
    <string name="lock_set_button_text">Set password</string>
    <string name="lock_change_button_text">Change password</string>
    <string name="lock_confirm_message">
        This test verifies that the user is prompted for the current keyguard password before prompting for a new password.\n
        \nClick the \"Set password\" button if you currently don\'t have a password set.\n
        \nThen click the \"Change password\" button to change it. You should be prompted for the current password first. If you are not, then mark the test as failed.
    </string>

    <!-- String for Projection Tests -->
    <string name="test_category_projection">Projection Tests</string>
    <string name="projection_service_name">Projection Service</string>
    <string name="pca_info">This tests whether or not OpenGL projection works.\n
        You should see two "tumbling cubes." Tapping the screen should cause the cubes to explode.</string>
    <string name="pca_test">Projection Cube Test</string>
    <string name="pwa_info">This tests whether or displaying widgets and keyfocus navigation works.\n
        You should see four buttons on the bottom of the screen.\n
        Pressing the "up" and "down" buttons should highlight different buttons.\n
        Furthermore, the highlight should disappear when any button is touched, and the touched button should behave as usual.\n</string>
    <string name="pwa_test">Projection Widget Test</string>
    <string name="pwa_button_up">Up</string>
    <string name="pwa_button_down">Down</string>
    <string name="pwa_button">Button</string>
    <string name="pla_test">Projection Scrolling List Test</string>
    <string name="pla_info">This tests whether a projected list view will scroll properly\n
        You should see 50 list items and be able to scroll up and down the list</string>
    <string name="pva_test">Projection Video Playback Test</string>
    <string name="pva_info">This tests whether video playback works when projected.\n
        You should see a blinking white box and here a beep that is synchronized with each blink</string>
    <string name="pta_test">Projection Multitouch Test</string>
    <string name="pta_info">This tests whether multitouch works.\n
        Touching the screen should render a dot at the location you touched.\n
        Touching with additional fingers will render additoinal dots and you should be able to drag them around.</string>
    <string name="poa_test">Projection Offscreen Activity</string>
    <string name="poa_info">This tests whether a virtual display will continue to respond to and render even when the screen is off.\n
        Simply follow the instructions and the test will detect the pass conditions.\n
        Note that turning on the screen too early will result in a failure.</string>

    <!-- Strings for RotationVectorTest and GameRotationVectorTest -->
    <string name="rotation_vector_test">Rotation Vector Accuracy Test</string>
    <string name="snsr_rotation_vector_set_reference">
        Place the mobile device in a reference position. Note: to provide an accurate reference,
        align the device along one edge of a notebook laying on a table.</string>
    <string name="snsr_rotation_vector_reference_set">Reference position set.</string>
    <string name="snsr_rotation_vector_move_info">Move, shake, and rotate the device.</string>
    <string name="snsr_rotation_vector_set_final">Place the device back to the reference position.</string>
    <string name="snsr_rotation_vector_verification">Angular deviation [%1$4.1f %2$4.1f %3$4.1f]. Current: %4$f deg. Max tolerated: %5$f.</string>

    <!-- Strings for device admin tests -->
    <string name="device_admin_notification">This is device admin notification</string>
    <string name="device_admin_keyguard_disable_camera">Disable camera</string>
    <string name="device_admin_keyguard_disable_camera_instruction">
        Please press the Go button to lock the screen. Expected result is you cannot
        see the camera icon on the lower right corner of the screen, or if there is one, you cannot
        open the camera using it before you are asked for a password.\n
        Also, it shouldn\'t be possible to open the camera on the lockscreen by
        any other device specific gesture (such as double press on power button).
    </string>
    <string name="device_admin_disable_notifications">Disable notifications</string>
    <string name="device_admin_disable_notifications_instruction">
        Please press the Go button to lock the screen. Wait a few seconds to see
        if a notification appears. Expected result is no notifications appear.
        You should be able to see one after unlocking.
    </string>
    <string name="device_admin_disable_unredacted_notifications">Disable unredacted notifications</string>
    <string name="device_admin_disable_unredacted_notifications_instruction">
        Please press the Go button to lock the screen. Wait a few seconds to see
        if a notification appears. Expected result is a notification appear with
        its content hidden. You should be able to see the content after unlocking.
    </string>

    <!-- Strings common for BYOD and DO managed provisioning tests. -->
    <string name="afw_device_admin">CTS Verifier</string>

    <string name="provisioning_tests_byod">BYOD Provisioning tests</string>

    <string name="provisioning_tests_byod_custom_terms">Custom terms</string>
    <string name="provisioning_tests_byod_custom_terms_instructions">
        1. Please press the Go button to start the provisioning.\n
        2. Click \"View Terms\" button\n
        3. Expand \"Company ABC\" section. Verify the section content is \"Company Terms Content.\"\n
        4. Then hit back twice and stop the provisioning.
    </string>
    <string name="provisioning_tests_byod_custom_term_header1">Company ABC</string>

    <!-- Strings for BYOD managed provisioning (ByodFlowTestActivity) -->
    <string name="test_category_managed_provisioning">Managed Provisioning</string>
    <string name="provisioning_byod">BYOD Managed Provisioning</string>
    <string name="provisioning_byod_info">
        This test exercises the BYOD managed provisioning flow.
        Start by pressing the button on screen and follow instructions to finish the managed provisioning process.
        If your device has not been encrypted before, it will be encrypted and rebooted.
        After the provisioning process completes, return to this page and carry out further verifications.
        Note: the device will remain encrypted after the test which can only be disabled by factory reset.
    </string>
    <string name="provisioning_byod_start">Start BYOD provisioning flow</string>
    <string name="provisioning_byod_instructions">
        1. Press the button below to start the managed provisioning flow.
        If your device has not been encrypted before, it will reboot to apply encryption.
        After reboot follow instructions in the notification area to complete the provisioning.\n
        2. After successful provisioning, come back to this page. You might need to press a button on the final provisioning screen.
        Please press through the following verification steps.
        Allow a few seconds after returning from provisioning, as the profile owner test should automatically pass.\n
        \n
        If the device is being encrypted during step 1, it will remain encrypted After this test.
        The only way to disable the encryption is to factory reset the device.
    </string>
    <string name="provisioning_byod_profileowner">Profile owner installed</string>
    <string name="provisioning_byod_disk_encryption">Full disk encryption enabled</string>
    <string name="provisioning_byod_disk_encryption_default_key_toast">
        Cannot secure device with screen lock. Please re-run the test if you forgot to select
        the \"require PIN to boot\" option.
    </string>
    <string name="provisioning_byod_disk_encryption_no_pin_toast">
        No PIN is detected. Please re-run the test if you forgot to set a PIN.
    </string>
    <string name="provisioning_byod_set_screen_lock_dialog_message">
        Next, you will be asked to set a screen lock for the device.\n
        \n
        Please set \"1111\" as the new PIN (or any other PIN that you can memorize).
        You have to enter this PIN again later in order to finish the test.\n
        \n
        You may be asked whether the PIN should be required to boot the device. Please answer yes.\n
        \n
        Tap Go button to set a new screen lock.
    </string>
    <string name="provisioning_byod_remove_screen_lock_dialog_message">
        The test is almost finished. \n
        \n
        Next, you will be asked to remove the screen lock that you just set. Please enter \"1111\"
        (or your own PIN) when prompted for the old PIN, and do not set any new screen lock. This
        is to make sure that the device returns to the initial state after this test.\n
        \n
        Tap Go button to remove existing screen lock.
    </string>
    <string name="provisioning_byod_profile_visible">Profile-aware accounts settings</string>
    <string name="provisioning_byod_admin_visible">Profile-aware device administrator settings</string>
    <string name="provisioning_byod_workapps_visible">Badged work apps visible in Launcher</string>
    <string name="provisioning_byod_cross_profile_from_personal">Open app cross profiles from the personal side</string>
    <string name="provisioning_byod_cross_profile_from_work">Open app cross profiles from the work side</string>
    <string name="provisioning_app_linking">App links from the work side</string>
    <string name="provisioning_byod_cross_profile_app_personal">You selected the personal option.</string>
    <string name="provisioning_byod_cross_profile_app_work">You selected the Work option.</string>
    <string name="provisioning_byod_cross_profile_app_ctsverifier"> You selected the ctsverifier option </string>
    <string name="provisioning_byod_cross_profile_from_personal_instruction">
        Please press the Go button to start an action.\n
        \n
        You should be asked to choose either \"CTS Verifier\" or \"Work\" to complete the action.
        Pressing either should bring up a page stating your choice.\n
        \n
        Verify that you are prompted with the above choices and both options work as intended. Then mark this test accordingly.
    </string>
    <string name="provisioning_byod_cross_profile_from_work_instruction">
        Please press the Go button to start an action.\n
        \n
        You should be asked to choose either \"CTS Verifier\" or \"Personal\" to complete the action.
        Pressing either should bring up a page stating your choice.\n
        \n
        Verify that you are prompted with the above choices and both options work as intended. Then mark this test accordingly.
    </string>
    <string name="provisioning_byod_cross_profile_permission_control">Cross profile permission control</string>
    <string name="provisioning_byod_cross_profile_permission_control_info">
        This test exercises cross profile permission controls. Follow instructions above.
    </string>
    <string name="provisioning_byod_cross_profile_permission_control_instruction">
        For this test you need to install CrossProfileTestApp.apk by running
        adb install -r -t /path/to/CrossProfileTestApp.apk. Make sure the app is installed
        on both the personal and work profiles.\n
        Press the \"Prepare test\" button to enable configuring cross profile for the test app.\n
        Then press through the following verification steps.\n
        Mark the test as passed if all the following test cases are verified.
    </string>
    <string name="provisioning_byod_cross_profile_permission_control_prepare_button">Prepare test</string>
    <string name="provisioning_byod_cross_profile_permission_disabled_by_default">Cross profile permission disabled by default</string>
    <string name="provisioning_byod_cross_profile_permission_disabled_by_default_instruction">
        Press the Go button to go to Settings &gt; Apps &amp; notifications &gt; Special app access >\n
        Connected work and personal apps.\n
        Choose the \"Cross profile test app\" from the list and check that the switch is disabled.\n
        Go back to CTS Verifier and mark the test as \"Pass\" or \"Fail\".
    </string>
    <string name="provisioning_byod_cross_profile_permission_enabled">Cross profile permission enabled</string>
    <string name="provisioning_byod_cross_profile_permission_enabled_instruction">
        Press the Go button to open the \"Cross Profile Test App\".\n
        Press the \"Open Settings\" button to go to Settings &gt; Apps &amp; notifications &gt; Special app access >
        Connected work and personal apps > Cross profile test app, then enable the switch.\n
        Verify that when you go back it takes you to the \"Cross Profile Test App\".\n
        Now verify that it shows \"INTERACTING ACROSS PROFILES ALLOWED\" message.\n
        Go back to CTS Verifier and mark the test as \"Pass\" or \"Fail\".
    </string>
    <string name="provisioning_byod_cross_profile_permission_disabled">Cross profile permission disabled</string>
    <string name="provisioning_byod_cross_profile_permission_disabled_instruction">
        Press the Go button to open the \"Cross Profile Test App\".\n
        Press the \"Open Settings\" button to go to Settings &gt; Apps &amp; notifications &gt; Special app access >
        Connected work and personal apps > Cross profile test app, then disable the switch.\n
        Verify that when you go back it takes you to the \"Cross Profile Test App\".\n
        Now verify that it shows \"INTERACTING ACROSS PROFILES NOT ALLOWED\" message.\n
        Go back to CTS Verifier and mark the test as \"Pass\" or \"Fail\".
    </string>
    <string name="provisioning_byod_app_linking_instruction">
        Please press the Go button to start an action.\n
        \n
        You should be asked to choose either \"CTS Verifier\" or \"Personal\" to complete the action.\n
        - If you choose \"CTS Verifier\", you should see a page stating your chose \"CTS Verifier\".\n
        - If you choose \"Personal\", you should be presented with another dialog between \"CTS Verifier\"
        and some other apps. In this case, you should choose \"CTS verifier\".\n
        You should then see a page stating you chose \"Personal\".\n
        \n
        Verify that you are prompted with the above choices and both options work as intended. Then mark this test accordingly.
    </string>
    <string name="provisioning_byod_keyguard_disabled_features">Keyguard disabled features</string>
    <string name="provisioning_byod_keyguard_disabled_features_info">
        This test exercises Keyguard Disabled Features. Follow instructions above.
    </string>
    <string name="provisioning_byod_keyguard_disabled_features_instruction">
        Please go to Settings &gt; Security &gt; Device administrators and set
        \"CTS Verifier\" as active admin.\n
        After that please go to Settings &gt; Security &gt; Screen lock and set
        your screen lock password to \"testpassword\".\n
        Then please press the \"Prepare test\" button to disable trust agents.\n
        Then please press through the following verification steps.\n
        Note: After leaving the screen active admin status will be cleared.
        Please go to Settings &gt; Security &gt; Screen lock and set your
        password type to \"None\".
    </string>
    <string name="provisioning_byod_keyguard_disabled_features_prepare_button">Prepare test</string>
    <string name="provisioning_byod_keyguard_disabled_features_not_admin">CtsVerifier is not active admin. Please follow instructions.</string>
    <string name="provisioning_byod_disable_trust_agents">Disable trust agents</string>
    <string name="provisioning_byod_disable_trust_agents_instruction">
        Please press the Go button to go to Settings > Security. Then go to Trusted agents and\n
        check if the agents are shown as disabled by the administrator.
        Then please press Back and mark the test as \"Pass\" or \"Fail\".
    </string>
    <string name="provisioning_byod_fingerprint_disabled_in_settings">Fingerprint is disabled in Settings</string>
    <string name="provisioning_byod_fingerprint_disabled_in_settings_instruction">
        Please press the Go button to go to Settings > Security. Then go to Fingerprint and\n
        check if the disclaimer at the bottom of screen is altered to warn the users for\n
        fingerprint being disabled in lock screen. Then please press Back and mark the \n
        test as \"Pass\" or \"Fail\".
    </string>
    <string name="provisioning_byod_disable_fingerprint">Fingerprint disabled on keyguard</string>
    <string name="provisioning_byod_disable_fingerprint_instruction">
        Please press the Go button to lock the screen. Then try to log in using the fingerprint reader.\n
        Expected result is you cannot log in using your fingerprint.\n
        After you log back in, please navigate back to CtsVerifier and mark the test as \"Pass\" or \"Fail\".
    </string>
    <string name="provisioning_byod_disable_unredacted_notifications">Unredacted notifications disabled on keyguard</string>
    <string name="provisioning_byod_disable_unredacted_notifications_instruction">
        Please press the Go button to lock the screen. Wait a couple of seconds and look out for a
        notification from CtsVerifier.\n
        Expected result is the notification is shown as \"Contents hidden by policy\", you can not see the contents
        (Which would read \"This is a notification\"). You should be seeing a work badge.\n
        After you log back in, please navigate back to CtsVerifier and mark the test as \"Pass\" or \"Fail\".
    </string>
    <string name="provisioning_byod_work_notification">Work notification is badged</string>
    <string name="provisioning_byod_work_notification_instruction">
        Please press the Go button to trigger a notification.\n
        \n
        If a permission is requested, grant it and press the Go button again.\n
        \n
        Verify that the notification is badged (see sample badge below). Then mark this test accordingly.
    </string>
    <string name="provisioning_byod_notification_title">This is a notification</string>
    <string name="provisioning_byod_notification_public_title">Contents hidden by policy</string>

    <string name="provisioning_byod_disallow_apps_control">Disallow apps control</string>
    <string name="provisioning_byod_disallow_apps_control_info">
        This test exercises Disallow Apps Control. Follow instructions above.
    </string>
    <string name="provisioning_byod_disallow_apps_control_instruction">
        Please press the \"Prepare test\" button to disallow apps control for managed apps.\n
        Then please press through the following verification steps.\n
        Note: After leaving the screen disallow apps control restriction will be cleared.
    </string>
    <string name="provisioning_byod_disallow_apps_control_prepare_button">Prepare test</string>
    <string name="provisioning_byod_disabled_uninstall_button">Disabled uninstall button</string>
    <string name="provisioning_byod_disabled_uninstall_button_instruction">
        Please press the Go button to go to Settings > Apps.
        (If this device has a separate app for work settings, ignore the Go button and open that app manually from the launcher).\n
        Choose a managed app. Check that performing either \"Uninstall\" or \"Disable\" is not possible and triggers a support message when trying to do so.
        Then please press Back (or navigate back to this app using Recents) and mark the test as \"Pass\" or \"Fail\".
    </string>
    <string name="provisioning_byod_disabled_force_stop_button">Disabled force stop button</string>
    <string name="provisioning_byod_disabled_force_stop_button_instruction">
        Please press the Go button to go to Settings > Apps.
        (If this device has a separate app for work settings, ignore the Go button and open that app manually from the launcher).\n
        Choose a managed app. Check that performing \"Force stop\" is not possible and triggers a support message when trying to do so.
        Then please press Back (or navigate back to this app using Recents) and mark the test as \"Pass\" or \"Fail\".
    </string>
    <string name="provisioning_byod_disabled_app_storage_buttons">Disabled app storage buttons</string>
    <string name="provisioning_byod_disabled_app_storage_buttons_instruction">
        Please press the Go button to go to Settings > Apps.
        (If this device has a separate app for work settings, ignore the Go button and open that app manually from the launcher).\n
        Choose a managed (badged) app. Select \"Storage\". Check that performing \"Clear Data\" and \"Clear Cache\" is not possible and triggers a support message when trying to do so.
        Note: if an app has no data then tapping the clear data button has no effect anyway. Make sure you have selected
        the badged version of app with non-zero app data. Badged \"Settings\" may be a good candidate.
        Then please press Back (or navigate back to this app using Recents) and mark the test as \"Pass\" or \"Fail\".
    </string>

    <string name="provisioning_byod_work_status_icon">Work status icon is displayed</string>
    <string name="provisioning_byod_work_status_icon_instruction">
        Verify that the current status bar does not have a work status icon (see sample icon below).
        \n\n
        Please press the Go button to launch a work activity.
        \n\n
        Verify that the status bar now has a work status icon. Then mark this test accordingly.
    </string>
    <string name="provisioning_byod_work_status_icon_activity">
        Verify that the current status bar has a work status notification.
        \n\n
        Please press finish to return to the tests and then mark this test accordingly.
    </string>
    <string name="provisioning_byod_work_status_toast">Work status toast is displayed</string>
    <string name="provisioning_byod_work_status_toast_instruction">
        Please press the Go button to launch a work activity.
        \n\n
        Follow instructions and then return and mark this test accordingly.
    </string>
    <string name="provisioning_byod_work_status_toast_activity">
        Turn off the screen and wait a few seconds then turn on the screen again.
        \n\n
        Verify that a toast was displayed saying you are in the work profile.
        \n\n
        Please press finish to return to the tests and then mark this test accordingly.
    </string>
    <string name="provisioning_byod_profile_visible_instruction">
        Please press the Go button to open the Settings page.
        (If this device has a separate app for work settings, ignore the Go button and open that app manually from the launcher).\n
        Navigate to Accounts and confirm that:\n
        \n
        - Both Personal and Work categories(or Personal and Work tabs) exist.\n
        - \"Remove work profile\" or \"Uninstall\" exists under the Work category(or Work tab).\n
        \n
        Use the Back button (or navigate back to this app using Recents) to return to this page.
    </string>
    <string name="provisioning_byod_user_settings">Profile-aware user settings</string>
    <string name="provisioning_byod_user_settings_instruction">
        Please press the Go button to open the Settings page.
        (If this device has a separate app for work settings, ignore the Go button and open that app manually from the launcher.)\n
        Navigate to Accounts and confirm that:\n
        - There are two auto-sync options present, one for personal and one for work data (on the screen or in the overflow menu or in differernt tab).\n
        - De-selecting either option prompts a warning dialog.\n
        \n
        Use the Back button (or navigate back to this app using Recents) to return to this page.
    </string>
    <string name="provisioning_byod_admin_visible_instruction">
        Please press the Go button to open the Security page in Settings.
        (If this device has a separate app for work settings, ignore the Go button and open that app manually from the launcher).\n
        Navigate to Device admin apps and confirm that:\n
        \n
        - Device administrators outside of the work profile (if any) appear in the list, and the managed profile administrators are badged correctly.\n
        - A badged \"CTS Verifier\" exists, and is activated.\n
        - There is no option to deactivate the badged \"CTS Verifier\" version, only an option to \"Remove work profile\".\n
        \n
        Use the Back button (or navigate back to this app using Recents) to return to this page.
    </string>
    <string name="provisioning_byod_workapps_visible_instruction">
        Please press the Go button to start the launcher.
        Go to All Apps screen and scroll through it to confirm that:\n
        \n
        - A new set of work apps including CTS Verifier appear in the list.\n
        - Work badge overlay appears on work app\'s icon (see example icon below, color and style may vary).\n
        - The work badge overlay has the same size and position on each work app\'s icon.
        \n
        Then navigate back to this screen using Recents button.
    </string>

    <string name="provisioning_byod_app_settings">Profile-aware app settings</string>
    <string name="provisioning_byod_app_settings_instruction">
        Please press the Go button to open Apps page in settings.
        (If this device has a separate app for work settings, ignore the Go button and open that app manually from the launcher).\n
        \n
        Verify that Personal and Work exists in the dropdown list(or UI has Personal and Work tab). When selecting Work it will
        bring up apps setting in the work profile.\n
        \n
        Then use the Back button (or navigate back to this app using Recents) to return to this test and mark accordingly.
    </string>

    <string name="provisioning_byod_location_settings">Profile-aware location settings</string>
    <string name="provisioning_byod_location_settings_instruction">
        Please press the Go button to open Location page in settings.
        (If this device has a separate app for work settings, ignore the Go button and navigate to that app manually, if necessary).\n
        \n
        Verify that work profile entry exists in the page(or in Work tab) and it has a toggleable switch.\n
        Switch the main location switch at the top of the screen off. You should see the work profile location switch go disabled and into \'off\' state.\n
        Then switch the main location switch on again. You should see the work profile location switch go enabled and into its previous state.\n
        \n
        Then use the Back button (or navigate back to this app using Recents) to return to this test and mark accordingly.
    </string>
    <string name="provisioning_byod_location_failed">Failed to obtain location from any provider</string>
    <string name="provisioning_byod_location_no_provider">Cannot obtain location: no providers available.</string>
    <string name="provisioning_byod_location_trying">Trying to obtain location using providers: %1$s</string>
    <string name="provisioning_byod_location_obtained">Location has been obtained.</string>
    <string name="provisioning_byod_pass_message">PASS: %1$s</string>
    <string name="provisioning_byod_fail_message">FAIL: %1$s</string>
    <string name="provisioning_byod_location_test_activity">Location listener</string>
    <string name="provisioning_byod_location_checker_activity">Location checker</string>


    <string name="provisioning_byod_wifi_data_usage_settings">Profile-aware data usage settings (Wi-Fi)</string>
    <string name="provisioning_byod_wifi_data_usage_settings_instruction">
        Please press the Go button to open the Settings page.
        (If this device has a separate app for work settings, ignore the Go button and navigate to that app manually).\n
        \n
        Navigate to the \"Network &amp; Internet\" page and then click on \"Wi-Fi\" and then \"Wi-Fi data usage\".\n
        Confirm that \"All work apps\" section is present and that it is possible to see the data usage for work (badged) apps.\n
        (If the section is not present, this might be because work apps have not used Wi-Fi data yet. Ensure that you have used Wi-Fi data on a work app, then repeat these instructions.)\n
        \n
        Then use the Back button (or navigate back to this app using Recents) to return to this test and mark accordingly.
    </string>

    <string name="provisioning_byod_cellular_data_usage_settings">Profile-aware data usage settings (Mobile)</string>
    <string name="provisioning_byod_cellular_data_usage_settings_instruction">
        Please disable Wi-Fi connection on your device.\n
        Please make sure you have added a SIM card with data plan to your phone, have enabled data over mobile and in case of dual SIM devices, have selected the right SIM for data connection.\n
        Please carry out operations that will use mobile data using both badged and unbadged apps (e.g. visit a page in a browser).\n
        \n
        Please press the Go button to open the Settings page.
        (If this device has a separate app for work settings, ignore the Go button and navigate to that app manually).\n
        \n
        Navigate to the \"Network &amp; Internet\" page and then click on \"Mobile network\" and then \"App data usage\".\n
        Confirm that \"All work apps\" section is present and that it is possible to see the data usage for work (badged) apps.\n
        \n
        Then use the Back button (or navigate back to this app using Recents) to return to this test and mark accordingly.
    </string>

    <string name="provisioning_byod_cred_settings">Profile-aware trusted credential settings</string>
    <string name="provisioning_byod_cred_settings_instruction">
        Please press the Go button to open the Security settings.
        Navigate to "Trusted credentials" and wait for the UI to load.
        After the list is loaded, confirm that:\n
        \n
        The page list credentials for both "Personal" and "Work" profiles.\n
        \n
        Then use the Back button to return to this test and mark accordingly.
    </string>

    <string name="provisioning_byod_print_settings">Profile-aware printing settings</string>
    <string name="provisioning_byod_print_settings_instruction">
        Please press the Go button to open the Printing settings.
        (If this device has a separate app for work settings, ignore the Go button and open that app manually from the launcher).\n
        \n
        Verify that work profile exists in the dropdown list and selecting it will
        bring up printing setting in the work profile.\n
        \n
        Then use the Back button (or navigate back to this app using Recents) to return to this test and mark accordingly.
    </string>

    <string name="provisioning_byod_cross_profile_intent_filters">Cross profile intent filters are set</string>

    <string name="provisioning_byod_nfc_beam">Disable Nfc beam</string>
    <string name="provisioning_byod_nfc_beam_allowed_instruction">
        Please press the Go button to test if Nfc beam can be triggered in the work profile.\n
        \n
        For the first test, press \"Send manual beam\" to trigger a beam, then bump into another device to send the tag. Verify that the tag is successfully received.\n
        \n
        For the second test, press \"Send share intent\" to trigger a beam, then bump into another device to send the tag. Verify that the tag is successfully received.\n
        \n
        Then use the Back button to return to this test and mark accordingly.
    </string>
    <string name="provisioning_byod_nfc_beam_disallowed_instruction">
        Please press the Go button to test if Nfc beam is disallowed by policy
        \n
        Verify that Nfc beam is not triggered when pressing the button.\n
        \n
        Then use the Back button to return to this test and mark accordingly.
    </string>
    <string name="provisioning_byod_send_manual_beam">Send manual beam</string>
    <string name="provisioning_byod_send_share_intent">Send share intent</string>
    <string name="provisioning_byod_cannot_resolve_beam_activity">Cannot find beam activity</string>

    <string name="test_failed_cannot_start_intent">Cannot start the given intent.</string>
    <string name="provisioning_byod_no_activity">Cannot communicate with activity in the work profile.</string>
    <string name="provisioning_byod_delete_profile">Initiate deletion of work profile.</string>
    <string name="provisioning_byod_profile_deleted">Work profile deleted.</string>
    <string name="provisioning_byod_disabled">Device provisioning is not enabled.</string>
    <string name="provisioning_button_finish">Finish</string>
    <string name="provisioning_cross_profile_chooser">Choose an app to complete action</string>

    <string name="provisioning_byod_no_gps_location_feature">No GPS feature present. Skip test.</string>
    <string name="provisioning_byod_location_mode_enable">Enable location</string>
    <string name="provisioning_byod_location_mode_enable_missing_permission">Permission missing</string>
    <string name="provisioning_byod_location_mode_enable_instruction">
        This test verifies that the location can be enabled for the managed profile apps.\n
        1. Press the \"Prepare Test\" button to go to the location settings page, set both the main location switch and the work profile location switch enabled.\n
        2. Return using back button and press Go button to check if location is available. If prompted, accept the location permission.\n
        3. Check the result message below and mark the test accordingly.\n
        \n
        If the test fails to obtain location, try to enable as many location services as possible and move outside to make GPS work.
    </string>

    <string name="provisioning_byod_location_mode_disable">Disable location</string>
    <string name="provisioning_byod_location_mode_time_out_toast">Timeout waiting for gps location change</string>
    <string name="provisioning_byod_location_mode_disable_instruction">
        This test verifies that the location can be disabled for the managed profile apps through the main location switch.\n
        1. Press the \"Prepare Test\" button to go to the location settings page, set the main location switch disabled.\n
        2. Return using back button and press Go button to check if location is available.  If prompted, accept the location permission.\n
        3. Check the result message below and mark the test accordingly.\n
    </string>

    <string name="provisioning_byod_work_location_mode_disable">Disable location for work profile</string>
    <string name="provisioning_byod_work_location_mode_disable_instruction">
        This test verifies that the location can be disabled for the managed profile apps through work profile location switch.\n
        1. Press the \"Prepare Test\" button to go to the location settings page, set the work location switch disabled while the main location switch is still enabled.\n
        2. Return using back button and press Go button to check if location is available. If prompted, accept the location permission.\n
        3. Check the result message below and mark the test accordingly.\n
    </string>
    <string name="provisioning_byod_primary_location_when_work_disabled">Primary receives updates while work location is disabled</string>
    <string name="provisioning_byod_primary_location_when_work_disabled_instruction">
        This test verifies that location is still available by primary profile when location updates are disabled for managed profile apps through work profile location switch.\n
        1. Press the \"Prepare Test\" button to go to the location settings page, set the work location switch disabled while the main location switch is still enabled.\n
        2. Return using back button and press Go button to check if location is available. If prompted, accept the location permission.\n
        3. Check the result message below and mark the test accordingly.\n
        \n
        If the test fails to obtain location, try to enable as many location services as possible and move outside to make GPS work.
    </string>

    <string name="provisioning_byod_personal_ringtones">Personal ringtones</string>
    <string name="provisioning_byod_personal_ringtones_instruction">
        This test verifies that personal ringtones can be changed independently of work profile ringtones.\n
        1. Press the go button to go to the sound settings page. Under \"Work profile sounds\" turn off the \"use personal profile sounds\" switch.\n
        2. Change the personal \"Phone ringtone\", \"Default notification sound\", and \"Default alarm sound\" settings to different values. Skip any of these settings that do not exist.\n
        3. Read the values displayed under \"Work phone ringtone\", \"Default work notification sound\", and \"Default work alarm sound\". If any of the settings in #2 did not exist, skip the\n
            corresponding work profile setting."\n
        4. Verify that the work sounds are different to the personal values just set.\n
        5. Go back to the cts-verifier tests using the back button, then mark the test accordingly.\n
    </string>

    <string name="provisioning_byod_uninstall_work_app">Uninstall work app from launcher</string>
    <string name="provisioning_byod_uninstall_work_app_instruction">
        This test verifies that work profile apps can be uninstalled.\n
        1. You should have received NotificationBot.apk together with the CTS verifier. If you built the CTS verifier yourself, build the NotificationBot.apk by issuing the following command on the host:\n
            make NotificationBot\n
        2. Upload the NotificationBot.apk to your device by issuing the following command on the host:\n
            adb push /path/to/NotificationBot.apk /data/local/tmp/\n
        3. Pres \"Go\" to install NotificationBot.apk on your work profile.\n
        4. If you are presented with a dialog to allow installing of unknown apps, enable that option.\n
        5. Go to home screen.\n
        6. Verify that the newly installed app, \"CTS Robot\", can successfully be uninstalled from the launcher.\n
    </string>
    <string name="provisioning_byod_uninstall_work_app_install_work_app">Install work app</string>

    <string name="provisioning_byod_launch_work_tab">Launch work tab in launcher</string>
    <string name="provisioning_byod_launch_work_tab_instruction">
        This test verifies that the work tab (if tabs are supported) can be launched.\n
        1. Press \"Go\".\n
        2. If this device supports tabs, verify that you have landed on the work tab.\n
        3. If this device doesn\'t support tabs, verify that you have landing on the all apps page .\n
    </string>

    <string name="provisioning_byod_turn_off_work">Turn off work profile</string>
    <string name="provisioning_byod_turn_off_work_info">This test verifies device behaviors when turning off work profile.</string>
    <string name="provisioning_byod_turn_off_work_instructions">
        This test verifies the device behavior when work profile is turned off.\n
        Please exercise the following tests in sequence.\n
        The button below can be used to open the Settings page where you can toggle work profile.\n
        (If this device has a separate app for work settings, ignore the button and open that app manually from the launcher).\n
    </string>
    <string name="provisioning_byod_turn_off_work_prepare_button">Open Settings to toggle work profile</string>

    <string name="provisioning_byod_turn_off_work_prepare_notifications">Prepare a work notification</string>
    <string name="provisioning_byod_turn_off_work_prepare_notifications_instruction">
        This is a test setup step.\n
        1. Press the go button to send a work notification. (if a permission is requested, grant it and press the go button again). \n
        2. Verify that the notification is displayed and mark this test as passed.\n
        (Note: in the following test, you will be asked to verify the notification disappears after work profile is turned off.)
    </string>

    <string name="provisioning_byod_turn_off_work_turned_off">Please turn off work profile</string>
    <string name="provisioning_byod_turn_off_work_turned_off_toast">Open settings to turn off work profile, using the button above.</string>

    <string name="provisioning_byod_turn_off_work_notifications">Notifications when work profile is off</string>
    <string name="provisioning_byod_turn_off_work_notifications_instruction">
        Verify that the previously-shown work notification has now disappeared.
    </string>

    <string name="provisioning_byod_turn_off_work_launcher">Starting work apps when work profile is off</string>
    <string name="provisioning_byod_turn_off_work_launcher_instruction">
        This test verifies that work applications cannot be started if work profile is off.\n
        1. Open settings to turn work profile back on, either manually or using the "Open Settings to toggle work" on the previous page.\n
        2. Add a work app to your home screen.\n
        3. Turn work profile off from Settings.\n
        4. Press home to go to the launcher.\n
        5. Verify that the work app is greyed out.\n
        6. Tap on the work app.\n
        7. Verify that the application does not start.\n
    </string>

    <string name="provisioning_byod_turn_off_work_turned_on">Please turn work profile back on</string>
    <string name="provisioning_byod_turn_off_work_turned_on_toast">Open settings to turn work profile back on, either manually or using the button above.</string>

    <string name="provisioning_byod_turn_on_work_icon">Status bar icon when work profile is on</string>
    <string name="provisioning_byod_turn_on_work_icon_instruction">
        Now that work profile is back on, please verify that the status bar icon for work profile off is no longer visible.
    </string>

    <string name="provisioning_byod_turn_on_work_launcher">Starting work apps when work profile is on</string>
    <string name="provisioning_byod_turn_on_work_launcher_instruction">
        Now that work profile is back on, please go to the launcher and verify that you can start a work application.
    </string>

    <string name="provisioning_byod_organization_info">Organization Info</string>
    <string name="provisioning_byod_organization_name_hint">Name</string>
    <string name="provisioning_byod_set_organization_info_button_text">Set</string>
    <string name="provisioning_byod_organization_info_instructions">
    This test verifies that the Organization Info was set correctly.
    You can only do this test after you have done "select work lock" test.\n
        1. Enter your organization name.\n
        2. Press the Set button to set organization Info.\n
        3. Press the Go button to open a dialog to confirm work credentials.\n
        (If this device has a separate app for work settings, ignore the Go button and open the work lock screen manually to confirm, if necessary.)\n
        4. Verify that the header text has organization name as set by you.\n
    </string>

    <string name="provisioning_byod_no_secure_lockscreen">No work lockscreen password set. Please run \"Select work lock test\" and rerun this test</string>

    <string name="provisioning_byod_parent_profile_password">Personal password test</string>
    <string name="provisioning_byod_parent_profile_password_description">
        This test verifies that the password on the personal side can be chosen from within a managed profile.\n

        1. Press the Go button to set a new password for the personal side.\n
        2. Lock and unlock the screen to verify that the personal side password was set correctly.\n
    </string>
    <string name="provisioning_byod_work_profile_widget">Work profile widget</string>
    <string name="provisioning_byod_work_profile_widget_info">Verify that work profile widget can be added into launcher</string>
    <string name="provisioning_byod_work_profile_widget_description">
        This test verifies that the widget in work profile can be added into Launcher.\n

        1. Go to home screen.\n
        2. Add the widget titled \"CTS Verifier\" and badged with work profile briefcase to the home screen.\n
        3. If you can add the widget to the home screen, please select \"pass\". Otherwise, select \"fail\".
    </string>

    <!-- Strings for DeviceOwnerNegativeTestActivity -->
    <string name="negative_device_owner">No Device Owner Tests</string>
    <string name="device_owner_negative_category">No Device Owner Tests</string>
    <string name="device_owner_provisioning_negative">Device owner provisioning</string>
    <string name="device_owner_provisioning_negative_info">The device owner provisioning test verifies that setting up a corporate owned device can only be done on a factory reset device.\n\nPlease click the "Start provisioning" button, and when you see a warning dialog telling the device is already set up, select "pass". Otherwise, select "fail".</string>
    <string name="start_device_owner_provisioning_button">Start provisioning</string>
    <string name="enterprise_privacy_quick_settings_negative">Quick settings disclosure</string>
    <string name="enterprise_privacy_quick_settings_negative_info">
        Please do the following:\n
        1) Open and fully expand Quick Settings.\n
        2) Verify that at the bottom of Quick Settings, you are not told the device is managed.\n
        3) Close Quick Settings.\n
        \n
        If this device does not have quick settings, please skip this test and mark it passing
    </string>
    <string name="enterprise_privacy_keyguard_negative">Keyguard disclosure</string>
    <string name="enterprise_privacy_keyguard_negative_info">
        Please do the following:\n
        1) Press the Go button to open Settings.\n
        2) Navigate to \"Security\" &gt; \"Screen lock\" and select the first screen lock type that is not \"None\".\n
        3) Use the Back button to return to this page.\n
        4) Lock the device.\n
        5) Verify that on the lock screen, you are not told the device is managed.\n
        6) Unlock the device.\n
        7) Repeat steps (1) through (6) for each screen lock type other than \"None\".
    </string>
    <string name="enterprise_privacy_add_account_negative">Add account disclosure</string>
    <string name="enterprise_privacy_add_account_negative_info">
        Please do the following:\n
        1) Press the Go button to open Settings.\n
        2) In the screen that opens, verify that you are not told that the device is managed.\n
        3) Use the Back button to return to this page.
    </string>

    <!-- Strings for DeviceOwnerPositiveTestActivity -->
    <string name="positive_device_owner">Device Owner Tests</string>
    <string name="device_owner_positive_tests">Device Owner positive tests</string>
    <string name="device_owner_positive_tests_instructions">
            The positive device owner tests verify policies on a corporate owned device.\n
            Press below button first, follow steps described in the dialog that pops up,
            then proceed to the test cases.\n
            Pressing \'back\', \'pass\' or \'fail\' on this test page will remove the device owner.\n
            Alternatively, you can run the \'Remove device owner\' test. Ideally, that test should
            be run last so that it does not interfere with other tests.
    </string>
    <string name="device_owner_positive_tests_info">
            The positive device owner tests verify policies on a corporate owned device.\n
            Press below button first, follow steps described in the dialog that pops up,
            then proceed to the test cases.\n
            Pressing \'back\', \'pass\' or \'fail\' on this test page will remove the device owner.\n
            Alternatively, you can run the \'Remove device owner\' test. Ideally, that test should
            be run last so that it does not interfere with other tests.
    </string>
    <string name="device_owner_positive_category">Device Owner Tests</string>
    <string name="set_device_owner_button_label">Set up device owner</string>
    <string name="set_device_owner_dialog_title">Set up device owner</string>
    <string name="grant_headless_system_user_permissions">
            For this test you need to grant some permissions to CtsVerifier by running\n
            adb shell pm grant --user current com.android.cts.verifier android.permission.INTERACT_ACROSS_USERS\n
            adb shell pm grant --user 0 com.android.cts.verifier android.permission.INTERACT_ACROSS_USERS\n
            adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier\n\n
    </string>
    <string name="set_device_owner_dialog_text">
            For this test you need to install CtsEmptyDeviceOwner.apk by running\n
            adb install -r -t /path/to/CtsEmptyDeviceOwner.apk\n
            Then you need to set this app as the device owner by running\n
            adb shell dpm set-device-owner --user 0 com.android.cts.emptydeviceowner/.EmptyDeviceAdmin
    </string>
    <string name="set_device_owner_headless_dialog_text">
            For this test you need to set the device owner by running\n
            adb shell dpm set-device-owner --user 0 com.android.cts.verifier/.managedprovisioning.DeviceAdminTestReceiver
    </string>
    <string name="device_owner_remove_device_owner_test">Remove device owner</string>
    <string name="device_owner_remove_device_owner_test_info">
            Please check in Settings &gt; Security &gt; Device Administrators if CTSVerifier is
            Device Owner. Then press the button below, and check that CTSVerifier is NOT Device
            Owner anymore.
    </string>
    <string name="remove_device_owner_button">Remove device owner</string>
    <string name="device_owner_check_device_owner_test">Check device owner</string>
    <string name="device_owner_check_profile_owner_test">Check profile owner</string>
    <string name="device_owner_check_user_affiliation_test">Check user affiliation</string>
    <string name="device_owner_incorrect_device_owner">Missing or incorrect device owner: CTSVerifier is not DO for user %1$d!</string>
    <string name="device_owner_incorrect_profile_owner">Missing or incorrect profile owner: CTSVerifier is not PO for user %1$d!</string>
    <string name="device_owner_user_not_affiliated">User %1$d! is not affiliated</string>
    <string name="device_owner_wifi_lockdown_test">WiFi configuration lockdown</string>
    <string name="device_owner_wifi_lockdown_info">
            Please enter the SSID and auth method of an available WiFi Access Point and press the button to create a
            WiFi configuration. This configuration must NOT EXIST yet (you can use Settings &gt; WiFi to verify - if it exists,
            then select the option to forget it). If the Wifi requires a password, wait for the \'Could not connect to the wifi network\'
            notification, tap the notification, set the password and connect to the network.
            The test cases are going to use this config. Please go through test cases in order (from top to bottom).
    </string>
    <string name="switch_wifi_lockdown_off_button">WiFi config lockdown off</string>
    <string name="switch_wifi_lockdown_on_button">WiFi config lockdown on</string>
    <string name="wifi_lockdown_go_settings_wifi_button">Go to WiFi Settings</string>
    <string name="device_owner_wifi_key_management_none_button">None</string>
    <string name="device_owner_wifi_key_management_wpa_button">WPA</string>
    <string name="device_owner_wifi_key_management_wep_button">WEP</string>
    <string name="create_wifi_config_button_label">Create WiFi configuration</string>
    <string name="wifi_lockdown_add_network_failed_dialog_title">WiFi configuration could not be created</string>
    <string name="wifi_lockdown_add_network_failed_dialog_text">
            There was an error during creation of WiFi configuration. Check if WiFi is switched on.
    </string>
    <string name="device_owner_wifi_config_unlocked_modification_test">Unlocked config is modifiable in Settings</string>
    <string name="device_owner_wifi_config_unlocked_modification_test_info">
            Please press the button to ensure WiFi config lockdown is NOT in effect. Then go to
            Settings &gt; WiFi and see if the CTSVerifier created WiFi configuration can be edited.
            Please make sure you can connect to it. The test is successful if the config is editable
            and can be connected to.
    </string>
    <string name="device_owner_wifi_config_unlocked_modification_test_info" product="automotive">
            Please press the button to ensure WiFi config lockdown is NOT in effect. Then go to
            Settings &gt; WiFi and see if the CTSVerifier created WiFi configuration is editable
            (it\'s ok if it\'s not editable, but then take note so the next test can be skipped).
            Please make sure you can connect to it. The test is successful if the config can be
            connected to.
    </string>
    <string name="device_owner_wifi_config_locked_modification_test">Locked config is not modifiable in Settings</string>
    <string name="device_owner_wifi_config_locked_modification_test_info">
            Please press the button to ensure WiFi config lockdown is in effect. Then go to
            Settings &gt; WiFi and see if the CTSVerifier created WiFi configuration can NOT be edited
            or removed. The test is successful if the config is NOT modifiable.
    </string>
    <string name="device_owner_wifi_config_locked_modification_test_info" product="automotive">
            NOTE: if the WiFi was not editable in the previous step, please skip this test.
            Please press the button to ensure WiFi config lockdown is in effect. Then go to
            Settings &gt; WiFi and see if the CTSVerifier created WiFi configuration can NOT be edited
            or removed. The test is successful if the config is NOT modifiable.
    </string>
    <string name="device_owner_wifi_config_locked_connection_test">Locked config can be connected to</string>
    <string name="device_owner_wifi_config_locked_connection_test_info">
            Please press the button to ensure WiFi config lockdown is in effect. Then go to
            Settings &gt; WiFi and see if the CTSVerifier created WiFi configuration can be connected
            to manually. The test is successful if the connection can be established.
    </string>
    <string name="device_owner_wifi_config_unlocked_removal_test">Unlocked config can be forgotten in Settings</string>
    <string name="device_owner_wifi_config_unlocked_removal_test_info">
            Please press the button to ensure WiFi config lockdown is NOT in effect. Then go to
            Settings &gt; WiFi and see if the CTSVerifier created WiFi configuration can be forgotten.
            The test is successful if the config could be forgotten and is removed from the list of saved configs.
    </string>
    <string name="device_owner_disable_statusbar_test">Disable status bar</string>
    <string name="device_owner_disable_statusbar_test_info">
            Please press the below button to disable the status bar and verify that quick settings and notifications
            are no longer available.\n
            Next, press the button to reenable the status bar and verify that quick settings and notifications
            are available again.\n
            Please mark the test accordingly.
    </string>
    <string name="device_owner_disable_statusbar_button">Disable status bar</string>
    <string name="device_owner_reenable_statusbar_button">Reenable status bar</string>
    <string name="device_owner_disable_keyguard_test">Disable keyguard</string>
    <string name="device_owner_disable_keyguard_test_info">
            Before running this test, please make sure you have not set any device lockscreen password.\n
            Please press the below button to disable the keyguard. Press the power button on your device to
            switch off the screen. Then press the power button to switch the screen back on and verify that
            no keyguard was shown.\n
            Next, press the button to reenable the keyguard and repeat the above steps, this time verifying that
            a keyguard was shown.\n
            Please mark the test accordingly.
    </string>
    <string name="device_owner_disable_keyguard_button">Disable keyguard</string>
    <string name="device_owner_reenable_keyguard_button">Reenable keyguard</string>
    <string name="device_owner_lock_task_ui_test">LockTask UI</string>
    <string name="device_owner_lock_task_ui_test_info">
            The following tests verify the configurable UI during LockTask, a special mode that
            prevents the user from leaving the current application.\n\n
            Please make sure the lock screen is turned on before the test. Press the button below to
            start LockTask mode. Then mark each item as \'pass\' or \'fail\' according to the
            instructions.\n\n
            Finally, execute the last test item to leave LockTask mode.
    </string>
    <string name="start_lock_task_button_label">Start LockTask mode</string>
    <string name="device_owner_lock_task_ui_default_test">Default LockTask UI</string>
    <string name="device_owner_lock_task_ui_default_test_info">
            Press the button below to reset to default LockTask UI.
            Observe the following UI restrictions. Mark the test as \'pass\' only if ALL of the
            requirements below are met.\n\n
            1) If the device under test (DUT) has a status bar: nothing is shown in the status bar,
            including notification icons, connectivity icons, battery status, clock, etc.\n
            2) If the device under test (DUT) has a status bar: the status bar can\'t be expanded.
            That is, the \'swipe-down\' gesture doesn\'t work for the status bar.\n
            3) The software Home button is hidden.\n
            4) If the device under test (DUT) supports Overview: the software Overview button is
            hidden and the Overview gesture (swipe-up) does not work.\n
            5) Long-press the power button. The power button menu, which usually shows the power-off
            button, etc., isn\'t shown.\n
            6) Press the power button to turn off the screen, and press it again to turn the screen
            back on. Lock screen shouldn\'t be shown.\n
            7) The assistant gesture isn\'t available.\n\n
    </string>
    <string name="device_owner_lock_task_ui_system_info_test">Enable system info</string>
    <string name="device_owner_lock_task_ui_system_info_test_info">
            Press the button below to enable system info. Observe the system info area of the status
            bar is now enabled. This includes the clock, connectivity info, battery info, etc.\n\n
            The rest of the UI restrictions should still apply:\n
            1) If the device under test (DUT) has a status bar: notification icons are still hidden
            on the status bar.\n
            2) If the device under test (DUT) has a status bar: the status bar can\'t be expanded.
            That is, the \'swipe-down\' gesture doesn\'t work for the status bar.\n
            3) The software Home button is hidden.\n
            4) If the device under test (DUT) supports Overview: the software Overview button is
            hidden and the Overview gesture (swipe-up) does not work.\n
            5) Long-press the power button. The power button menu, which usually shows the power-off
            button, etc., isn\'t shown.\n
            6) Press the power button to turn off the screen, and press it again to turn the screen
            back on. Lock screen shouldn\'t be shown.\n
            7) The assistant gesture isn\'t available.\n\n
            Mark the test as \'pass\' only if ALL of the above requirements are met.\n
    </string>
    <string name="device_owner_lock_task_ui_notifications_test">Enable notifications</string>
    <string name="device_owner_lock_task_ui_notifications_test_info">
            Press the button below to enable notifications. Observe the notification icons on the
            status bar are now enabled and the Home button is shown. The status bar can also be
            expanded to show the notifications. However, all Settings UI should remain invisible,
            including Quick Settings and any link to the Settings app.\n\n
            The rest of the UI restrictions should still apply:\n
            1) If the device under test (DUT) has a status bar: system info area is still hidden on
            the status bar.\n
            2) If the device under test (DUT) supports Overview: the software Overview button is
            hidden and the Overview gesture (swipe-up) does not work.\n
            3) Holding the Home button and swiping to the right does not bring up other tasks.\n
            4) Long-press the power button. The power button menu, which usually shows the power-off
            button, etc., isn\'t shown.\n
            5) Press the power button to turn off the screen, and press it again to turn the screen
            back on. Lock screen shouldn\'t be shown.\n
            6) The assistant gesture isn\'t available.\n\n
            Mark the test as \'pass\' only if ALL of the above requirements are met.\n
    </string>
    <string name="device_owner_lock_task_ui_home_test">Enable Home button</string>
    <string name="device_owner_lock_task_ui_home_test_info">
            Press the button below to enable the Home button. Observe the Home button is now
            enabled.\n\n
            The rest of the UI restrictions should still apply:\n
            1) If the device under test (DUT) has a status bar: nothing is shown in the status bar,
            including notification icons, connectivity icons, battery status, clock, etc.\n
            2) If the device under test (DUT) has a status bar: the status bar can\'t be expanded.
            That is, the \'swipe-down\' gesture doesn\'t work for the status bar.\n
            3) If the device under test (DUT) supports Overview: the software Overview button is
            hidden and the Overview gesture (swipe-up) does not work.\n
            4) Holding the Home button and swiping to the right does not bring up other tasks.\n
            5) Long-press the power button. The power button menu, which usually shows the power-off
            button, etc., isn\'t shown.\n
            6) Press the power button to turn off the screen, and press it again to turn the screen
            back on. Lock screen shouldn\'t be shown.\n
            7) The assistant gesture isn\'t available.\n\n
            Mark the test as \'pass\' only if ALL of the above requirements are met.\n
    </string>
    <string name="device_owner_lock_task_ui_recents_test">Enable Overview button</string>
    <string name="device_owner_lock_task_ui_recents_test_info">
            If the device under test (DUT) does not support Overview: mark this test as \'pass\'.\n
            Otherwise:\n
            Press the button below to enable the Overview button. Observe the Home button is now
            enabled. Press the Overview button or perform the Overview gesture
            (swipe up) and verify the Overview view can be opened.\n\n
            The rest of the UI restrictions should still apply:\n
            1) Nothing is shown in the status bar, including notification icons, connectivity icons,
            battery status, clock, etc.\n
            2) The status bar can\'t be expanded. That is, the \'swipe-down\' gesture doesn\'t work
            for the status bar.\n
            3) Long-press the power button. The power button menu, which usually shows the power-off
            button, etc., isn\'t shown.\n
            4) Press the power button to turn off the screen, and press it again to turn the screen
            back on. Lock screen shouldn\'t be shown.\n
            5) The assistant gesture isn\'t available.\n\n
            Mark the test as \'pass\' only if ALL of the above requirements are met.\n
    </string>
    <string name="device_owner_lock_task_ui_global_actions_test">Enable global actions</string>
    <string name="device_owner_lock_task_ui_global_actions_test_info">
            If the device under test (DUT) does not support global actions: mark this
            test as \'pass\'.\n
            Otherwise:\n
            Press the button below to enable global actions (a.k.a. power button menu). Long-press
            the power button and verify a menu containing power-off and restart buttons is shown.
            This menu can\'t contain any UI that allows the user to change system settings (such as
            airplane mode switch) or access the Settings app.\n\n
            The rest of the UI restrictions should still apply:\n
            1) Nothing is shown in the status bar, including notification icons, connectivity icons,
            battery status, clock, etc.\n
            2) The status bar can\'t be expanded. That is, the \'swipe-down\' gesture doesn\'t work
            for the status bar.\n
            3) The software Home button is hidden.\n
            4) The software Overview button is hidden and the Overview gesture (swipe-up) does not
            work.\n
            5) Press the power button to turn off the screen, and press it again to turn the screen
            back on. Lock screen shouldn\'t be shown.\n
            6) The assistant gesture isn\'t available.\n\n
            Mark the test as \'pass\' only if ALL of the above requirements are met.\n
    </string>
    <string name="device_owner_lock_task_ui_keyguard_test">Enable keyguard</string>
    <string name="device_owner_lock_task_ui_keyguard_test_info">
            Press the button below to enable keyguard. Press the power button to turn off the screen
            and press it again to turn the screen back on. Verify that the lock screen is shown.\n\n
            The rest of the UI restrictions should still apply, both on the lock screen and after
            the lock screen is dismissed:\n
            1) Nothing is shown in the status bar, including notification icons, connectivity icons,
            battery status, clock, etc.\n
            2) The status bar can\'t be expanded. That is, the \'swipe-down\' gesture doesn\'t work
            for the status bar, even on the lock screen.\n
            3) The software Home button is hidden.\n
            4) The software Overview button is hidden and the Overview gesture (swipe-up) does not
            work.\n
            5) Long-press the power button. The power button menu, which usually shows the power-off
            button, etc., isn\'t shown.\n
            6) The assistant gesture isn\'t available.\n\n
            Mark the test as \'pass\' only if ALL of the above requirements are met.
    </string>
    <string name="device_owner_lock_task_ui_stop_lock_task_test">Stop LockTask mode</string>
    <string name="device_owner_lock_task_ui_stop_lock_task_test_info">
            Press the button below to exit LockTask mode.\n\n
            Observe that the UI has returned to the normal, unrestricted state, and is no longer
            subject to any LockTask restriction.\n\n
            Mark the test as \'pass\' or \'fail\' accordingly.
    </string>
    <string name="device_owner_lockscreen_secure">Please remove lockscreen password</string>
    <string name="device_profile_owner_permission_lockdown_test">Permissions lockdown</string>
    <string name="device_profile_owner_permission_lockdown_test_instructions">
            Select each of the three grant states for the permission shown below in turn.\n
            Now open application settings, select Permissions, and verify if the following behavior is observed.\n
            <b>Grant:</b> Permission is granted to the app and cannot be changed through the settings UI. A support message is available through an accessible mechanism, such as by attempting to change it or via an information button.\n
            <b>Let user decide:</b> Permission state can be changed through the settings UI.\n
            <b>Deny:</b> Permission is denied to the app and cannot be changed through the settings UI. A support message is available through an accessible mechanism, such as by attempting to change it or via an information button.\n
            Please mark the test accordingly.
    </string>
    <string name="device_owner_permission_lockdown_test_info">
        This test checks if the permissions state in settings UI is locked down according to the state set by the device owner.
    </string>
    <string name="device_owner_disallow_usb_file_transfer_test">Disallow USB file transfer</string>
    <string name="device_owner_disallow_usb_file_transfer_test_info">
            Please press below button to set the \"disallow USB file transfer\" restriction.\n
            If a USB notification appears, open the notification and check that the
            \"Transfer files (MTP)\" and \"Transfer photos (PTP)\" options either are not displayed,
            or they trigger a support message when trying to select them.\n
            Check if you can mount the device as a USB drive on your desktop computer. The test is
            successful if you cannot mount the device, and files from your phone cannot be
            downloaded through USB.\n
            Please mark the test accordingly.
    </string>
    <string name="device_owner_set_user_icon">Setting the user icon</string>
    <string name="device_owner_set_user_icon_instruction">
        This test verifies that the user icon can be set by the device owner, depending on whether the user restriction is set or not.\n
        1. Press the \"Set user icon 1\" button.\n
        2. Press the \"Go\" button to go to Settings.\n
        3. If there is no \"users\" section, mark this test as passed.\n
        4. If the icon of the user \"owner\" is not \"1\", mark this test as failed.\n
        5. Press the \"Disallow set user icon\" button.\n
        6. Press the \"Set user icon 2\" button.\n
        7. Press the \"Go\" button to go to Settings. Verify that the icon can\'t be changed manually.\n
        8. Check that the icon of the user \"owner\" is \"2\", and mark this test accordingly.
    </string>
    <string name="device_owner_set_user_icon_button">Set user icon 1</string>
    <string name="device_owner_set_user_icon2_button">Set user icon 2</string>

    <string name="profile_owner_permission_lockdown_test_info">
        <b>
        Before proceeding, check if com.android.cts.permissionapp (aka CtsPermissionApp) is installed in work profile by going to Settings &gt; Apps. If not, please install the app before proceeding.\n\n
        </b>
        This test checks if the permissions state in settings UI is locked down correctly depending on the state set by the profile owner.
    </string>
    <string name="package_not_found">You must install %s (aka CtsPermissionApp).</string>
    <string name="permission_allow">Grant</string>
    <string name="permission_default">Let user decide</string>
    <string name="permission_deny">Deny</string>
    <string name="not_profile_owner">%s is not profile owner.</string>
    <string name="not_device_owner">%s is not device owner.</string>
    <string name="activity_not_found">No activity found to handle intent: %s</string>
    <string name="open_settings_button_label">Open Application Settings</string>
    <string name="finish_button_label">Finish</string>
    <string name="device_owner_device_admin_visible">Device administrator settings</string>
    <string name="device_owner_device_admin_visible_info">
        Please press the Go button to open the Security page in Settings.
        Navigate to Device administrators and confirm that:\n
        \n
        - \"CTS Verifier\" exists and is activated.\n
        - \"CTS Verifier\" cannot be disabled.\n
        \n
        Use the Back button to return to this page.
    </string>
    <string name="device_owner_disallow_config_bt">Disallow configuring Bluetooth</string>
    <string name="device_owner_disallow_config_bt_info">
        Please press the Set restriction button to set the user restriction.
        Then press Go to open the Bluetooth page in Settings.
        Confirm that:\n
        \n
        - You cannot view Bluetooth devices in range.\n
        - Trying to edit, add or remove any already paired devices triggers a support message.\n
        \n
        Use the Back button to return to this page.
    </string>
    <string name="device_owner_disallow_config_wifi">Disallow configuring WiFi</string>
    <string name="device_owner_disallow_config_wifi_info">
        Please press the Set restriction button to set the user restriction.
        Then press Go to open the WiFi page in Settings.
        Confirm that:\n\n
        - You cannot view WiFi networks in range.\n
        - Trying to edit, add or remove any existing WiFi configs triggers a support message.\n
        \n
        Use the Back button to return to this page.
    </string>
    <string name="device_owner_disallow_ambient_display">Disallow ambient display</string>
    <string name="device_owner_disallow_ambient_display_info">
        Please press the Set restriction button to set the user restriction.
        Then press Go to open the Display page in Settings.
        Mark this test as passed if one of the following:\n\n
        - There is no ambient display setting in Display Settings.\n
        - Ambient display setting is disabled with an info icon on it. Clicking on it triggers a support dialog.\n
        \n
        Use the Back button to return to this page.
    </string>
    <string name="device_owner_disallow_data_roaming">Disallow data roaming</string>
    <string name="device_owner_disallow_data_roaming_info">
        Device should have a sim card to perform this test.
        Please press the Set restriction button to set the user restriction.
        Then press Go to open the Mobile network page in Settings.
        Confirm that:\n\n
        - Data roaming is disabled.\n
        - Enabling data roaming is not possible and triggers a support message.\n\n
        Use the Back button to return to this page.
    </string>
    <string name="device_owner_disallow_factory_reset">Disallow factory reset</string>
    <string name="device_owner_disallow_factory_reset_info">
        Please press the Set button to set the user restriction.\n
        1. Go to the factory reset settings. It is often located in \"Backup &amp; reset\" settings.\n
        Confirm that:\n
           - Factory data reset is disabled.\n
           - Pressing factory data reset is not possible and triggers a support message.\n\n
        2. Go to OEM unlocking settings, if this device has this Settings option. It is often located under \"Developer options\".\n
        Confirm that:\n
           - Oem Unlocking is disabled.\n
           - Enabling Oem unlocking is not possible and triggers a support message.\n\n
        Return back to this page.
    </string>
    <string name="device_owner_user_restriction_set">Set restriction</string>
    <string name="device_owner_user_restriction_unset">Clear restriction (before leaving test)</string>
    <string name="device_owner_settings_go">Go</string>

    <string name="device_owner_vpn_connection">
        VPN connection has been established.\n
        This is not as expected.\n
        Mark this test as failed.\n
    </string>
    <string name="device_owner_vpn_connection_close_failed">
        Established vpn connection cannot be closed.\n
        This is not as expected.\n
        Mark this test as failed.\n
    </string>
    <string name="device_owner_no_vpn_connection">
        Cannot establish a VPN connection.\n
        This was expected.\n
        Mark this test as passed.\n
    </string>
    <string name="device_owner_vpn_test">Check VPN</string>
    <string name="device_owner_vpn_info_default">VPN test message</string>

    <string name="device_owner_disallow_config_vpn">Disallow configuring VPN</string>
    <string name="device_owner_disallow_config_vpn_info">
        Please press the Set VPN restriction button to set the VPN restriction.
        Perform tests in order. Mark test as passed if both test cases pass\n\n
        1. Press Go to attempt to open the VPN settings page.\n
        You should either see (a) the VPN settings page or (b) that the Intent
        android.settings.VPN_SETTINGS fails to resolve.\n
        In the case of (a), confirm that:\n
        - Trying to perform any of the above actions will trigger a support message.\n
        In the case of (b) this step is successful.\n\n
        2. Press Check VPN to check programmatic Vpn test.\n
        - Check Vpn setup is not allowed\n
        - If prompted to allow a VPN connection, press OK.\n\n
        Use the Back button to return to this page.
    </string>
    <string name="device_owner_user_vpn_restriction_set">Set VPN restriction</string>

    <!-- Strings for DeviceOwnerBugreportTest -->
    <string name="device_owner_requesting_bugreport_tests">Device Owner Requesting Bugreport Tests</string>
    <string name="device_owner_requesting_bugreport_category">Device Owner Requesting Bugreport Tests</string>
    <string name="device_owner_requesting_bugreport_tests_info">
            The device owner requesting bugreport tests verify that a bugreport can be requested on a corporate owned device.\n
            Press below button first, follow steps described in the dialog that pops up,
            then proceed to the test cases.\n
            Pressing \'back\', \'pass\' or \'fail\' on this test page will remove the device owner.\n
            Alternatively, you can run the \'Remove device owner\' test. Ideally, that test should
            be run last so that it does not interfere with other tests.
    </string>
    <string name="device_owner_request_bugreport">Request bugreport</string>
    <string name="bugreport_sharing_declined">Bugreport sharing declined</string>
    <string name="bugreport_shared_successfully">Bugreport shared successfully</string>
    <string name="bugreport_already_in_progress">Bugreport is already being collected on this device</string>
    <string name="bugreport_failed_completing">Bugreport collection operation failed</string>
    <string name="device_owner_bugreport_sharing_declined_while_being_taken">Sharing of requested bugreport declined while being taken</string>
    <string name="device_owner_bugreport_sharing_declined_while_being_taken_info">
        Please press the \"Request bugreport\" button to invoke the bugreport sharing operation.
        Open the notifications panel and verify that:\n
        \n
        - Notification titled \"Taking bugreport...\" with an indefinite progress bar is present.\n
        \n
        Press the \"Request bugreport\" button again to try to invoke a second bugreport sharing operation.
        Open the notifications panel and verify that:\n
        \n
        - Notification titled \"Device Owner Requesting Bugreport Tests\" with message \"Bugreport is already being collected on this device\" is present. Dismiss that notification.\n
        - Tapping on the \"Taking bugreport...\" notification opens a dialog titled \"Share bug report?\", that contains a message \"Your IT admin requested a bug report to help troubleshoot this device. Apps and data may be shared, and your device may temporarily slow down.\" and two buttons - \"DECLINE\" and \"SHARE\".\n
        \n
        Tap the \"DECLINE\" button and verify that:\n
        \n
        - \"Taking bugreport...\" notification with an indefinite progress bar is no longer present.\n
        - Notification titled \"Device Owner Requesting Bugreport Tests\" with message \"Bugreport sharing declined\" is present.\n
        \n
        Dismiss the notifications and mark test as passed or failed.
    </string>
    <string name="device_owner_bugreport_sharing_accepted_while_being_taken">Sharing of requested bugreport accepted while being taken</string>
    <string name="device_owner_bugreport_sharing_accepted_while_being_taken_info">
        Please press the \"Request bugreport\" button to invoke the bugreport sharing operation.
        Open the notifications panel and verify that:\n
        \n
        - Notification titled \"Taking bugreport...\" with an indefinite progress bar is present.\n
        - Tapping on the \"Taking bugreport...\" notification opens a dialog titled \"Share bug report?\", that contains a message \"Your IT admin requested a bug report to help troubleshoot this device. Apps and data may be shared, and your device may temporarily slow down.\" and two buttons - \"DECLINE\" and \"SHARE\".\n
        \n
        Tap the \"SHARE\" button and verify that:\n
        \n
        - \"Taking bugreport...\" notification with an indefinite progress bar is no longer present.\n
        - Notification titled \"Sharing bugreport...\" with an indefinite progress bar is present.\n
        - After a few minutes (time necessary to wait for bugreport being collected) notification titled \"Sharing bugreport...\" is automatically dismissed and notification titled \"Device Owner Requesting Bugreport Tests\" with message \"Bugreport shared successfully\" is present.\n
        \n
        Dismiss the notifications and mark test as passed or failed.
    </string>
    <string name="device_owner_bugreport_sharing_declined_after_having_been_taken">Sharing of requested bugreport declined after having been taken</string>
    <string name="device_owner_bugreport_sharing_declined_after_having_been_taken_info">
        Please press the \"Request bugreport\" button to invoke the bugreport sharing operation.
        Open the notifications panel and verify that:\n
        \n
        - Notification titled \"Taking bugreport...\" with an indefinite progress bar is present.\n
        \n
        Wait for a few minutes (time necessary for bugreport to be collected) and verify that:\n
        \n
        - \"Taking bugreport...\" notification with an indefinite progress bar is dismissed.\n
        - Notification titled \"Share bug report?\", that contains a message \"Your IT admin requested a bug report to help troubleshoot this device. Apps and data may be shared.\" and two buttons - \"DECLINE\" and \"SHARE\" is shown.\n
        \n
        Tap the \"DECLINE\" button and verify that:\n
        \n
        - Notification titled \"Share bug report?\" is dismissed.\n
        - Notification titled \"Device Owner Requesting Bugreport Tests\" with message \"Bugreport sharing declined\" is present.\n
        \n
        Dismiss the notifications and mark test as passed or failed.
    </string>
    <string name="device_owner_bugreport_sharing_accepted_after_having_been_taken">Sharing of requested bugreport accepted after having been taken</string>
    <string name="device_owner_bugreport_sharing_accepted_after_having_been_taken_info">
        Please press the \"Request bugreport\" button to invoke the bugreport sharing operation.
        Open the notifications panel and verify that:\n
        \n
        - Notification titled \"Taking bugreport...\" with an indefinite progress bar is present.\n
        \n
        Wait for a few minutes (time necessary for bugreport to be collected) and verify that:\n
        \n
        - \"Taking bugreport...\" notification with an indefinite progress bar is dismissed.\n
        - Notification titled \"Share bug report?\", that contains a message \"Your IT admin requested a bug report to help troubleshoot this device. Apps and data may be shared.\" and two buttons - \"DECLINE\" and \"SHARE\" is shown.\n
        \n
        Tap the \"SHARE\" button and verify that:\n
        \n
        - Notification titled \"Share bug report?\" is dismissed.\n
        - Notification titled \"Device Owner Requesting Bugreport Tests\" with message \"Bugreport shared successfully\" is present.\n
        \n
        Dismiss the notifications and mark test as passed or failed.
    </string>

    <!-- Strings used for policy transparency test -->
    <string name="device_profile_owner_policy_transparency_test">Policy transparency test</string>
    <string name="device_profile_owner_policy_transparency_test_info">
        This test checks that if an admin has enforced a policy, we let the user know about this.\nSet the short and long support messages before proceeding with the tests.
    </string>
    <string name="policy_transparency_open_settings_label">Open settings</string>
    <string name="policy_transparency_short_support_msg_label">Set short support message</string>
    <string name="policy_transparency_long_support_msg_label">Set long support message</string>
    <string name="policy_transparency_set_msg">Set message</string>
    <string name="policy_transparency_clear_msg">Clear message</string>
    <string name="policy_transparency_set_default_msg">Set default message</string>
    <string name="policy_transparency_default_short_msg">
        This action is disabled by your administrator. Contact someone@example.com for support.
    </string>
    <string name="policy_transparency_default_long_msg">
        This profile or device is managed by CtsVerifier. You can contact tech
        support on:\n\n
        America: +1 555-0100\n\n
        APAC: +1 555-0100\n\n
        Europe: +1 555-0100\n\n
        Email: someone@example.com
    </string>
    <string name="policy_transparency_update_button_label">Update</string>
    <string name="test_input_method_label">Test input method</string>
    <string name="test_accessibility_service_label">Test accessibility service</string>
    <string name="policy_transparency_test_instructions">
        1. <xliff:g id="set_step" example="Set policy by turning the switch on">%1$s</xliff:g>\n
        2. Open Settings app by clicking the "Open settings" button below. Note that this will open the personal Settings app. If this device has the work settings in a different app or screen, then navigate there, ignoring the button if necessary.\n
        3. Verify that performing the following action will trigger a support dialog:\n
           <xliff:g id="user_action" example="Adding an account">%2$s</xliff:g>.<xliff:g id="exception_node" example="NOTE: if the device doesn't support the action...">%3$s</xliff:g>\n
        4. Verify that the support dialog displays the short support message set earlier.\n
        5. Verify that clicking the "Learn more" link will either launch a help web page with more
           information or redirect to Device administrators page in Settings app which displays the
           long support message set earlier.\n
        6. If in step 5. the help web page was launched, navigate to the Device administrators page
           from Settings -> Security, open the work profile \'CTS Verifier\' enabled admin and
           verify that the page displays the long support message set earlier.\n
    </string>
    <string name="optional_policy_transparency_test_note">\n\t<b>NOTE</b>: if the device doesn\'t support this action please skip this test and mark it as passing.</string>
    <string name="user_restriction_set_step">
        Set \'%s\' user restriction by turning on the switch below.
    </string>
    <string name="disallow_add_user">Disallow add user</string>
    <string name="disallow_add_user_action">Adding a new user</string>
    <string name="disallow_adjust_volume">Disallow adjust volume</string>
    <string name="disallow_adjust_volume_action">Adjusting the volume\n
        NOTE: If the device does not support volume adjustment in Settings app please skip this test and mark it as passing.\n</string>
    <string name="disallow_config_date_time">Disallow config date time</string>
    <string name="disallow_config_date_time_action">Configuring auto time, time, auto date or date</string>
    <string name="disallow_config_location">Disallow config location</string>
    <string name="disallow_config_location_action">Enabling or disabling location in settings or quick settings</string>
    <string name="disallow_airplane_mode">Disallow airplane mode</string>
    <string name="disallow_airplane_mode_action">Toggling airplane mode switch bar or changing airplane mode state in quick settings</string>
    <string name="disallow_config_screen_timeout">Disallow config screen timeout</string>
    <string name="disallow_config_screen_timeout_action">Configuring sleep options in Display settings</string>
    <string name="disallow_config_brightness">Disallow config brightness</string>
    <string name="disallow_config_brightness_action">Configuring brightness level or adaptive brightness in Display settings, or toggling brightness slider in quick settings</string>
    <string name="disallow_apps_control">Disallow controlling apps</string>
    <string name="disallow_apps_control_action">DISABLE/UNINSTALL/FORCE STOP-ing any app in the managed device/profile other than CtsVerifier</string>
    <string name="disallow_config_cell_broadcasts">Disallow config cell broadcasts</string>
    <string name="disallow_config_cell_broadcasts_action">Configuring emergency alerts(cell broadcasts)</string>
    <string name="disallow_config_credentials">Disallow config credentials</string>
    <string name="disallow_config_credentials_action">Configuring user credentials</string>
    <string name="disallow_config_mobile_networks">Disallow config mobile networks</string>
    <string name="disallow_config_mobile_networks_action">Configuring mobile networks</string>
    <string name="disallow_config_tethering">Disallow config tethering</string>
    <string name="disallow_config_tethering_action">
        Configuring tethering and portable hotspots.\n
        NOTE: If the device does not support tethering please skip this test and mark it as passing.\n
    </string>
    <string name="disallow_config_wifi">Disallow config Wi-Fi</string>
    <string name="disallow_config_wifi_action">Modifying Wi-Fi configuration</string>
    <string name="disallow_debugging_features">Disallow debugging features</string>
    <string name="disallow_debugging_features_action">Enabling developer options</string>
    <string name="disallow_factory_reset">Disallow factory reset</string>
    <string name="disallow_factory_reset_action">Factory resetting the device</string>
    <string name="disallow_fun">Disallow fun</string>
    <string name="disallow_fun_action">Opening android easter egg game by tapping repeatedly on the \'Android version\' option</string>
    <string name="disallow_install_unknown_sources">Disallow install unknown sources</string>
    <string name="disallow_install_unknown_sources_action">Enabling \'Cts Verifier\' to install apps</string>
    <string name="disallow_install_unknown_sources_globally">Disallow install unknown sources globally</string>
    <string name="disallow_install_unknown_sources_globally_action">Enabling \'Cts Verifier\' to install apps device-wide</string>
    <string name="disallow_modify_accounts">Disallow modify accounts</string>
    <string name="disallow_modify_accounts_action">Adding an account, and also removing an account (after you have previously added one)</string>
    <string name="disallow_network_reset">Disallow network reset</string>
    <string name="disallow_network_reset_action">Resetting network settings\n
        NOTE: If the device does not support network reset please skip this test and mark it as passing.\n</string>
    <string name="disallow_outgoing_beam">Disallow outgoing beam</string>
    <string name="disallow_outgoing_beam_action">Switching on android beam</string>
    <string name="disallow_remove_user">Disallow remove user</string>
    <string name="device_owner_disallow_remove_user_info">
        Please press \'Create uninitialized user\' to create a user that is not set up. Then press the
        \'Set restriction\' button to set the user restriction.
        Then press \'Go\' to open \'Multiple users\' setting. \n
        Click the managed user to open settings.\n\n

        Mark this test as passed if:\n\n
        - \"Delete User\" is disabled.\n
        - Tapping \"Delete user\" shows an \"Action not allowed\" dialog.\n
        \n
        Use the Back button to return to this page.
    </string>
    <string name="managed_user_disallow_remove_user_info">
        Please press the \'Set restriction\' button to set the user restriction.
        Then press \'Go\' to open \'Multiple users\' setting. \n\n

        Mark this test as passed if all of the following conditions are met:\n\n
        - The \"Delete managed user from this device\" option in the overflow menu is disabled\n
        - Clicking \"Delete managed user from this device\" in the overflow menu results in an \"Action not allowed\" dialog.\n
        \n
        Use the Back button to return to this page.
    </string>
    <string name="device_owner_disallow_remove_user_create_user">Create uninitialized user</string>
    <string name="device_owner_remove_secondary_user">Remove uninitialized user</string>
    <string name="disallow_remove_managed_profile">Disallow remove managed profile</string>
    <string name="disallow_remove_managed_profile_action">Removing the work profile. It shouldn\'t be possible neither from the Accounts screen nor the Device Administrators screen (after selecting the Device Administrator that corresponds to the badged version of \"CTS Verifier\")</string>
    <string name="disallow_share_location">Disallow share location</string>
    <string name="disallow_share_location_action">Turning on location sharing</string>
    <string name="disallow_set_user_icon">Disallow set user icon</string>
    <string name="disallow_uninstall_apps">Disallow uninstall apps</string>
    <string name="disallow_uninstall_apps_action">
        a. If testing in work profile: uninstall applications from the work profile (badged applications) other than CtsVerifier and system apps. \n
        b. Otherwise: uninstall applications other than CtsVerifier and system apps
    </string>
    <string name="disallow_unified_challenge">Disallow unified challenge</string>
    <string name="disallow_unified_challenge_action">Setting one lock for both personal and work profiles. IMPORTANT: Separate work lock should be set prior to this test in Set work lock test</string>
    <string name="disallow_keyguard_unredacted_notifications">Disallow lockscreen unredacted notification</string>
    <string name="disallow_keyguard_unredacted_notifications_set_step">Disallow unredacted notifications when device is locked by turning on the switch below</string>
    <string name="disallow_keyguard_unredacted_notifications_action">Selecting show all notification content when device is locked</string>
    <string name="disallow_keyguard_unredacted_notifications_widget_label">@string/disallow_keyguard_unredacted_notifications</string>
    <string name="set_auto_time_required">Set auto (network) time required</string>
    <string name="auto_time_required_set_step">Set auto time required policy by turning on the switch below</string>
    <string name="set_auto_time_required_action">Modifying date and time</string>
    <string name="set_auto_time_required_widget_label">@string/set_auto_time_required</string>
    <string name="set_lock_screen_info">Set lock screen info</string>
    <string name="lock_screen_info_set_step">Select a lock screen info by setting a non-empty message in the edittext below.</string>
    <string name="set_lock_screen_info_action">Modifying lock screen message</string>
    <string name="set_lock_screen_info_widget_label">@string/set_lock_screen_info</string>
    <string name="set_maximum_time_to_lock">Set maximum time to lock</string>
    <string name="maximum_time_to_lock_set_step">
        Select a non-zero maximum time to lock value by setting a value in the edittext box below.
    </string>
    <string name="set_maximum_time_to_lock_action">Selecting maximum time to lock greater than the set value below</string>
    <string name="set_maximum_time_to_lock_widget_label">Set maximum time to lock (in Sec):</string>
    <string name="set_permitted_accessibility_services">Set permitted accessibility services</string>
    <string name="permitted_accessibility_services_set_step">
        Check that \'Test Accessibility service\' is not enabled in Settings and disallow \'Test Accessibility service\' from permitted accessibility services by turning on
        the switch below.
    </string>
    <string name="set_permitted_accessibility_services_action">
        Enabling \'Test Accessibility service\' in the list of accessibility services
    </string>
    <string name="set_permitted_accessibility_services_widget_label">
        Allow only system accessibility services:
    </string>
    <string name="set_permitted_input_methods">Set permitted input methods</string>
    <string name="permitted_input_methods_set_step">
        Check that \'Test Input method\', along with all other non-system apps, are not enabled in Settings for the managed profile (they may be enabled for the primary profile). Then disallow \'Test Input method\' from permitted input methods by turning on the switch below.
    </string>
    <string name="set_permitted_input_methods_action">
        Enabling \'Test Input method\' in the list of input methods (make sure you are enabling it for the managed profile, not primary profile)
    </string>
    <string name="set_permitted_input_methods_widget_label">
        Allow only system input methods:
    </string>

    <!-- Strings used for enterprise privacy tests -->
    <string name="enterprise_privacy_test">Managed device info tests</string>
    <string name="enterprise_privacy_page">Managed device info page</string>
    <string name="enterprise_privacy_page_info">
        Please press the Go button to open Settings. Verify that:\n
        1) One of the Settings screens contains an entry for managed device information.\n
        2) Tapping that entry opens a screen.\n
        3) In this screen, at a minimum, you are told your organization can:\n
        * Change settings on this device.\n
        * See data associated with your work account.\n
        * See the list of all apps on your device.\n
        * See usage of each app on your device.\n
        * Lock the device and change the password.\n
        * Wipe the device.\n
        \n
        Use the Back button to return to this page.
    </string>
    <string name="enterprise_privacy_open_settings">Open Settings</string>
    <string name="enterprise_privacy_network_logging">Retrieve traffic logs</string>
    <string name="enterprise_privacy_network_logging_info">
        Please do the following:\n
        1) Press the Retrieve Traffic Logs button and record the time at which you did this.\n
        2) Wait one minute.\n
        3) Press the Open Settings button.\n
        4) In the screen that opens, verify that you are told traffic logs were last retrieved at the time you pressed the Retrieve Traffic Logs button in step (1).\n
        \n
        Use the Back button to return to this page.
    </string>
    <string name="enterprise_privacy_retrieve_network_logs">Retrieve Traffic Logs</string>
    <string name="enterprise_privacy_bug_report">Request bug report</string>
    <string name="enterprise_privacy_bug_report_info">
        Please do the following:\n
        1) Press the Request Bug Report button and record the time at which you did this.\n
        2) Wait one minute.\n
        3) Press the Open Settings button.\n
        4) In the screen that opens, verify that you are told a bug report was last requested at the time you pressed the Request Bug Report button in step (1).\n
        \n
        Use the Back button to return to this page.
    </string>
    <string name="enterprise_privacy_request_bug_report">Request Bug Report</string>
    <string name="enterprise_privacy_security_logging">Retrieve security logs</string>
    <string name="enterprise_privacy_security_logging_info">
        Please do the following:\n
        1) Press the Retrieve Security Logs button and record the time at which you did this.\n
        2) Wait one minute.\n
        3) Press the Open Settings button.\n
        4) In the screen that opens, verify that you are told security logs were last retrieved at the time you pressed the Retrieve Security Logs button in step (1).\n
        \n
        Use the Back button to return to this page.
    </string>
    <string name="enterprise_privacy_retrieve_security_logs">Retrieve Security Logs</string>
    <string name="enterprise_privacy_clear_organization">Clear Org</string>
    <string name="enterprise_privacy_set_organization">Set Org</string>
    <string name="enterprise_privacy_enterprise_installed_apps">Enterprise-installed apps</string>
    <string name="enterprise_privacy_enterprise_installed_apps_info">
        Please do the following:\n
        1) You should have received NotificationBot.apk together with the CTS verifier. If you built the CTS verifier yourself, build the NotificationBot.apk by issuing the following command on the host:\n
            make NotificationBot\n
        2) Grant MANAGE_EXTERNAL_STORAGE by issuing the following command on the host:\n
            adb shell appops set com.android.cts.verifier MANAGE_EXTERNAL_STORAGE 0\n
        3) Upload the NotificationBot.apk to your device by issuing the following command on the host:\n
            adb push /path/to/NotificationBot.apk /sdcard\n
        4) Press the Uninstall button.\n
        5) Press the Open Settings button.\n
        6) In the screen that opens, verify that you are not told that your administrator installed any apps.\n
        7) Use the Back button to return to this page.\n
        8) Press the Install button.\n
        9) Press the Open Settings button.\n
        10) In the screen that opens, verify that you are told now that your administrator installed at least one app.\n
        11) Tap on that information. Verify that a list of apps installed shows.\n
        12) Verify that the list contains the CTS Robot app.\n
        13) Use the Back button to return to this page.\n
        14) Press the Uninstall button.\n
        15) Issue the following command on the host:\n
            adb shell rm /sdcard/NotificationBot.apk
    </string>
    <string name="enterprise_privacy_enterprise_installed_apps_info_headless_system_user">
        Please do the following:\n
        1) You should have received NotificationBot.apk together with the CTS verifier. If you built the CTS verifier yourself, build the NotificationBot.apk by issuing the following command on the host:\n
        \tmake NotificationBot\n
        2) Install the NotificationBot for <b>user 0 only</b>. For example:\n
        \tadb install --user 0 $ANDROID_PRODUCT_OUT/testcases/NotificationBot/*/NotificationBot.apk\n
        3) Make sure the app is <b>not</b> installed for the current user:\n
        \tadb shell pm list packages --user cur |grep com.android.cts.robot || echo \'Not installed\'\n
        4) Press the Open Settings button.\n
        5) In the screen that opens, verify that you are not told that your administrator installed any apps (other than CtsVerifier itself).\n
        6) Use the Back button to return to this page.\n
        7) Press the Install button.\n
        8) Press the Open Settings button.\n
        9) In the screen that opens, verify that you are told now that your administrator installed at least one app.\n
        10) Tap on that information. Verify that a list of apps installed shows.\n
        11) Verify that the list contains the CTS Robot app.\n
        12) Use the Back button to return to this page.\n
        13) Press the Uninstall button.\n
        14) Issue the following command on the host:\n
        \tadb uninstall --user all com.android.cts.robot\n
    </string>
    <string name="enterprise_privacy_install">Install</string>
    <string name="enterprise_privacy_uninstall">Uninstall</string>
    <string name="enterprise_privacy_admin_granted_location_access">Location access permission</string>
    <string name="enterprise_privacy_admin_granted_location_access_info">
        Please do the following:\n
        1) Press the Reset button.\n
        2) Press the Open Settings button.\n
        3) In the screen that opens, verify that you are not told that your administrator has granted location access to any apps.\n
        4) Use the Back button to return to this page.\n
        5) Press the Grant button.\n
        6) Press the Open Settings button.\n
        7) In the screen that opens, verify that you are told now that your administrator has granted location access to at least one app.\n
        8) Tap on that information. Verify that a list of apps which have location access shows.\n
        9) Verify that the list contains the CTS Verifier app.\n
        10) Use the Back button to return to this page.\n
        11) Press the Reset button.
    </string>
    <string name="enterprise_privacy_reset">Reset</string>
    <string name="enterprise_privacy_grant">Grant</string>
    <string name="enterprise_privacy_admin_granted_microphone_access">Microphone access permission</string>
    <string name="enterprise_privacy_admin_granted_microphone_access_info">
        Please do the following:\n
        1) Press the Reset button.\n
        2) Press the Open Settings button.\n
        3) In the screen that opens, verify that you are not told that your administrator has granted microphone access to any apps.\n
        4) Use the Back button to return to this page.\n
        5) Press the Grant button.\n
        6) Press the Open Settings button.\n
        7) In the screen that opens, verify that you are told now that your administrator has granted microphone access to at least one app.\n
        8) Tap on that information. Verify that a list of apps that have microphone access shows.\n
        9) Verify that the list contains the CTS Verifier app.\n
        10) Use the Back button to return to this page.\n
        11) Press the Reset button.
    </string>
    <string name="enterprise_privacy_admin_granted_camera_access">Camera access permission</string>
    <string name="enterprise_privacy_admin_granted_camera_access_info">
        Please do the following:\n
        1) Press the Reset button.\n
        2) Press the Open Settings button.\n
        3) In the screen that opens, verify that you are not told that your administrator has granted camera access to any apps.\n
        4) Use the Back button to return to this page.\n
        5) Press the Grant button.\n
        6) Press the Open Settings button.\n
        7) In the screen that opens, verify that you are told now that your administrator has granted camera access to at least one app.\n
        8) Tap on that information. Verify that a list of apps that have camera access shows.\n
        9) Verify that the list contains the CTS Verifier app.\n
        10) Use the Back button to return to this page.\n
        11) Press the Reset button.
    </string>
    <string name="enterprise_privacy_default_apps">Default apps</string>
    <string name="enterprise_privacy_default_apps_info">
        Please do the following:\n
        1) Press the Reset button.\n
        2) Press the Open Settings button.\n
        3) In the screen that opens, verify that you are not told that your administrator set any default apps.\n
        4) Use the Back button to return to this page.\n
        5) Press the Set Default Apps button.\n
        6) Press the Open Settings button.\n
        7) In the screen that opens, verify that you are now told that your administrator has set 6 default apps.\n
        8) Tap on that information. Verify that a list of default apps shows, with 6 elements in it.\n
        9) Verify that each element shows the CTS Verifier is the default app.\n
        10) Use the Back button to return to this page.\n
        11) Press the Reset button.
    </string>
    <string name="enterprise_privacy_set_default_apps">Set Default Apps</string>
    <string name="enterprise_privacy_default_ime">Default keyboard</string>
    <string name="enterprise_privacy_default_ime_info">
        Please do the following:\n
        1) Press the Open Settings button.\n
        2) In the screen that opens, verify that you are not told the default keyboard has been set.\n
        3) Use the Back button to return to this page.\n
        4) Press the Set Keyboard button to set the default keyboard.\n
        5) Repeat steps (1) through (3), verifying that in step (2), you are told now that the default keyboard has been set to CTS Verifier.\n
        6) Press the Finish button to clear the default keyboard.
    </string>
    <string name="enterprise_privacy_set_keyboard">Set Keyboard</string>
    <string name="enterprise_privacy_finish">Finish</string>
    <string name="enterprise_privacy_always_on_vpn">Always-on VPN</string>
    <string name="enterprise_privacy_always_on_vpn_info">
        Please do the following:\n
        1) Press the Open Settings button.\n
        2) In the screen that opens, verify that you are not told that an always-on VPN is set.\n
        3) Use the Back button to return to this page.\n
        4) Press the Set VPN button to set an always-on VPN.\n
        5) Repeat steps (1) through (3), verifying that in step (2), you are told now that an always-on VPN is set.\n
        6) Press the Finish button to clear the always-on VPN.
    </string>
    <string name="enterprise_privacy_set_always_on_vpn">Set VPN</string>
    <string name="enterprise_privacy_start">Start</string>
    <string name="enterprise_privacy_global_http_proxy">Global HTTP Proxy</string>
    <string name="enterprise_privacy_global_http_proxy_info">
        Please do the following:\n
        1) Press the Open Settings button.\n
        2) In the screen that opens, verify that you are not told that a global HTTP proxy has been set.\n
        3) Use the Back button to return to this page.\n
        4) Press the Set Proxy button.\n
        5) Repeat steps (1) through (3), verifying that in step (2), you are told now that a global HTTP proxy has been set.\n
        6) Press the Clear Proxy button.
    </string>
    <string name="enterprise_privacy_ca_certs">Trusted CA certs</string>
    <string name="enterprise_privacy_ca_certs_info">
        Please do the following:\n
        1) Press the Open Settings button.\n
        2) In the screen that opens, verify that you are not told that your administrator installed trusted CA certs.\n
        3) Use the Back button to return to this page.\n
        4) Press the Install Cert button to install a trusted CA cert.\n
        5) Repeat steps (1) through (3), verifying that in step (2), you are told now that the administrator has installed at least one trusted CA cert.\n
        6) Press the Finish button to clear the cert.
    </string>
    <string name="enterprise_privacy_install_cert">Install Cert</string>
    <string name="enterprise_privacy_settings">Settings</string>
    <string name="enterprise_privacy_set_proxy">Set Proxy</string>
    <string name="enterprise_privacy_clear_proxy">Clear Proxy</string>
    <string name="enterprise_privacy_failed_password_wipe">Wipe on authentication failure</string>
    <string name="enterprise_privacy_failed_password_wipe_info">
        Please do the following:\n
        1) Press the Open Settings button.\n
        2) In the screen that opens, verify that you are not told all device data will be deleted if you mistype your password too many times.\n
        3) Use the Back button to return to this page.\n
        4) Press the Set Limit button to set the maximum number of password attempts.\n
        5) Repeat steps (1) through (3), verifying that in step (2), you are told now that all device data will be deleted if you mistype your password 100 times.\n
        6) Press the Finish button to clear the maximum number of password attempts.
    </string>
    <string name="enterprise_privacy_set_limit">Set Limit</string>
    <string name="enterprise_privacy_quick_settings">Quick settings disclosure</string>
    <string name="enterprise_privacy_quick_settings_info">
        Please do the following:\n
        1) Press the Clear Org button.\n
        2) Open and fully expand Quick Settings.\n
        3) Verify that at the bottom of Quick Settings, you are told the device is managed.\n
        4) Close Quick Settings.\n
        5) Press the Set Org button.\n
        6) Open and fully expand Quick Settings.\n
        7) Verify that at the bottom of Quick Settings, you are told the device is managed by \"Foo, Inc.\".\n
        8) Tap on the information.\n
        9) Verify that a dialog informing you about device monitoring opens.\n
        10) Tap the \"View Policies\" button.\n
        11) Verify that a screen informing you what your managing organization can do is shown.\n
        \n
        Use the Back button to return to this page. If this device does not have quick settings, please skip this test and mark it passing.
    </string>
    <string name="enterprise_privacy_keyguard">Keyguard disclosure</string>
    <string name="enterprise_privacy_keyguard_info">
        Please do the following:\n
        1) Press the Open Settings button to open Settings.\n
        2) Navigate to \"Security\" &gt; \"Screen lock\" and select the first screen lock type that is not \"None\".\n
        3) Use the Back button to return to this page.\n
        4) Press the Clear Org button.\n
        5) Lock the device.\n
        6) Verify that on the lock screen, you are told the device is managed.\n
        7) Unlock the device.\n
        8) Press the Set Org button.\n
        9) Lock the device.\n
        10) Verify that on the lock screen, you are told the device is managed by \"Foo, Inc.\".\n
        11) Unlock the device.\n
        12) Repeat steps (1) through (11) for each screen lock type other than \"None\".
    </string>
    <string name="enterprise_privacy_add_account">Add account disclosure</string>
    <string name="enterprise_privacy_add_account_info">
        Please do the following:\n
        1) Press the Clear Org button.\n
        2) Press the Open Settings button.\n
        3) In the screen that opens, verify that you are told that the device is managed.\n
        4) Use the Back button to return to this page.\n
        5) Press the Set Org button.\n
        6) Press the Open Settings button.\n
        7) In the screen that opens, verify that you are told that the device is managed by \"Foo, Inc.\".\n
        8) Tap the \"Learn more\" link.\n
        9) Verify that a screen informing you what your managing organization can do is shown.\n
        11) Use the Back button to return to this page.
    </string>
    <string name="enterprise_privacy_default_app">CTS Verifier Test</string>

    <!-- Strings for Network Logging Tests -->
    <string name="device_owner_network_logging_ui">Network Logging UI</string>
    <string name="device_owner_network_logging_ui_info">Please do the following:\n
        1) Open and fully expand Quick Settings.\n
        2) Check that you are told that your device is managed.\n
        3) Close Quick Settings.\n
        4) Enable network logging by tapping on the left button below.\n
        5) Open Quick Settings again. Check that an icon appeared next to the text about device management.\n
        6) Verify that a notification including the same icon popped up, informing you that network logging has been enabled.\n
        7) Tap the notification.\n
        8) Verify that a dialog about device monitoring opens, and informs you about: the name of the app that manages this device, details about the device owner\'s capabilities, and information that the admin has activated network logging and can see all network traffic.\n
        9) Close the dialog.\n
        10) Tap the right button below to disable network logging.\n
        11) Verify that the notification disappeared.\n
        \n
        If this device does not have quick settings, please skip this test and mark it passing.
    </string>
    <string name="device_owner_enable_network_logging_button">Enable Network Logging</string>
    <string name="device_owner_disable_network_logging_button">Disable Network Logging</string>

    <!-- Strings for Customize Lock Screen Message -->
    <string name="device_owner_customize_lockscreen_message">Customize Lock Screen Message</string>
    <string name="device_owner_customize_lockscreen_message_info">Please do the following:\n
        1) Press the \"Go\" button to go to Settings\n
        2) Find the \"Screen lock\" option and set it to \"Swipe\"\n
        3) Use the Back button to return to this page\n
        4) In the field below, write a lock screen message.\n
        5) Press the \"Set lock screen message\" button\n
        6) Press Power button once to lock the screen.\n
        7) Press Power button again to reveal the lock screen.\n
        8) Verify that the message from step 1) appears on the lock screen.\n
        9) Unlock the screen and return to this page.\n
        10) Press the \"Go\" button to go to Settings\n
        11) Find the \"Lock screen message\" option\n
        12) Verify that you cannot modify the setting.\n
        13) Use the Back button to return to this page.\n
        14) Press the \"Go\" button to go to Settings\n
        15) Find the \"Screen lock\" option and set it to \"None\"\n
        16) Use the Back button to return to this page
    </string>
    <string name="device_owner_set_lockscreen_message_button">Set lock screen message</string>
    <string name="device_owner_set_lockscreen_message_hint">My lock screen message</string>
    <string name="device_owner_lockscreen_message_cannot_be_empty">Lock screen message cannot be empty.</string>

    <string name="device_owner_disable_usb_data_signaling_test">Disable USB data signaling</string>
    <string name="device_owner_disable_usb_data_signaling_test_info">
         This test verifies that USB data signaling can be disabled by the device owner.\n
         1. Press the \"Go\" button to go to Settings. Go to Connected devices > USB and select use
         USB for \"File transfer/Android Auto\". Verify that you can mount the device as a USB drive
         on your desktop computer and access files from your phone through USB.\n
         2. Press the \"Disable USB data signaling\" button to disable USB data signaling on
         the device. When disabled, all USB data connections (except from charging functions)
         are prohibited.\n
         3. Press the \"Go\" button to go to Settings and confirm that the "USB" preferences in
         \"System > Developer Options\" cannot be selected and "USB" preference in
         \"Connected devices\" has disappeared.:\n
              - Connected devices > USB\n
              - System > Developer Options > USB debugging\n
              - System > Developer Options > Default USB configuration\n
              - System > Developer Options > Disable USB audio routing\n
         4. Verify that you cannot mount the device as a USB drive on your desktop computer and
         cannot access files from your phone through USB.\n
         5. Press the \"Enable USB data signaling\" button to re-enable USB data signaling and
         replug USB cable in the device. After that the "USB" preferences in
         \"System > Developer Options\" can be selected and "USB" preference in
         \"Connected devices\" has appeared.\n
         Please mark the test accordingly.
    </string>
    <string name="device_owner_enable_usb_data_signaling_test">Enable USB data signaling</string>

    <string name="device_owner_required_password_complexity_test">Set required password complexity</string>
    <string name="device_owner_required_password_complexity_test_info">
         This test verifies that required password complexity can be set by the device owner.\n
         1. Press the \"Set low required password complexity\" button.\n
         2. Press the \"Go\" button to go to Settings > Security > Screen lock. Verify that
         you have to set a pattern, PIN or password.\n
         3. Press the \"Set medium required password complexity\" button.\n
         4. Press the \"Go\" button to go to Settings > Security > Screen lock. Verify that
         you have to set a PIN without repeating (4444) or ordered (1234, 4321, 2468) sequences
         with a length of at least 4; or you have to set an alphabetic or alphanumeric password with
         a length of at least 4.\n
         5. Press the \"Set high required password complexity\" button.\n
         6. Press the \"Go\" button to go to Settings > Security > Screen lock. Verify that
         you have to set a PIN without repeating (4444) or ordered (1234, 4321, 2468) sequences
         with a length of at least 8; or you have to set an alphabetic or alphanumeric password with
         a length of at least 6.\n
         7. Press the \"Remove required password complexity\" button.\n
         8. Press the \"Go\" button to go to Settings > Security > Screen lock. Verify that
         you don\'t have to set a pattern, PIN or password.\n
         Please mark the test accordingly.
    </string>
    <string name="set_low_required_password_complexity">Set low required password complexity</string>
    <string name="set_medium_required_password_complexity">Set medium required password complexity</string>
    <string name="set_high_required_password_complexity">Set high required password complexity</string>
    <string name="remove_required_password_complexity">Remove required password complexity</string>

    <string name="managed_user_test">Managed User</string>
    <string name="managed_user_positive_tests">Managed User positive tests</string>
    <string name="managed_user_positive_tests_instructions">
        The positive managed user tests verify policies on a managed user created by a device owner.
        \n
        Press Go button to create a managed user, and you will be switched to the managed user
        automatically. Dismiss the keyguard and a \'Managed User Tests\' should launch.\n
        Follow the test instructions and press \'pass\' or \'fail\' to return to this screen.\n
    </string>
    <string name="managed_user_positive_tests_instructions" product="automotive">
        The positive managed user tests verify policies on a managed user created by a device owner.
        \n
        Press Go button to create a managed user, and you will be switched to the managed user
        automatically; a \'Managed User Tests\' should launch.\n
        Follow the test instructions and press \'pass\' or \'fail\' to return to this screen.\n
    </string>
    <string name="managed_user_positive_tests_info">
        The positive managed user tests verify policies on a managed user created by a device owner.
        Proceed to the test cases, then press \'pass\' or \'fail\' to finish this test.
    </string>
    <string name="managed_user_positive_category">Managed User Tests</string>
    <string name="managed_user_check_managed_user_test">Check affiliated profile owner</string>
    <string name="managed_user_incorrect_managed_user">Missing or incorrect affiliated profile owner: CTSVerifier is not affilaited PO!</string>

    <string name="device_owner_disallow_user_switch">Disallow user switch</string>
    <string name="device_owner_disallow_user_switch_info">
        Press \'Create uninitialized user\' to create a user that is not setup.
        Then press \'Set restriction\' button to set the user restriction.
        Then press \'Go\' to open multiple users settings.
        Confirm that:\n
        \n
        - Main switch is disabled and in off position\n
        \n
        In additional, if quick settings is available, confirm that user switcher is hidden or
        disabled.
        Use the Back button to return to this page.
    </string>
    <string name="device_owner_disallow_user_switch_create_user">Create uninitialized user</string>

    <string name="device_owner_user_switcher_message">User switcher message</string>
    <string name="device_owner_user_switcher_message_info">
        1. Please press the \'With user switcher message\' button to set the user switcher message.
        You will then be automatically switched to a secondary user. If a user switcher dialog shows
        up, it should read \'Start user session\'. Wait until you are automatically switched back to
        primary, if a user switcher dialog shows up, it should read \'End user session\'.

        \n
        2. Please press the \'Without user switcher message\' button to clear the user switcher
        message. You will then be automatically switched to a secondary user. If a user switcher
        dialog shows up, it should read \'Switching to managed user\'. Wait until you are
        automatically switched back to primary, if a user switcher dialog shows up, it should read
        \'Switching to (name of primary user)\'.
    </string>
    <string name="device_owner_with_user_switcher_message">With user switcher message</string>
    <string name="device_owner_without_user_switcher_message">Without user switcher message</string>

    <string name="device_owner_enable_logout">Logout</string>
    <string name="device_owner_enable_logout_info">
        Please press the Go button to enable logout. You will then be switched to a newly created
        user.
        Look for a way to logout the current user without unlocking the lock screen. The control is
        usually named \'End session\'.\n
        The location may vary depending on manufacturer, typical locations are:\n
        - In power button menu by long pressing power button.\n
        - On the lock screen.\n
        \n
        When successfully logout and switched back to primary user, confirm that the logout control
        is not available in primary user.
    </string>

    <!-- Strings for JobScheduler Tests -->
    <string name="js_test_description">This test is mostly automated, but requires some user interaction. You can pass this test once the list items below are checked.</string>

    <string name="js_idle_test">Idle Mode Constraints</string>
    <string name="js_start_test_text">Start test</string>
    <string name="js_idle_instructions">Verify the behavior of the JobScheduler API for when the device is in idle mode. Simply follow the on-screen instructions.</string>
    <string name="js_idle_description_1">Turn the screen off and then back on in order to begin.</string>
    <string name="js_idle_continue_instruction">
        Switch off screen and wait for it to turn on to continue.
    </string>
    <string name="js_idle_item_idle_off">Idle job does not execute when device is not idle.</string>
    <string name="js_idle_item_idle_on">Idle job does execute when device is forced into idle.</string>

    <string name="js_charging_test">Charging Constraints</string>
    <string name="js_charging_instructions">Verify the behavior of the JobScheduler API for when the device is on power and unplugged from power. Simply follow the on-screen instructions.</string>
    <string name="js_charging_description_1">Plug in the charger if it isn\'t already plugged in.</string>
    <string name="js_charging_off_test">Device not charging will not execute a job with a charging constraint.</string>
    <string name="js_charging_on_test">Device when charging will execute a job with a charging constraint.</string>
    <string name="js_charging_description_2">After the above test has passed, remove the charger to continue. If the above failed, you can simply fail this test.</string>
    <string name="js_charging_description_3">Device is plugged in. Please wait while it gets into stable charging state.</string>
    <string name="js_charging_description_4">There seems to be a problem with your charger. Please try again.</string>

    <string name="js_connectivity_test">Connectivity Constraints</string>
    <string name="js_connectivity_instructions">Verify the behavior of the JobScheduler API for when the device has no access to data connectivity. Simply follow the on-screen instructions.</string>
    <string name="js_connectivity_description_1">Disable WiFi and Mobile data to begin.</string>
    <string name="js_unmetered_connectivity_test">Device with no connectivity will not execute a job with an unmetered connectivity constraint.</string>
    <string name="js_any_connectivity_test">Device with no connectivity will not execute a job with an unmetered connectivity constraint.</string>
    <string name="js_no_connectivity_test">Device with no connectivity will still execute a job with no connectivity constraints.</string>

    <!-- String for the bundled TV app Tests -->

    <string name="tv_input_discover_test">3rd-party TV input test</string>
    <string name="tv_input_discover_test_info">
    Verify that the bundled TV app launches via Intent and calls the proper API to discover
    3rd-party TV inputs.
    </string>
    <string name="tv_input_discover_test_third_party_tif_input_support">
    Does the bundled TV app support third-party TV inputs?
    </string>
    <string name="tv_input_discover_test_go_to_setup">
    Select the \"Launch TV app\" button and set up the newly installed TV input:
    \"CTS Verifier\".
    </string>
    <string name="tv_input_discover_test_verify_setup">
    Setup activity must have been started.
    </string>
    <string name="tv_input_discover_test_tune_to_channel">
    Select the \"Launch TV app\" button and tune to the \"Placeholder\" channel from \"CTS Verifier\"
    input. If necessary, configure the channel to be visible.
    </string>
    <string name="tv_input_discover_test_verify_tune">
    Tune command must be called.
    </string>
    <string name="tv_input_discover_test_verify_overlay_view">
    Verify that the overlay appears and displays the text \"Overlay View Placeholder Text\" when you tune
    to the \"Placeholder\" channel.
    </string>
    <string name="tv_input_discover_test_verify_size_changed">
    Verify that video layout changes correctly according to the provided video track information,
    including pixel aspect ratio.
    </string>
    <string name="tv_input_discover_test_verify_global_search">
    Verify the TV app provides query results for 3rd-party input\'s channels and programs in
    global search results.
    </string>
    <string name="tv_input_discover_test_go_to_epg">
    Select the \"Launch EPG\" button and locate the \"Placeholder\" channel.
    </string>
    <string name="tv_input_discover_test_verify_epg">
    Do you see the programs named \"Placeholder Program\" and their descriptions
    "Placeholder Program Description" in the EPG?
    </string>
    <string name="tv_input_discover_test_trigger_setup">
    Select the \"Launch setup\" button and verify if the bundled TV app shows the list of installed
    TV inputs for setup.
    </string>
    <string name="tv_input_discover_test_verify_trigger_setup">
    Do you see the \"CTS Verifier\" input in the list?
    </string>

    <string name="tv_parental_control_test">TV app parental controls test</string>
    <string name="tv_parental_control_test_info">
    Verify that the bundled TV app calls the parental controls API.
    </string>
    <string name="tv_parental_control_test_turn_on_parental_control">
    Select the \"Launch TV app\" button and turn on the parental controls. If parental controls are
    on already, turn it off and on again.
    </string>
    <string name="tv_parental_control_test_verify_receive_broadcast1">
    TV input service must have received ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED broadcast.
    </string>
    <string name="tv_parental_control_test_check_parental_controls_switch">
    Is there an option to turn off parental controls on this device?
    </string>
    <string name="tv_parental_control_test_block_tv_ma">
    Select the \"Launch TV app\" button and block the \"Custom Rating\" for \"CtsVerifier\" rating
    system in the parental control settings. If the rating system is disabled by default, enable it.
    If the \"Custom Rating\" is already blocked, unblock it, save, and then block again.
    </string>
    <string name="tv_parental_control_test_verify_receive_broadcast2">
    TV input service must have received ACTION_BLOCKED_RATINGS_CHANGED broadcast.
    </string>
    <string name="tv_parental_control_test_block_unblock">
    Select the \"Launch TV app\" button; verify that the channel is blocked.
    Try to unblock the screen by entering PIN; verify that it\'s unblocked.
    </string>

    <string name="tv_yes">Yes</string>
    <string name="tv_no">No</string>
    <string name="tv_none">None</string>
    <string name="tv_launch_tv_app">Launch TV app</string>
    <string name="tv_launch_epg">Launch EPG</string>
    <string name="tv_launch_setup">Launch setup</string>
    <string name="tv_channel_not_found">
    CtsVerifier channel is not set up. Please set up before proceeding.
    </string>

    <string name="tv_multiple_tracks_test">TV app closed captions and multi-audio test</string>
    <string name="tv_multiple_tracks_test_info">
    Verify that the bundled TV app calls the multi-track API.
    </string>
    <string name="tv_multiple_tracks_test_select_subtitle">
    Select the \"Launch TV app\" button. Verify that closed captions are off by default. Set closed
    caption language to English.
    </string>
    <string name="tv_multiple_tracks_test_verify_set_caption_enabled">
    Captions are enabled.
    </string>
    <string name="tv_multiple_tracks_test_verify_select_subtitle">
    The English closed caption track should be selected.
    </string>
    <string name="tv_multiple_tracks_test_select_audio">
    Select the \"Launch TV app\" button. Verify that the audio track is English by default.
    Select Spanish audio track.
    </string>
    <string name="tv_multiple_tracks_test_verify_select_audio">
    The Spanish audio track should be selected.
    </string>

    <string name="tv_time_shift_test">TV app time shift test</string>
    <string name="tv_time_shift_test_info">
    This test verifies that the TV app invokes proper time shift APIs in the framwork.
    </string>
    <string name="tv_time_shift_test_pause_resume">
    Press the \"Launch TV app\" button. Verify that the playback control is available.
    Pause the playback and then resume it.
    </string>
    <string name="tv_time_shift_test_verify_resume_after_pause">
    The playback should resume after pause.
    </string>
    <string name="tv_time_shift_test_verify_position_tracking">
    The playback position tracking should be activated.
    </string>
    <string name="tv_time_shift_test_speed_rate">
    Press the \"Launch TV app\" button. Verify that the playback control is available.
    Rewind the playback and in a few seconds fast-forward it.
    </string>
    <string name="tv_time_shift_test_verify_rewind">
    The playback should rewind.
    </string>
    <string name="tv_time_shift_test_verify_fast_forward">
    The playback should fast-forward.
    </string>
    <string name="tv_time_shift_test_seek">
    Press the \"Launch TV app\" button. Verify that the playback control is available.
    Seek to previous and then seek to next.
    </string>
    <string name="tv_time_shift_test_verify_seek_to_previous">
    The playback position should be moved to the previous position.
    </string>
    <string name="tv_time_shift_test_verify_seek_to_next">
    The playback position should be moved to the next position.
    </string>

    <string name="tv_app_link_test">TV app app-link test</string>
    <string name="tv_app_link_test_info">
    Verify that the bundled TV app supports linking to channel apps. If a TV input service provides
    links for its specific channels, the TV app should show the links in a proper format.
    </string>
    <string name="tv_app_link_test_select_app_link">
    Select the \"Launch TV app\" button, then check if you can see a menu with \"Cts App-Link Text\"
    text in red background. If you see the link, select it to follow the link.
    </string>
    <string name="tv_app_link_test_verify_link_clicked">
    The app-link must have been clicked and the activity should be changed correctly.
    </string>
    <string name="tv_input_link_test_verify_link_interface">
    Do you see the app-link card similar to the image on the left?\n
    1) You should see the poster art image, but the color may be different.\n
    2) You should see the text \"Cts App-Link Text\".\n
    </string>

    <string name="tv_microphone_device_test">Microphone device test</string>
    <string name="tv_microphone_device_test_info">
    This test checks if InputDevice.hasMicrophone of the Media API reports a
    correct value on every input device (including remote controls).
    </string>
    <string name="tv_microphone_device_test_prep_question">
    Before continuing, please make sure that you pair all primary input
    devices intended to be used by the device, including bluetooth
    remotes and companion remote-control apps such as the Android TV Remote Control.
    Have you paired every primary input device with the device under test (DUT)?
    </string>
    <string name="tv_microphone_device_test_mic_question">
    Does input device \"%1$s\" have a microphone?
    </string>
    <string name="tv_microphone_device_test_negative_mismatch">
    InputDevice.hasMicrophone reports that this input device DOES have a
    microphone whereas you selected that it does not.  Please correct it by
    declaring \"audio.mic = 0\" in the device\'s input device configuration
    (.idc) file.
    </string>
    <string name="tv_microphone_device_test_positive_mismatch">
    InputDevice.hasMicrophone reports that this input device does NOT have a
    microphone whereas you selected that it does.  Please correct it by
    declaring \"audio.mic = 1\" in the device\'s input device configuration
    (.idc) file and make sure that relevant files such as key layout (.kl)
    and key character map (.kcm) files are found by the system accordingly.
    </string>
    <string name="tv_microphone_device_test_no_input_devices">No input devices found.</string>

    <!-- Common strings for the TV Display tests -->
    <string name="tv_start_test">Start Test</string>
    <string name="tv_done">Done</string>

    <!-- Audio Capabilities test -->
    <string name="tv_audio_capabilities_test">Audio Capabilities Test</string>
    <string name="tv_audio_capabilities_test_info">This test checks if AudioDeviceInfo and
    AudioTrack#isDirectPlaybackSupported APIs correctly report the Audio capabilities
    of the connected audio devices.</string>
    <string name="tv_audio_capabilities_no_receiver_connected">Disconnect all receivers or
    soundbars which are connected. </string>
    <string name="tv_audio_capabilities_receiver_connected">Connect a receiver or
    soundbar which can play Dolby Atmos. </string>
    <string name="tv_audio_capabilities_atmos_supported">Does your Android TV device support Dolby
    Atmos (either passthrough or decode)?  </string>

    <!-- Hotplug Test -->
    <string name="tv_hotplug_test">Hotplug Test</string>
    <string name="tv_hotplug_test_info">This test checks whether DisplayManager responds correctly
        to plugging and unplugging the HDMI cable.
    </string>
    <string name="tv_hotplug_disconnect_display">
        Press the "%1$s" button, disconnect the HDMI cable, wait 2 seconds and then connect the HDMI
        cable again.
    </string>

    <!-- Mode Switching Test -->
    <string name="tv_mode_switching_test">Mode switching test</string>
    <string name="tv_mode_switching_test_step_instruction">
        Click "Start Test" and then observe the video below. Testing transition from %1$s to %2$s.
    </string>
    <string name="tv_mode_switching_test_black_screen_question">
        Did the video playback experience an interruption, for example, a black or solid color
        screen?
    </string>
    <string name="tv_mode_switching_test_is_video_ok">
        Does the video look okay? Click "No" if the video is not playing, there was a snow screen,
        audio static, wrong colors, the video is displaced compared to before running the test or
        if the video is not playing. Keep in mind that some stutter is expected when the video does
        not match the refresh rate.
    </string>
    <string name="tv_mode_switching_test_mode_switch_step">Mode switch step</string>

    <string name="overlay_view_text">Overlay View Placeholder Text</string>
    <string name="custom_rating">Example of input app specific custom rating.</string>

    <!-- A list of fully-qualified test classes that should not be run. -->
    <string-array name="disabled_tests">
        <item>com.android.cts.verifier.telecom.CtsVerifierInCallUi</item>
    </string-array>

    <!-- Strings for screen pinning test -->
    <string name="screen_pinning_test">Screen Pinning Test</string>
    <string name="screen_pin_instructions">Pressing next will prompt you to enter screen pinning, allow this app to enter screen pinning.</string>
    <string name="screen_pin_check_pinned">Press Next to verify the app is pinned.</string>
    <string name="screen_pin_no_exit">Try to leave the app without unpinning the screen. Press next once you have verified you cannot leave.</string>
    <string name="screen_pin_exit">Use interactions defined by your device to unpin such as long pressing the back and overview button, then press next.</string>

    <string name="error_screen_no_longer_pinned">The screen was no longer pinned.</string>
    <string name="error_screen_already_pinned">Cannot start the test with the screen already pinned.</string>
    <string name="error_screen_pinning_did_not_start">Screen was not pinned.</string>
    <string name="error_screen_pinning_did_not_exit">Screen was not unpinned.</string>
    <string name="error_screen_pinning_couldnt_exit">Could not exit screen pinning through API.</string>

    <!--  Audio Devices Notifications Tests -->
    <string name="audio_devices_notification_instructions">
          Connect and disconnect a wired headset.
          Note if the appropriate notification messages appear below.
          The \"Pass\" button will be enabled if device connect and disconnect messages are received.
    </string>
    <string name="audio_out_devices_notifications_test">Audio Output Devices Notifications Test</string>
    <string name="audio_in_devices_notifications_test">Audio Input Devices Notifications Test</string>
    <string name="audio_dev_notification_clearmsgs">Clear Messages</string>
    <string name="audio_dev_notification_connectMsg">CONNECT DETECTED</string>
    <string name="audio_dev_notification_disconnectMsg">DISCONNECT DETECTED</string>

    <string name="audio_input_routingnotifications_test">Audio Input Routing Notifications Test</string>
    <string name="audio_input_routingnotification_instructions">
          Click on the "Record" button in the AudioRecord Routing Notifications section below to
          start recording. Insert a wired headset or microphone. Observe a message acknowledging the
          rerouting event below. Remove the wired headset and observe the new routing message.
          Click on the "Stop" button to stop recording.\n
    </string>
    <string name="audio_output_routingnotifications_test">Audio Output Routing Notifications Test</string>
    <string name="audio_output_routingnotification_instructions">
          Click on the "Play" button in the AudioTrack Routing Notifications section below to
          start (silent) playback. Insert a wired headset. Observe a message acknowledging the
          rerouting event below. Remove the wired headset and observe the new routing message.
          Click on the "Stop" button to stop playback.\n
    </string>
    <string name="audio_routingnotification_playBtn">Play</string>
    <string name="audio_routingnotification_playStopBtn">Stop</string>
    <string name="audio_routingnotification_recBtn">Record</string>
    <string name="audio_routingnotification_recStopBtn">Stop</string>
    <string name="audio_routingnotification_playHeader">AudioTrack Routing Notifications</string>
    <string name="audio_routingnotification_recHeader">AudioRecord Routing Notifications</string>
    <string name="audio_routingnotification_trackRoutingMsg">AudioTrack rerouting</string>
    <string name="audio_routingnotification_recordRoutingMsg">AudioRecord rerouting</string>

    <!-- USB Audio Peripheral Tests -->
    <string name="profileLabel">Profile</string>
    <string name="connectedPeripheral">Connected Peripheral</string>
    <string name="audio_uap_attribs_test">USB Audio Peripheral Attributes Test</string>
    <string name="audio_uap_notifications_test">USB Audio Peripheral Notifications Test</string>
    <string name="uapPeripheralProfileAttributes">USB Audio Peripheral Attributes</string>
    <string name="audio_uap_play_test">USB Audio Peripheral Play Test</string>
    <string name="uapPlayTestInstructions">Connect the USB Audio Interface Peripheral and press the
        PLAY button below. Verify that a tone is correctly played.</string>
    <string name="audio_uap_play_playBtn">Play</string>
    <string name="audio_uap_play_stopBtn">Stop</string>

    <string name="audio_uap_record_test">USB Audio Peripheral Record Test</string>
    <string name="uapRecordTestInstructions">Connect the USB Audio Peripheral and press the RECORD or
        RECORD LOOPBACK button below. Verify that a tone is correctly played.</string>
    <string name="audio_uap_record_recordBtn">Record</string>
    <string name="audio_uap_record_recordLoopbackBtn">Record Loopback</string>
    <string name="audio_uap_record_stopBtn">Stop</string>

    <string name="audio_uap_buttons_test">USB Audio Peripheral Buttons Test</string>
    <string name="uapButtonTestInstructions">Connect the USB Audio headset with buttons
        and press each transport/media button in turn.</string>

     <string name="uapNotificationsTestInfo">
         This test verifies that the correct notifications and Intents are sent when a USB audio
         peripheral is connected to the Android device. First USB headset peripheral should be
         connected and the test will acknowledge the USB headset device notifications and plug intent.
         Next a non-headset / headphones USB peripheral should be connected and the test will
         acknowlege the USB device notifications. If all notifications and Intents are received
         the test passes.
     </string>

    <string name="audio_usb_restrict_record_test">USB Audio Restrict Record Access Test</string>
    <string name="audio_usb_restrict_record_entry">
        This test checks that the appropriate warning message is displayed when an app which has
        not been granted RECORD permission could potentially record audio through the raw USB
        API. To test, connect a USB peripheral with CAPTURE capability and press the "Test" button.
        The access permission API should contain a warning message about potential dangerous
        access. If so, the test passes.
    </string>

    <string name="audio_usb_restrict_permission_info">
        The test can only be run with Microphone permission DENIED.\n\n
        To run this test:\n
        &#160;&#160;Exit CTS-Verifier\n
        &#160;&#160;Go to Android Settings\n
        &#160;&#160;Select Apps &amp; notifications\n
        &#160;&#160;Select CTS Verifier\n
        &#160;&#160;Select Permissions\n
        &#160;&#160;Deny Microphone permission\n
        &#160;&#160;Run this test\n
        When complete:\n
        &#160;&#160;Exit CTS-Verifier\n
        &#160;&#160;Return to Permissions Settings for CTS Verifier\n
        &#160;&#160;grant Microphone permission
    </string>
    <string name="usb_restrictrecord_instructions">
        Permissions for CTS Verifier are correctly set to run this test.\n\n
        Connect a USB peripheral with CAPTURE capability. Press the "Test" button and verify that
        a warning is shown in the device access UI.
    </string>

    <string name="uapButtonsBtnALbl">Button A - play/pause</string>
    <string name="uapButtonsBtnBLbl">Button B - volume up (+)</string>
    <string name="uapButtonsBtnCLbl">Button C - volume down (-)</string>
    <string name="uapButtonsBtnDLbl">Button D - voice assist</string>
    <string name="uapButtonsRecognized">Recognized</string>
    <string name="uapButtonsNotRecognized">Not Recognized</string>
    <string name="uapButtonsDisableAssistantTitle">Disable Google Assistant</string>
    <string name="uapButtonsDisableAssistant">For this test to succeed it may be necessary
        to disable the Google Assistant (Settings / Google / Search / Google Assistant Settings /
        Devices / &lt;device name&gt; / Google Assistant)</string>

    <!--  Pro Audio Tests -->
    <string name="pro_audio_latency_test">Pro Audio Test</string>

    <string name="proAudioHasProAudiolbl">Has Pro Audio:</string>
    <string name="proAudioHasLLAlbl">Has Low-Latency Audio:</string>
    <string name="audioLoopbackInputLbl">Audio Input:</string>
    <string name="audioLoopbackOutputLbl">Audio Output:</string>
    <string name="proAudioMidiHasMIDILbl">Has MIDI Support:</string>
    <string name="proAudioMidiHasUSBHostLbl">USB Host Mode:</string>
    <string name="proAudioMidiHasUSBPeripheralLbl">USB Peripheral Mode:</string>
    <string name="proAudioHDMISupportLbl">HDMI Support:</string>
    <string name="proAudioHasHDMICheckBox">Has HDMI Support</string>

    <string name="audio_proaudio_NA">N/A</string>
    <string name="audio_proaudio_hdmiPending">pending...</string>
    <string name="audio_proaudio_hdmiNotFound">No HDMI detected.</string>

    <string name="audio_proaudio_nopa_title">Pro Audio Test</string>
    <string name="audio_proaudio_nopa_message">This device does not set the FEATURE_AUDIO_PRO
        flag and therefore does not need to run this test.</string>

    <string name="hdmi_insufficient">The Connected HDMI device does not meet CDD requirements</string>

    <!-- Various test status strings -->
    <string name="audio_proaudio_pass">Pass</string>
    <string name="audio_proaudio_latencytoohigh">Latency is too high</string>
    <string name="audio_proaudio_confidencetoolow">"Insufficient Confidence value"</string>
    <string name="audio_proaudio_midinotreported">"No MIDI support reported"</string>
    <string name="audio_proaudio_usbhostnotreported">"No USB Host Mode support reported"</string>
    <string name="audio_proaudio_usbperipheralnotreported">"No USB Peripheral Mode support reported"</string>

    <!--  MIDI Test -->
    <string name="midi_test">MIDI Test</string>
    <string name="midi_java_test">Java MIDI Test</string>
    <string name="midi_native_test">Native MIDI Test</string>
    <string name="midi_info">
       For the USB MIDI interface test it is required that you have connected a supported USB
       Audio Peripheral device with standard MIDI 5-pin, DIN (round) connectors and a standard
       MIDI cable. The cable must be connected to the MIDI input and output plugs on the
       peripheral.
       \nFor the USB Bluetooth test it is required that you connect a Yamaha MD-BT01 to the
       correct MIDI plugs on the USB peripheral, the BT01 output jack to the USB interface
       input jack and BT01 input plug to the USB interface output jack.
       \nThe Virtual MIDI test does not require any MIDI interface hardware.
    </string>

    <string name="midiHasMIDILbl">Has MIDI Support</string>

    <string name="midiUSBTestLbl">USB MIDI Loopback Test:</string>
    <string name="usbMidiInputLbl">USB Input:</string>
    <string name="usbMidiOutputLbl">USB Output:</string>
    <string name="midiTestUSBInterfaceBtn">Test USB MIDI Interface</string>

    <string name="midiVirtTestLbl">Virtual MIDI Loopback Test:</string>
    <string name="midiVirtInputLbl">Virtual Input:</string>
    <string name="midiVirtOutputLbl">Virtual Output:</string>
    <string name="midiTestVirtInterfaceBtn">Test Virtual MIDI Interface</string>

    <string name="midiBTTestLbl">Bluetooth MIDI Loopback Test:</string>
    <string name="midiBTInputLbl">Bluetooth Input:</string>
    <string name="midiBTOutputLbl">Bluetooth Output:</string>
    <string name="midiTestBTInterfaceBtn">Test Bluetooth MIDI Interface</string>

    <string name="midiStatusLbl">Status</string>
    <string name="midiNotRunLbl">Not Run.</string>
    <string name="midiPassedLbl">Passed.</string>
    <string name="midiFailedMismatchLbl">Failed - Data Mismatch.</string>
    <string name="midiFailedTimeoutLbl">Failed - Timeout.</string>
    <string name="midiFailedOverrunLbl">Failed - Data Overrun.</string>
    <string name="midiFailedDeviceLbl">Failed - Device Error.</string>
    <string name="midiFailedJNILbl">Failed - JNI Error.</string>

    <!-- Audio general text -->
    <string name="audio_wired_exists">Does this device support wired USB or Analog audio peripherals?</string>
    <string name="audio_wired_no">No</string>
    <string name="audio_wired_yes">Yes</string>
    <string name="audio_general_deficiency_found">WARNING: Some results show potential deficiencies on the system.
    Please consider addressing them for a future release.</string>
    <string name="audio_general_test_passed">Test Result: Successful</string>
    <string name="audio_general_test_failed">Test Result: Not Optimal</string>
    <string name="audio_general_default_false_string">false</string>
    <string name="audio_general_default_true_string">true</string>
    <string name="audio_general_warning">Warning</string>
    <string name="audio_general_level_not_max">Audio Level is not maximum. Please check your device
          is set to max level for audio playback.</string>

    <string name="audio_general_no">No</string>
    <string name="audio_general_yes">Yes</string>
    <string name="audio_general_info">Info</string>
    <string name="audio_general_ok">Ok</string>
    <string name="audio_general_start">Start</string>
    <string name="audio_general_stop">Stop</string>
    <string name="audio_general_status">Status</string>
    <string name="audio_general_pass">PASS</string>
    <string name="audio_general_fail">FAIL</string>

    <string name="audio_general_Input">Input</string>
    <string name="audio_general_Output">Output</string>

    <string name="audio_general_JavaApi">Java API</string>
    <string name="audio_general_NativeApi">Native API</string>

    <string name="audio_general_clear_results">Clear Results</string>

    <!-- Audio Loopback Latency Test -->
    <string name="audio_loopback_latency_test">Audio Loopback Latency Test</string>
    <string name="audio_loopback_info">
        This test verifies that the device can achieve the required or recommended loopback latency.
        To pass the test, the device need only achieve this on one of the following audio paths:\n
          - a <a href="https://source.android.com/devices/audio/latency/loopback">Loopback Plug</a>  connected to a 3.5mm headset jack.\n
          - a <a href="https://source.android.com/devices/audio/latency/loopback">Loopback Plug</a>  connected to a USB audio adapter.\n
          - a USB interface with patch cords connecting the input and output jacks.
          \nPlease connect one of these Loopback mechanisms, and proceed with the instructions
          on the screen. The required &amp; recommended latencies will be displayed.
          The system will measure the input-output audio latency by injecting an audio signal to
          the output and compute the time between generating the signal and recording it back.
          You can vary the Audio Level slider to ensure the pulse will feed back at adequate levels.
          Repeat until a confidence level >= 0.6 is achieved.
    </string>
    <string name="audio_loopback_instructions">
          Please connect a "Loopback Plug" and press "Loopback Plug Ready".
    </string>
    <string name="audio_loopback_plug_ready_btn">Loopback Plug Ready</string>
    <string name="audio_loopback_instructions2">
          Set the audio level to a suitable value, then press Test button.
          It might require multiple tries until a confidence >= 0.6 is achieved.
    </string>
    <string name="audio_loopback_level_text">Audio Level</string>
    <string name="audio_loopback_test_btn">Test</string>
    <string name="audio_loopback_results_text">Results...</string>

    <string name="audio_loopback_failure">FAILURE - Could not allocate analyzer thread.</string>

    <!-- Audio Cold-Start Latency Test -->
    <string name="audio_coldstart_out_latency_test">Audio Cold Start Output Latency Test</string>
    <string name="audio_coldstart_in_latency_test">Audio Cold Start Input Latency Test</string>

    <string name="audio_coldstart_output_info">
        This test measures the time required to play audio from a suspended \"cold\" audio system.
        This time is defined as the \"cold start latency\". To pass this test, a maximum
        cold start latency time of 500ms or less is REQUIRED, while a time of 100ms or less
        is STRONGLY RECOMMENDED. (See <a href="https://source.android.com/compatibility/android-cdd#5_6_audio_latency">Android CDD § 5.6. Audio Latency</a>)
        \n\nTo run this test, it is required to have touch-sounds disabled in the device
        \"Sound &amp; Vibration\" settings
        panel.
        \n\nThe \"Java API\" and \"Native API\" allow for capturing performance data from the
        two streaming APIs. The cold start latency measurement need only pass for one API.
        The Native API generally gives the best performance.
        \n\nAlthough not part of the pass criteria, the test will also report \"open\" &amp;
        \"start\" times. Open time is the time taken to allocate and prepare the player for the
        specified stream attributes. Start time is the time taken to start playing audio on an
        open stream.
    </string>
    <string name="audio_coldstart_input_info">
        This test measures the time required to record audio from a suspended \"cold\" audio system.
        This time is defined as the \"cold start latency\". To pass this test, a maximum
        cold start latency time of 500ms or less is REQUIRED, while a time of 100ms or less
        is STRONGLY RECOMMENDED. (See <a href="https://source.android.com/compatibility/android-cdd#5_6_audio_latency">Android CDD § 5.6. Audio Latency</a>)
        \n\nThe \"Java API\" and \"Native API\" allow for capturing performance data from the
        two streaming APIs. The cold start latency measurement need only pass for one API.
        The Native API generally gives the best performance.
        \n\nAlthough not part of the pass criteria, the test will also report \"open\" &amp;
        \"start\" times. Open time is the time taken to allocate and prepare the recorder for the
        specified stream attributes. Start time is the time taken to start recording audio on an
        open stream.
    </string>
    <string name="audio_coldstart_outputlbl">Output Cold Start Latency</string>
    <string name="audio_coldstart_inputlbl">Input Cold Start Latency</string>
    <string name="audio_coldstart_touchsounds_message">
        Touch sounds are ENABLED. Please DISABLE touch sounds in the \"Sound &amp; Vibration\" settings panel.
    </string>
    <string name="audio_coldstart_notouchsounds_message">Touch sound are DISABLED.</string>

    <!-- Audio Frequency Line Test -->
    <string name="audio_frequency_line_test">Audio Frequency Line Test</string>
    <string name="audio_frequency_line_info">
        The system will measure the frequency response of the left and right line outputs,
        by feeding them back thru the microphone conection with the loopback jack.
        This test requires the Loopback Plug. Please connect a Loopback Plug on the headset
        connector, and proceed with the instructions on the screen.
        </string>
    <string name="audio_frequency_line_instructions">
          Please connect a "Loopback Plug" and press "Loopback Plug Ready".
    </string>
    <string name="audio_frequency_line_plug_ready_btn">Loopback Plug Ready</string>

    <string name="audio_frequency_line_test_btn">Test</string>
    <string name="audio_frequency_line_results_text">Results...</string>

    <!-- Audio Frequency Speaker Test -->
    <string name="audio_frequency_speaker_test">Audio Frequency Speaker Test</string>
    <string name="audio_frequency_speaker_info">
        This test requires an external USB reference microphone. Please connect the USB microphone and proceed with the instructions on the screen.
        The system will measure frequency response of the left and right speakers (if there are two speakers), or the response of the mono speaker twice.
       </string>
    <string name="audio_frequency_speaker_instructions">
          Please connect an USB reference microphone and press "USB Reference microphone ready"
    </string>
    <string name="audio_frequency_speaker_usb_status">Waiting for USB microphone...</string>
    <string name="audio_frequency_speaker_mic_ready_btn">USB Reference microphone ready</string>
    <string name="audio_frequency_speaker_mic_ready_text">USB Audio device detected\n\nPlease set up Device Under test
    in quiet room, and Microphone 20 cms perpendicular to center of screen, then press TEST</string>
    <string name="audio_frequency_speaker_mic_not_ready_text">"No USB Audio device detected. Please reconnect."</string>
    <string name="audio_frequency_speaker_test_btn">Test</string>
    <string name="audio_frequency_speaker_results_text">Results...</string>

    <!-- Audio Frequency Microphone Test -->
    <string name="audio_frequency_mic_test">Audio Frequency Microphone Test</string>
    <string name="frequency_mic_info">
        This test requires an external USB reference microphone and external speakers.
        The test signals can be played from the device under test (DUT) or from a secondary device (e.g. when your DUT can’t support a USB microphone and external speakers simultaneously, or DUT does not have headphone output).
Follow the instructions on the screen to measure the frequency response for the built in microphone.
       </string>

    <string name="frequency_mic_play">Play</string>
    <string name="frequency_mic_stop">Stop</string>
    <string name="frequency_mic_noise_instructions">TEST NOISE: Position speakers 40 cms from device under test.
    Press [PLAY] to play broadband white noise. Press [TEST]
    </string>
    <string name="frequency_mic_test_noise_btn">Test</string>
    <string name="frequency_mic_test_noise_result">Results...</string>

    <string name="frequency_mic_test_usb_background_instructions">TEST USB BACKGROUND: Connect USB microphone and position it right next to microphone under test.
    No source of noise should be active during this test. Press [TEST]</string>
    <string name="frequency_mic_test_usb_background_btn">Test</string>
    <string name="frequency_mic_test_usb_background_result">Results...</string>

    <string name="frequency_mic_test_usb_noise_instructions">TEST USB NOISE: Connect USB microphone and position it right next to microphone under test.
    Position speakers 40 cms from device under test. Press [PLAY] to play broadband white noise. Press [TEST]</string>
    <string name="frequency_mic_test_usb_noise_btn">Test</string>
    <string name="frequency_mic_test_usb_noise_result">Results...</string>

    <string name="frequency_mic_test_global_result">Global Results...</string>

     <!-- Audio Frequency Unprocessed Test -->
    <string name="audio_frequency_unprocessed_test">Audio Frequency Unprocessed Test</string>
    <string name="audio_frequency_unprocessed_info">
    This test requires an external USB reference microphone, external speakers and a Sound Pressure Level meter.
    You can play the test signals from the device under test or from a secondary device.
    Follow the instructions on the screen to measure the frequency response for the built in microphone
    using UNPROCESSED audio source.
    If the Audio Frequency Unprocessed feature is defined in this system, success in all tests is mandatory to pass.
    If the feature is not defined, measurements are still needed, but success in all of them is not mandatory to pass.
       </string>
    <string name="audio_frequency_unprocessed_defined">Audio Frequency Unprocessed feature is defined. Success in all tests is mandatory to pass</string>
    <string name="audio_frequency_unprocessed_not_defined">Audio Frequency Unprocessed feature is NOT defined. Success in all test is NOT mandatory to pass</string>

    <string name="unprocessed_play">Play</string>
    <string name="unprocessed_stop">Stop</string>

    <string name="unprocessed_test_tone_instructions">TEST TONE: Press [PLAY] to play tone at 1 Khz. Measure sound SPL to be 94 dB
    right next to microphone under test. Press [TEST]</string>
    <string name="unprocessed_test_tone_btn">Test</string>
    <string name="unprocessed_test_tone_result">Results...</string>

    <string name="unprocessed_test_noise_instructions">TEST NOISE: Position speakers 40 cms from device under test.
    Press [PLAY] to play broadband white noise. Press [TEST]</string>
    <string name="unprocessed_test_noise_btn">Test</string>
    <string name="unprocessed_test_noise_result">Results...</string>

    <string name="unprocessed_test_usb_background_instructions">TEST USB BACKGROUND: Connect USB microphone and position it right next to microphone under test.
    No source of noise should be active during this test. Press [TEST]</string>
    <string name="unprocessed_test_usb_background_btn">Test</string>
    <string name="unprocessed_test_usb_background_result">Results...</string>

    <string name="unprocessed_test_usb_noise_instructions">TEST USB NOISE: Connect USB microphone and position it right next to microphone under test.
    Position speakers 40 cms from device under test. Press [PLAY] to play broadband white noise. Press [TEST]</string>
    <string name="unprocessed_test_usb_noise_btn">Test</string>
    <string name="unprocessed_test_usb_noise_result">Results...</string>

    <string name="unprocessed_test_global_result">Global Results...</string>

    <!-- Audio Frequency Voice_Recognition Test -->
    <string name="audio_frequency_voice_recognition_test">Audio Frequency Voice Recognition Test</string>
    <string name="audio_frequency_voice_recognition_info">
        This test requires an external USB reference microphone, external speakers and a Sound Pressure Level meter.
        You can play the test signals from the device under test or from a secondary device.
        Follow the instructions on the screen to measure the frequency response for the built in microphone
        using VOICE_RECOGNITION audio source.
    </string>
    <string name="vr_test_tone_instructions">TEST TONE: Press [PLAY] to play tone at 1 Khz. Measure sound to be 90 dB SPL right next to microphone under test. Press [TEST]</string>
    <string name="vr_test_noise_instructions">TEST NOISE: Position speakers 40 cms from device under test.
        Press [PLAY] to play broadband white noise. Press [TEST]</string>
    <string name="vr_test_usb_background_instructions">TEST USB BACKGROUND: Connect USB microphone and position it right next to microphone under test.
        No source of noise should be active during this test. Press [TEST]</string>
    <string name="vr_test_usb_noise_instructions">TEST USB NOISE: Connect USB microphone and position it right next to microphone under test.
        Position speakers 40 cms from device under test. Press [PLAY] to play broadband white noise. Press [TEST]</string>

    <!-- Analog Headset Test -->
    <string name="audio_headset_audio_test">Analog Headset Audio Test</string>
    <string name="analog_headset_query">Does this Android device have an analog headset jack?</string>
    <string name="analog_headset_play">Play</string>
    <string name="analog_headset_stop">Stop</string>
    <string name="analog_headset_playback_prompt">Play a test tone and verify correct playback</string>
    <string name="analog_headset_playback_query">Was the audio correctly played through the headset?</string>
    <string name="analog_headset_keycodes_label">Headset key codes</string>
    <string name="analog_headset_headsethook">HEADSETHOOK</string>
    <string name="analog_headset_volup">VOLUME_UP</string>
    <string name="analog_headset_voldown">VOLUME_DOWN</string>
    <string name="analog_headset_test">Analog Headset Test</string>
    <string name="analog_headset_pass_noheadset">"PASS. No headset port available."</string>
    <string name="analog_headset_pass">PASS.</string>
    <string name="analog_headset_port_detected">"Analog port detected."</string>
    <string name="analog_headset_press_buttons">Press headset buttons to verify recognition.</string>
    <string name="analog_headset_headset_connected">Headset connected.</string>
    <string name="analog_headset_no_headset">No Headset. Connect headset to 3.5mm analog jack.</string>
    <string name="analog_headset_action_received">ACTION_HEADSET_PLUG received - </string>
    <string name="analog_headset_unplugged">Unplugged</string>
    <string name="analog_headset_plugged">Plugged</string>
    <string name="analog_headset_mic"> [mic]</string>
    <string name="analog_headset_test_info">This test tests the following functionality with respect to wired analog headsets.\n
        1. Correct audio playback.\n
        2. Plug intents.\n
        3. Headset keycodes.\n
        \nTo execute test:\n
        1. Plug in an Android-compatible, analog headset. Verify connection/recognition.\n
        2. Play test tone and verify correct behavior.\n
        3. Press headset buttons until all are recognized on the test screen.\n
        \nTo run this test it is necessary to have an Android device with a 3.5mm analog headset jack and a compatible analog headset with Hook, Volume Up and Volume Down buttons.\n
        \n(see <a href="https://source.android.com/devices/accessories/headset/plug-headset-spec">3.5 mm Headset: Accessory Specification</a> and
        <a href="https://source.android.com/compatibility/android-cdd#7_8_2_1_analog_audio_ports">Android CDD § 7.8.2.1. Analog Audio Ports</a>)
    </string>
    <!-- Audio AEC Test -->
    <string name="audio_aec_test">Audio Acoustic Echo Cancellation (AEC) Test</string>
    <string name="audio_aec_info">
        The recording source VOICE_COMMUNICATION will be tested with/without the Acoustic Echo Canceller effect engaged.
        The Acoustic Coupling Factor (ACF) will be computed for each case. A successful test expects ACF less than 0.4 for AEC ON,
        and ACF greater than 0.6 for AEC OFF.
        This test requires a quiet environment, and no headphones or similar connected.
        This test must pass in devices where AEC functionality is mandatory or any device which implements AEC.
    </string>
    <string name="audio_aec_instructions">Press [TEST] to play a voice recording twice with different parameters.</string>
    <string name="audio_aec_mandatory_test">Is AEC mandatory in this device?</string>

    <!--Audio Frequency Global strings -->
    <string name="af_button_play">Play</string>
    <string name="af_button_stop">Stop</string>

    <string name="af_button_test">Test</string>
    <string name="af_test_results">Results...</string>
    <string name="af_global_test_results">Global Results...</string>
    <string name="af_no">No</string>
    <string name="af_yes">Yes</string>

    <!-- AudioTap2Tone test -->
    <string name="audio_tap2tone">Audio Tap To Tone Test</string>
    <string name="audio_tap2tone_info">This tests the latency from a screen interaction to a
        resulting tone. This time is a combination of touch screen latency and audio latency.\nThis
        test is best conducted in a quiet room with the device laying on a table. Select
        the Audio API to test (\"Native\" has the lowest latency) and press the \"Start\" button.
        Use your fingernail to tap ONCE on the field below to trigger the test tone. DO NOT leave
        the finger resting on the test field. A strong "tick" sound from the fingernail striking
        the display is necessary to register the start of the test process. After tapping ONCE,
        wait until the results are displayed in the field above the waveform display before
        tapping for the next test run.\nFive successful tests runs are required to determine
        if the test as a whole succeeds.
    </string>
    <string name="audio_tap2tone_spec">80ms or less average latency is STRONGLY RECOMMENDED to pass.</string>
    <string name="audio_tap2tone_too_few">Not enough edges. Use fingernail.</string>
    <string name="audio_tap2tone_too_many">Too many edges. Use fingernail. Ensure there is
    no background noise.</string>

    <!-- Strings for 6DoF test -->
    <string name="six_dof_test">6DoF Test</string>
    <string name="action_settings">Settings</string>
    <string name="start">Start</string>
    <string name="motion_tracking_permission">"Motion Tracking permission needed!"</string>
    <string name="translations">Translations:</string>
    <string name="rotations">Rotations:</string>
    <string name="action_place_marker">Place Marker</string>
    <string name="markers">Markers:\n</string>
    <string name="title_activity_cts">CTSActivity</string>
    <string name="stop">Stop!</string>
    <string name="stop_message">Mark where you are standing with something like a piece of card and
        then press ready to record this waypoint
    </string>
    <string name="ready">Ready</string>
    <string name="initial">First Waypoint</string>
    <string name="phase1_initial_message">When you are ready to place your first waypoint, place a
        marker at the devices current location. Use something that will allow you to put the device
        in the exact same position and orientation on the second lap. Then, while the device is on
        the marker, click the turquoise action button to record the first waypoint.\n\nStart walking
        in a direction. The button will appear again when you have walked far enough. Place a marker
        at the device\'s location and press the button to record a waypoint. You cannot place
        waypoints in a straight line, so for your 3rd waypoint turn 90 degrees and walk in a
        direction that will make a triangle out of your 3 waypoints.
    </string>
    <string name="phase2_initial_message">You now need to visit each waypoint, clicking the
        turquoise action button at each one. You need to reach each waypoint in 20 seconds. While
        you are on your way to the waypoints, the camera preview will rotate. You will need to
        rotate the device to match the rotation of the camera preview. A box will be shown to help
        you. It shows the device\'s current rotation and will change color based on whether you are
        close enough to the required rotation. Red if you are failing, green if you are passing.
        When you have reached the next waypoint, the device can be returned to its original
        rotation.
    </string>
    <string name="last">Go back to the first waypoint</string>
    <string name="last_message">Now go back to the first waypoint and press ready to finish the
        first lap.
    </string>
    <string name="got_it">Got it!</string>
    <string name="lap2_instructions">Now, go to each waypoint (including your initial
        one) and click the turquoise action button. Then move on to the next waypoint and do the
        same.\nThe last waypoint should be the first waypoint again.
    </string>
    <string name="test1_pass2">Pass 2</string>
    <string name="results">Results</string>
    <string name="overall_instructions">These tests are designed to verify the correctness and
        accuracy of a 6DoF enabled device. There will be 3 phases to these tests, each testing a
        different part of 6DoF functionality.
    </string>
    <string name="phase1_description">This first test will test the accuracy of the device. It will
        ask you to mark out 4 waypoints and then return to the original waypoint to complete the
        lap. After this you will then need to do another lap without any HUD information. At the
        end, the pairs of waypoints and the path you travelled will be compared and you will be
        given a result.
    </string>
    <string name="phase2_description">This test will test the robustness of the device. Using the
        same 4 waypoints as before, you will need to do a lap, reaching each waypoint in the
        allotted time.\nWhile you are on your way to the waypoints, the camera preview will rotate.
        You will need to rotate the device to match the rotation of the camera preview. A box will
        be shown to help you. It shows the device\'s current rotation and will change color based
        on whether you are close enough to the required rotation. Red if you are failing, green if
        you are passing. When you have reached the next waypoint, the device can be returned to
        its original rotation.
    </string>
    <string name="phase3_description">Now we will test the AR capability of the device. Again, you
        will need to do a lap of the waypoints, but this time between each waypoint the device will
        overlay hoops that you must pass the device through as you go along.
    </string>
    <string name="distance">Distance from last waypoint:</string>
    <string name="obj_return_to_initial_waypoint">Return to initial waypoint</string>
    <string name="waypointPlaced">Waypoint placed!</string>
    <string name="undo">undo</string>
    <string name="distance_remaining">Distance Remaining:\n</string>
    <string name="waypoint_differences">Waypoints</string>
    <string name="path_differences">Paths</string>
    <string name="error_distance">Not far away enough from other waypoints!</string>
    <string name="error_area">Not enough area covered.</string>
    <string name="passed">Passed!</string>
    <string name="failed">Failed!</string>
    <string name="test_failed">Test Failed!</string>
    <string name="error_start_point">Not close enough to initial waypoint!</string>
    <string name="waypoint_distance">Waypoint %1$s: %2$s</string>
    <string name="total">Total %1$s</string>
    <string name="path">Path %1$s: %2$s</string>
    <string name="fail">Fail</string>
    <string name="pass">Pass</string>
    <string name="info">Info</string>
    <string name="coming_soon">Coming soon!</string>
    <string name="motion_tracking_invalid_state">Motion Tracking has entered an invalid state
    </string>
    <string name="action_xml">XML</string>
    <string name="error_null_fragment">UI fragment was null, couldn\'t do callback to listener
    </string>
    <string name="error_retained_fragment_null">DataFragment is null</string>
    <string name="time_remaining">%1$s seconds remaining to get to next waypoint</string>
    <string name="action_skip_to_2nd">Skip to 2nd Test</string>
    <string name="failed_pause_resume">Test Failed because Test Activity was paused</string>
    <string name="action_overlapping_outlines">Overlapping Outlines</string>
    <string name="action_overlapping_filled">Overlapping Filled</string>
    <string name="time">Time</string>
    <string name="rotation_result">Rotation</string>
    <string name="action_separate_outlines">Separate Outlines</string>
    <string name="action_separate_filled">Separate Filled</string>
    <string name="action_one">One Rectangle</string>
    <string name="rotation_mode">Change rotation mode</string>
    <string name="phase3_initial_message">Go through the rings as you visit waypoints.</string>
    <string name="rings">Rings</string>
    <string name="rings_entered">Rings collected %1$s/%2$s</string>
    <string name="error_rings_not_entered">You haven\'t collected all the rings in this path!
    </string>
    <string name="save">Save</string>

    <string-array name="initial_waypoint">
        <item>Find a place for your first waypoint</item>
        <item>Go to initial waypoint</item>
    </string-array>

    <string-array name="next_waypoint">
        <item>Find a suitable place for waypoint 0</item>
        <item>Go to waypoint 0</item>
    </string-array>

    <string-array name="phase">
        <item>Phase 1</item>
        <item>Phase 2</item>
        <item>Phase 3</item>
    </string-array>

    <string-array name="phase_descriptions">
        <item>@string/phase1_description</item>
        <item>@string/phase2_description</item>
        <item>@string/phase3_description</item>
    </string-array>

    <!-- Strings for setting and restoring default dialer for voicemail tests -->
    <string name="voicemail_restore_default_dialer_description">Restore the default dialer setting by going to Default apps -> Phone app</string>
    <string name="voicemail_restore_default_dialer_button">Restore the default dialer"</string>
    <string name="voicemail_default_dialer_already_set">Default dialer already set</string>
    <string name="voicemail_default_dialer_already_restored">Default dialer already restored</string>
    <string name="voicemail_set_default_dialer_description">Before the test, the CTS verifier should be set to the default dialer</string>
    <string name="voicemail_set_default_dialer_button">Set CTS verifier as default dialer"</string>

    <!-- Strings for voicemail broadcast test -->
    <string name="voicemail_broadcast_test">Voicemail Broadcast Test</string>
    <string name="voicemail_broadcast_instructions">This test verifies that the default dialer can intercept the voicemail notification. The test must be conducted on a SIM with visual voicemail disabled</string>
    <string name="voicemail_broadcast_no_carrier_support">The carrier does not support voicemail, this test is not applicable.</string>
    <string name="voicemail_leave_voicemail">Send a voicemail to the device, CTS verifier should receive a voicemail notification broadcast</string>
    <string name="voicemail_broadcast_received">Voicemail broadcast Received</string>

    <!-- Strings for VisualVoicemailService test -->
    <string name="visual_voicemail_service_test">VisualVoicemailService Test</string>
    <string name="visual_voicemail_service_instructions">This test verifies that the VisualVoicemailService can receive SIM inserted and removed events</string>
    <string name="visual_voicemail_service_remove_sim_before_test">Removed the SIM before starting the test. This test only applies to devices with hotswap-able SIM</string>
    <string name="visual_voicemail_service_remove_sim_ok">Ok</string>
    <string name="visual_voicemail_service_remove_sim_not_applicable">Not applicable</string>
    <string name="visual_voicemail_service_insert_sim">Insert SIM</string>
    <string name="visual_voicemail_service_insert_sim_received">Service connection event received</string>
    <string name="visual_voicemail_service_remove_sim">Remove SIM</string>
    <string name="visual_voicemail_service_remove_sim_received">SIM removal event received</string>

    <!-- Strings for CallSettingsCheck test -->
    <string name="call_settings_check_test">Hide voicemail in call settings test</string>
    <string name="call_settings_check_instructions">This test verifies that the default dialer can
        hide voicemail settings in the call settings menu by using
        TelephonyManager.METADATA_HIDE_VOICEMAIL_SETTINGS_MENU
    </string>
    <string name="open_call_settings_explanation">Tap the button, and verify that \"voicemail\" does
        not exist in the call settings
    </string>
    <string name="open_call_settings">Open call settings</string>
    <string name="voicemail_hidden">\"Voicemail\" does not exist</string>
    <string name="voicemail_not_hidden">\"Voicemail\" exists</string>

    <!-- Strings for DialerIncomingCall test -->
    <string name="dialer_incoming_call_test">Dialer Receives Incoming Call</string>
    <string name="dialer_incoming_call_test_instructions">This test verifies that the default dialer
      can receive incoming calls after it has been set.
    </string>
    <string name="dialer_incoming_call_detected">Detected the incoming call. Activity passed.</string>
    <string name="dialer_check_incoming_call_explanation">Call the device and end the call in the
        pop up in-call UI.</string>
    <string name="dialer_check_incoming_call">Verify Call Received</string>

    <!-- Strings for VoicemailSettingsCheck test -->
    <string name="ringtone_settings_check_test">Hide settings in voicemail test</string>
    <string name="ringtone_settings_check_instructions">This test verifies that voicemail settings
        accessible with public API can be hidden when launching
        TelephonyManager.ACTION_CONFIGURE_VOICEMAIL with EXTRA_HIDE_PUBLIC_SETTINGS.
    </string>
    <string name="open_voicemail_settings_explanation">Tap the button, ringtone and virbration
        settings does not exist in the voicemail settings.
    </string>
    <string name="open_voicemail_settings">Open voicemail settings</string>
    <string name="ringtone_hidden">Ringtone settings does not exist</string>
    <string name="ringtone_not_hidden">Ringtone settings exists</string>

    <!-- Strings for DialerShowsHunOnIncomingCallActivity test -->
    <string name="dialer_shows_hun_test">Dialer Shows HUN on Incoming Call</string>
    <string name="dialer_shows_hun_test_instructions">This test verifies that the default dialer
        shows a heads up notification on incoming call, and that only one notification is shown.
    </string>
    <string name="dialer_shows_hun_explanation">Call the device.
        Check the box if the heads up notification was shown containing the text
        \"CTS Incoming Call Notification\", and only one incoming call notification was shown.
        Also a pop up CtsVerifier in call UI will show.
    </string>
    <string name="dialer_shows_hun_check_box">HUN shown and meets criteria specified above.</string>
    <string name="dialer_incoming_call_hun_teaser">Incoming Call</string>
    <string name="dialer_incoming_call_hun_desc">CTS Incoming Call Notification</string>

    <!-- Strings for DialerImplementsTelecomIntentsActivity test -->
    <string name="dialer_telecom_intents_test">System Implements Telecom Intents</string>
    <string name="dialer_telecom_intents_test_instructions">This test verifies that the system handles
        the specified Telecom Intents.
    </string>
    <string name="dialer_check_intents_implemented_explanation">Press the buttons below to launch settings activities.
    Check the associated box if the activity loads and was launched succesfully.</string>
    <string name="dialer_telecom_intents_call_settings">Launch call settings</string>
    <string name="dialer_telecom_intents_short_sms">Launch short sms answer settings</string>
    <string name="dialer_telecom_intents_calling_accounts">Launch calling accounts settings</string>
    <string name="dialer_telecom_intents_accessibility_settings">Launch accessibility settings</string>
    <string name="dialer_check_intents_check_box">Setting Launched</string>

    <!-- USB Audio Peripheral Tests -->
    <string name="usbaudio_results_text">Results...</string>

    <!-- USB Audio Peripheral Attributes Test -->
    <string name="usbaudio_attribs_test"> USB Audio Peripheral Attributes Test</string>

    <string name="usbaudio_attribs_info">This test tests that the USB Audio HAL returns the
        expected set of attributes for a well-known USB audio peripheral. See the
        <a href="https://source.android.com/compatibility/cts/usb-audio#recommended-peripherals">
            Mandated Peripherals
        </a>
        section of the <a href="https://source.android.com/compatibility/cts/usb-audio">
            USB Audio CTS Verifier Tests
        </a>.
        for a list of supported USB audio peripherals.  The attributes of the supported
        peripherals are stored in the app in a set of \"Peripheral Profiles\".\n\n
        To execute the test:\n
        1. Specify whether or not the DUT supports USB host mode (CDD 5.10 C-1-3). If not the test
        simply passes.
        2. Plug in a supported USB Audio Peripheral.\nThe peripheral\'s attributes will be
        displayed along with the name of the associated profile. If the peripheral matches the
        profile, the test passes. If not, the mismatches are displayed.
    </string>

    <!-- USB Audio Peripheral Play Test -->
    <string name="usbaudio_play_test"> USB Audio Peripheral Play Test</string>
    <string name="usbaudio_play_info">
        This test requires that you have connected a USB Audio Interface peripheral and
        some way to monitor the output. Press the \"Play\" button and verify that a tone is produced.
       </string>

    <!-- USB Audio Peripheral Record Test -->
    <string name="usbaudio_record_test"> USB Audio Peripheral Record Test</string>
    <string name="usbaudio_record_info">
        This test requires that you have connected a USB Audio Interface peripheral.
        Connect the outputs to the inputs (with patch cables). Start playback by pressing the
        \"Record Loopback\" button and verify that the recorded signal is displayed in the wave
        display view. (It may be necessary to adjust the input controls on the peripheral).
       </string>

    <!-- USB Audio Peripheral Buttons Test -->
    <string name="usbaudio_buttons_test"> USB Audio Peripheral Buttons Test</string>
    <string name="usbaudio_buttons_info">
        This test requires that you have connected a USB Audio headset that supports the
        Android USB audio headset buttons specification. Press each
        \"transport\" button and verify that it is recognized by the test. When each of the
        buttons has been recognized the \"pass\" button will be enabled.
    </string>

    <!-- Pro Audio Test -->
    <string name="proaudio_test">Pro Audio Test</string>
    <string name="proaudio_info">This tests that any device claiming \"Pro Audio\" meets the
        requirements specified in the
        <a href="https://source.android.com/compatibility/12/android-12-cdd#510_professional_audio">
            CDD section 5.10. Professional Audio</a>
        \n\nTo execute the test:
        \n1. Note that all required flags report \"true\"
        \n2. If the DUT supports HDMI:
        \n  a. Click the \"Has HDMI Support\" checkbox
        \n  b. Connect an HDMI device to the DUT
        \n  c. Verify that the reported HDMI attributes meet the specification.
        \n\nNote that the latency measurement for Pro Audio has been moved to the
        Audio Loopback Latency Test
    </string>
    <string name="proaudio_hdmi_infotitle">HDMI Support</string>
    <string name="proaudio_hdmi_message">Please connect an HDMI peripheral to validate
        HDMI output attributes.
    </string>

    <!-- Telecom tests -->
    <string name="telecom_enable_phone_account_test"> Telecom Enable Phone Account Test</string>
    <string name="telecom_enable_phone_account_info">
        This test verifies that a third party ConnectionService can be enabled by the user.
    </string>
    <string name="telecom_enable_phone_account_step_1">
        Click the button below to register a test PhoneAccount and ConnectionService.
    </string>
    <string name="telecom_enable_phone_account_register_button">Register Phone Account</string>
    <string name="telecom_enable_phone_account_step_2">
        In the Calling accounts settings, choose "All calling accounts" and enable the "CTS Verifier Test" account.
        On AOSP this is accessible from: Phone app > Settings > Calls > Calling Accounts.
        Once you have completed this step, return here and click the Confirm button.
    </string>
    <string name="telecom_enable_phone_account_confirm_button">Confirm</string>

    <string name="telecom_outgoing_call_test">Telecom Outgoing Call Test</string>
    <string name="telecom_outgoing_call_test_info">This test verifies that the default
        dialer on the system is able to make a call using a third-party ConnectionService.</string>
    <string name="telecom_outgoing_call_step_1">
        Click the button below to register a test PhoneAccount and ConnectionService. You will be
        taken to the phone account selection screen. Please enable the "CTS Verifier Test"
        account and select it as the default account for outgoing calls. Once you have completed
        this step, return here and click the "Confirm Phone Account" button.
    </string>
    <string name="telecom_outgoing_call_register_enable_phone_account_button">
        Register and Enable Phone Account
    </string>
    <string name="telecom_outgoing_call_confirm_register_button">Confirm Phone Account</string>
    <string name="telecom_outgoing_call_step_2">
        Click the button below to dial an outgoing call. This will populate the default dialer
        app with a dummy phone number. Initiate the phone call from the dialer app, then return
        to this screen while the call is still in progress.
    </string>
    <string name="telecom_outgoing_call_dial_button">Dial</string>
    <string name="telecom_outgoing_call_step_3">
        Click the button below to confirm that the ongoing outgoing call was correctly made.
    </string>
    <string name="telecom_outgoing_call_confirm_button">Confirm</string>

    <string name="telecom_incoming_call_test">Telecom Incoming Call Test</string>
    <string name="telecom_incoming_call_test_info">This test verifies that the default
        dialer on the system is able to receive a call from a third-party connection service.
    </string>
    <string name="telecom_incoming_call_step_1">
        Click the button below to register a test PhoneAccount and ConnectionService. You will be
        taken to the phone account selection screen. Please enable the "CTS Verifier Test"
        account. Once you have completed this step, return here and click the
        "Confirm Phone Account" button.
    </string>
    <string name="telecom_incoming_call_register_enable_phone_account_button">
        Register and Enable Phone Account
    </string>
    <string name="telecom_incoming_call_confirm_register_button">Confirm Phone Account</string>
    <string name="telecom_incoming_call_step_2">
        Click the button below to initiate an incoming call. The phone should start ringing.
        Answer the call, confirm that you can hear an audio clip with Eisenhower\'s voice, then
        return to this screen while the call is still ongoing.
    </string>
    <string name="telecom_incoming_call_dial_button">Dial</string>
    <string name="telecom_incoming_call_step_3">
        Click the button below to confirm that the ongoing incoming call was properly answered and
        that audio is audible.
    </string>
    <string name="telecom_incoming_call_confirm_button">Confirm</string>
    <string name="telecom_incoming_self_mgd_test"> Incoming Self-Managed Connection Test</string>
    <string name="telecom_incoming_self_mgd_info">
        This test verifies that an incoming call from a Self-Managed Connection Service will trigger
        a Telecom-managed incoming call UI when it is not possible to hold an ongoing call on the
        device.
    </string>
    <string name="telecom_incoming_self_mgd_step_1">
        Click the button below to register a test self-managed ConnectionService.
    </string>
    <string name="telecom_incoming_self_mgd_register_button">Register Self-Managed ConnectionService</string>
    <string name="telecom_incoming_self_mgd_step_2">
        Start two phone calls on the device under test; this generates a scenario where calls cannot
        be held when the incoming self-managed call is received.  Click "verify calls" to confirm
        that the calls were started.
    </string>
    <string name="telecom_incoming_self_mgd_verify_call_button">Verify Calls</string>
    <string name="telecom_incoming_self_mgd_step_3">
        Click the button below to start a test incoming self-managed call.  Answer the call in the
        UI when prompted.
    </string>
    <string name="telecom_incoming_self_mgd_place_call_button">Start Self-Managed Call</string>
    <string name="telecom_default_dialer_test_title">Default Dialer Test</string>
    <string name="telecom_default_dialer_test_info">
        This test verifies that a third party dialer can show an incoming call screen when the
        device is locked.
    </string>
    <string name="telecom_default_dialer_step_1">
        Click the button below to set CtsVerifier as the default dialer.
    </string>
    <string name="telecom_default_dialer_set_third_party_dialer_button">
        Set third party dialer
    </string>
    <string name="telecom_default_dialer_step_2">
        Click the button to make sure that this phone is secured with a lock screen.
    </string>
    <string name="telecom_confirm_lock_screen">Confirm lock screen</string>
    <string name="telecom_default_dialer_step_3">
        Click the button below to lock the phone and then call this device. Answer the incoming call
        in the UI when prompted without unlock the phone.
    </string>
    <string name="telecom_default_dialer_lock_button">Lock phone and dail</string>
    <string name="telecom_default_dialer_step_4">
        Click the button below to confirm that the ongoing incoming call was answered when the
        device is locked.
    </string>
    <string name="telecom_default_dialer_end_button">End call and confirm</string>
    <string name="telecom_default_dialer_confirm_button">Confirm</string>
    <string name="telecom_in_call_ui_label">CtsVerifierInCallUi</string>
    <!-- Strings for SetNewPasswordComplexityTest -->
    <string name="set_complexity_test_title">Set New Password Complexity Test</string>
    <string name="set_complexity_test_message">
        This test verifies that when an app prompts users to set a new screen lock of a certain complexity level, users cannot set a screen lock weaker than the specified complexity.\n
        \nClick the complexity level buttons one by one and make sure you can only set a screen lock not weaker than the types and minimum length specified on the right of each button.
    </string>
    <string name="set_complexity_high_txt">High</string>
    <string name="set_complexity_medium_txt">Medium</string>
    <string name="set_complexity_low_txt">Low</string>
    <string name="set_complexity_none_txt">None</string>
    <string name="set_complexity_high_desc">
        PIN without repeating (4444) or ordered (1234, 4321, 2468) sequences, length at least 8; Or
        \nAlphabetic, length at least 6; Or
        \nAlphanumeric, length at least 6</string>
    <string name="set_complexity_medium_desc">
        PIN without repeating (4444) or ordered (1234, 4321, 2468) sequences, length at least 4; Or
        \nAlphabetic, length at least 4; Or
        \nAlphanumeric, length at least 4</string>
    <string name="set_complexity_low_desc">Any pattern, PIN or password</string>
    <string name="set_complexity_none_desc">No restrictions</string>
    <!-- Strings for UnlockedDeviceRequiredTest -->
    <string name="unlock_req_config_lock_screen">Secure lock screen has not been set up. Go to
        Settings -> Security to set up a lock screen.</string>
    <string name="unlock_req_config_lock_screen_and_biometrics">Secure lock screen has not been set
        up. Go to Settings -> Security to set up a lock screen and biometric unlock.</string>
    <string name="unlock_req_config_biometrics">Biometric unlock has not been set up. Go to Settings
        -> Security to set up biometric unlock.</string>
    <string name="unlock_req_biometric_lock">Lock the screen, wait 5 seconds, then unlock with
        biometrics.</string>
    <!-- This message should only be displayed briefly immediately after the user has unlocked
        the device; as soon as key access is verified this message will be updated. -->
    <string name="unlock_req_unlocked">Verifying the key is accessible after the unlock...</string>
    <string name="unlock_req_credential_lock">Lock the screen, wait 5 seconds, then unlock with
        credentials.</string>
    <string name="unlock_req_successful">Test completed successfully.</string>
    <string name="unlock_req_failed_key_available_when_locked">Test failed; the key was available
        when the device was locked.</string>
    <string name="unlock_req_failed_key_unavailable_when_unlocked">Test failed; the key was not
        available when the device was unlocked.</string>
    <!-- While this state should never be reached since all possible states are accounted for
         it is included just in case. -->
    <string name="unlock_req_unknown_state">The test is in an unexpected state; please dismiss
        this dialog and restart the test.</string>

    <!-- Notification Bubble Tests-->
    <string name="bubbles_notification_title">Bubble Notification Tests</string>
    <string name="bubbles_test_title">Bubble Tests</string>
    <string name="bubbles_test_info">This set of tests checks the settings, UI, and behaviour of
        bubble notifications. Bubbles are special notifications that can appear as a floating button
        on the screen along with a notification in the notification shade. When the floating button
        is tapped an activity is opened in a contained view and the notification is hidden from the
        shade.</string>
    <!-- Default settings -->
    <string name="bubbles_test_check_defaults_title">Check Default Settings</string>
    <string name="bubbles_test_check_defaults_verify">This step verifies the default bubble
        settings on the device. \n\n
        Bubbles are enabled at a feature level and at a per-app level.\n\n
        By default, bubbles are enabled at a feature level, but off for apps until the user opts in.
        \n\nIf the default settings are correct, the test will indicate that the state is correct.
    </string>
    <!-- Bubble button -->
    <string name="bubbles_test_bubble_button_title">Bubble Button</string>
    <string name="bubbles_test_bubble_button_verify">1. Click the button below to send a bubble
        notification.\n\n
        2. Pull down the notification shade and press the bubble button on the bottom right of the
        notification.\n\n
        3. Pass this test if tapping the bubble button opens the bubble.</string>
    <string name="bubbles_test_bubble_button_button">Send notification</string>
    <!-- Bubble preference selected -->
    <string name="bubbles_test_app_selected_title">Check Settings After Bubble Button</string>
    <string name="bubbles_test_app_selected_verify">When a notification is turned into a bubble
        via the bubble button, the app setting for bubbles will change to allow selected
        notifications to bubble. If the settings are right, the test will indicate that the state
        is correct.</string>
    <!-- Disable at feature level -->
    <string name="bubbles_test_disable_title">Disable Bubbles Feature</string>
    <string name="bubbles_test_disable_verify">Click the button to open notification settings,
        find Bubbles and turn the feature off. When the setting is off, the test will indicate that
        the state is correct.</string>
    <string name="bubbles_test_disable_button">Open settings</string>
    <!-- App settings available when disabled -->
    <string name="bubbles_test_enable_title">Enable Bubbles for CTS Verifier</string>
    <string name="bubbles_test_enable_verify">1. Click the button below and enable bubbles for the
        verifier app on the resulting screen, select "All conversations can bubble".\n\n
        2. You will be prompted to turn on bubbles for the device, turn them on.\n\n
        Once this is done, the test will indicate that the state is correct.</string>
    <string name="bubbles_test_enable_button">Open bubble settings</string>
    <!-- Send bubble -->
    <string name="bubbles_test_send_bubble_title">Send bubble notification</string>
    <string name="bubbles_test_send_bubble_verify">Click the button below and verify that there is a
        bubble on the screen and a notification in the notification shade.
    </string>
    <string name="bubbles_test_send_bubble_button">Send bubble notification</string>
    <!-- Suppress notification -->
    <string name="bubbles_test_suppress_notif_title">Hide notification</string>
    <string name="bubbles_test_suppress_notif_verify">Click the button below and verify that the
        bubble is still on the screen, but the notification is now hidden from the notification
        shade.
    </string>
    <string name="bubbles_test_suppress_notif_button">Update bubble to hide notification</string>
    <!-- Add notification -->
    <string name="bubbles_test_add_notif_title">Show notification</string>
    <string name="bubbles_test_add_notif_verify">Click the button below and verify that the bubble
        is still on the screen, the notification is now visible in the notification shade, and the
        bubble has a dot indicating the new message.
    </string>
    <string name="bubbles_test_add_notif_button">Update bubble to show notification</string>
    <!-- Remove bubble metadata -->
    <string name="bubbles_test_remove_metadata_title">Remove bubble</string>
    <string name="bubbles_test_remove_metadata_verify">Click the button below and verify that the
        bubble is removed from the screen, and the notification is still visible in the notification
        shade.</string>
    <string name="bubbles_test_remove_metadata_button">Remove bubble</string>
    <!-- Add bubble metadata -->
    <string name="bubbles_test_add_metadata_title">Add bubble</string>
    <string name="bubbles_test_add_metadata_verify">Click the button below and verify that the
        bubble appears on the screen, and the notification is still visible in the notification
        shade.</string>
    <string name="bubbles_test_add_metadata_button">Add bubble</string>
    <!-- Expand bubble -->
    <string name="bubbles_test_expand_bubble_title">Open bubble</string>
    <string name="bubbles_test_expand_bubble_verify">Tap on the bubble to open it, then tap on the
        bubble again to collapse it and return to this screen. Verify that after opening the bubble,
        there is no longer a notification for it visible in the notification shade.</string>
    <!-- Dismiss bubble -->
    <string name="bubbles_test_dismiss_title">Drag and dismiss bubble</string>
    <string name="bubbles_test_dismiss_verify">Click the button below and verify that the bubble
        is still on screen, and the notification is visible in the notification shade.\n\n
        Drag the bubble, while dragging a UI affordance should show. Verify that: \n\n
        1. Dragging and dropping the bubble on that UI affordance removes it from the screen.\n\n
        2. The notification should remain in the notification shade.</string>
    <string name="bubbles_test_dismiss_button">Update bubble to show notification</string>
    <!-- Dismiss notification -->
    <string name="bubbles_test_dismiss_notif_title">Dismiss notification</string>
    <string name="bubbles_test_dismiss_notif_verify">Click the button below and verify that a bubble
        appears on screen, and the notification is visible in the notification shade.\n\n
        Dismiss the notification from the notification shade and verify that the bubble remains on
        screen.</string>
    <string name="bubbles_test_dismiss_notif_button">Send bubble notification</string>
    <!-- Auto expand bubble -->
    <string name="bubbles_test_autoexpand_title">Auto expand bubble</string>
    <string name="bubbles_test_autoexpand_verify">Click the button below and verify that a bubble
        appears on screen, auto-expanded.</string>
    <string name="bubbles_test_autoexpand_button">Send auto-expanded bubble notification</string>
    <!--Overflow exists -->
    <string name="bubbles_test_overflow_title">Bubble overflow (empty)</string>
    <string name="bubbles_test_overflow_verify">Tap the bubble to expand it and verify there is an
        affordance to see previous bubbles. It should be empty right now and show an empty state
        message.</string>
    <!-- Bubbles appear in overflow -->
    <string name="bubbles_test_bubbles_in_overflow_title">Bubble overflow (with bubbles)</string>
    <string name="bubbles_test_bubbles_in_overflow_verify">1. Press the button below to create
        several bubbles.\n\n
        2. Expand the stack and drag down two of the bubbles to dismiss them.\n\n
        3. Tap on the bubble overflow, pass this test if the two bubbles you dismissed are in
        the overflow. </string>
    <string name="bubbles_test_bubbles_in_overflow_button">Send several bubbles</string>
    <!-- Add bubble from overflow -->
    <string name="bubbles_test_add_from_overflow_title">Add bubble from overflow</string>
    <string name="bubbles_test_add_from_overflow_verify">1. Expand the stack and open the bubble
        overflow.\n\n 2. Tap on a bubble in the overflow, pass this test if that bubble is opened
        and removed from the overflow.</string>
    <!-- Cancel removes bubbles in overflow -->
    <string name="bubbles_test_cancel_overflow_title">Cancel removes overflowed bubbles</string>
    <string name="bubbles_test_cancel_overflow_verify">1. Press the button below, it will cancel all
        previous bubble notifications and post one more.\n\n
        2. Expand that bubble, navigate to the overflow and ensure that it is empty.</string>
    <string name="bubbles_test_cancel_overflow_button">Cancel previous bubbles and post a
        single bubble</string>
    <!-- Tap on notification with bubble in the overflow -->
    <string name="bubbles_test_tap_notif_with_overflow_title">Tap on notification opens bubble
    </string>
    <string name="bubbles_test_tap_notif_with_overflow_verify">1. Press the button to create a
        bubble.\n\n
        2. Dismiss the bubble without opening it.\n\n
        3. Tap on the notification. Pass this test if the notification opened as a bubble.</string>
    <string name="bubbles_test_tap_notif_with_overflow_button">Send bubble</string>
    <!-- Portrait & landscape positioning -->
    <string name ="bubbles_test_expanded_position_title">Portrait and landscape positioning</string>
    <string name="bubbles_test_expanded_position_phone_verify">1. While in portrait orientation,
        tap on the bubble to open it.\n\n
        2. Verify that the bubbles show at the top of the screen.\n\n
        3. Rotate the device to landscape orientation.\n\n
        3. Verify that the bubbles are aligned to the left or right edge of the screen.</string>
    <string name="bubbles_test_expanded_position_largescreen_verify">
        1. Tap the bubble to open it.\n\n
        2. Verify that the bubbles are aligned to the left or right edge of the screen.\n\n
        3. Rotate the device.\n\n
        4. Verify that the bubbles are aligned to the left or right edge of the screen.</string>
    <!-- Expanded view scrim -->
    <string name="bubbles_test_expanded_scrim_title">Expanded state has scrim</string>
    <string name="bubbles_test_expanded_scrim_verify">Expand the bubble and pass this test if the
        area below the bubble is dimmed (like when a dialog is opened).</string>
    <!-- IME insets -->
    <string name="bubbles_test_ime_title">IME behavior</string>
    <string name="bubbles_test_ime_verify">1. Tap on the bubble to open it.\n\n
        2. Tap the edit text in the bubble to bring up the IME.\n\n
        3. Pass this test if the IME appears and the edit text is still visible.</string>
    <!-- Expanded view min height -->
    <string name="bubbles_test_min_height_title">Expanded view min height</string>
    <string name="bubbles_test_min_height_verify">1. Press the button below to update the bubble to
        have the smallest height.\n\n
    2. Open the bubble, it will tell you if the height is correct.</string>
    <string name="bubbles_test_min_height_button">Send small height bubble</string>
    <!-- Expanded view max height -->
    <string name="bubbles_test_max_height_title">Expanded view max height</string>
    <string name="bubbles_test_max_height_verify">1. Press the button below to update the bubble to
        have the maximum height.\n\n
        2. Open the bubble, it will tell you if the height is correct.</string>
    <string name="bubbles_test_max_height_button">Send max height bubble</string>
    <!-- Low ram -->
    <string name="bubbles_test_lowram_title">No bubbles on low memory device</string>
    <string name="bubbles_test_lowram_verify">Click the button below and verify that a
        bubble does NOT appear on screen. Verify that there is a notification in the notification
        shade.</string>
    <string name="bubbles_test_lowram_button">Add bubble</string>
    <!-- Bubbles end of test summary -->
    <string name="bubbles_test_summary_title">Test Complete</string>
    <string name="bubbles_test_summary">%1$d out of %2$d tests passed</string>
    <string name="bubble_activity_title">Bubble Activity</string>
    <string name="bubble_test_state_correct">State is correct, pass the test.</string>
    <string name="bubble_test_state_waiting">State is not correct, waiting for the correct state.
    </string>
    <string name="bubble_test_ime_hint">Tap for IME</string>
    <string name="bubble_test_expanded_view">Bubble expanded view</string>

    <!-- Toast test -->
    <string name="toast_title">Toast test (may auto pass if CtsVerifier isn\'t targeting
        S+)</string>
    <string name="toast_info">This test checks the behavior for toasts for apps targeting
        sdk S+ (31). Toasts are short messages that appear as popups for a limited amount of time.
    </string>
    <string name="toast_instructions_pre_s">No cts requirement for toasts for apps targeting
        pre-s. Auto pass this test.</string>
    <string name="toast_instructions_s">Press the button below to post a toast. Pass this
        test if a toast appears and has:\n
        \n\t1. a maximum of two lines
        \n\t2. an application icon
    </string>
    <string name="toast_post_button_label">Post toast</string>
    <string name="toast_long_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        Nam luctus eros ac interdum tincidunt. Vestibulum dignissim, metus nec tempor mollis,
        tortor leo aliquam est, eget rutrum mi nisi ut ligula. Quisque enim justo, tempus at
        ligula ac, porta posuere odio. Proin et tortor tincidunt, tempus ligula id,
        vestibulum mauris. Vivamus blandit tristique tempus. Integer dignissim purus eu nibh
        faucibus, eget dignissim eros gravida. Sed sit amet erat quis leo pharetra euismod vel at
        purus. Duis blandit, diam eu imperdiet pulvinar, erat odio eleifend augue, nec luctus
        lectus erat ac nibh. Nullam id enim metus.
    </string>

    <!-- Strings for Instant Apps -->
    <string name="ia_instruction_heading_label">Instructions:</string>
    <string name="ia_instruction_text_photo_label">READ BEFORE STARTING TEST</string>
    <string name="ia_start_test_button_caption">Start Test</string>
    <string name="ia_install_dialog_title">Install Instant App</string>
    <string name="ia_install_dialog_text">
    For this test you need to install CtsVerifierInstantApp.apk by running \n
    adb install -r --instant /path/to/CtsVerifierInstantApp.apk \n\n
    CtsVerifierInstantApp.apk can be found in android-cts-verifier.zip that you have downloaded.
    </string>
    <string name="ia_notification">Instant Apps Notification Test</string>
    <string name="ia_notification_info">
    This test verifies that Instant Apps notification is shown when an Instant App is at foreground.\n\n
    - Read the message above the \"Start Test\" button for
    step-by-step instructions.
    </string>
    <string name="ia_notification_instruction_label">\n
    1. Click Start Test. \n\n
    2. An alert dialog with install instruction will be shown if the sample Instant App has not been installed, otherwise, the sample Instant App will be opened automatically. \n\n
    3. Drag down the notification bar when the sample Instant App is at foreground. \n\n
    4. Check if Instant App is shown in notifciation area with the following (Please expand the notification if it is collapsed): \n
    \u0020\u0020\u0020a. It provides information about Instant Apps not requiring installation and an action that provides more information about the Instant App. \n
    \u0020\u0020\u0020b. It provides an action allowing the user to launch the associated link with web browser. \n\n
    5. Click Pass button if all checks in step 4 passed, otherwise click Fail button.
    </string>
    <string name="ia_notification_instruction_label_no_app_market_version">\n
    1. Click Start Test. \n\n
    2. An alert dialog with install instruction will be shown if the sample Instant App has not been installed, otherwise, the sample Instant App will be opened automatically. \n\n
    3. Drag down the notification bar when the sample Instant App is at foreground. \n\n
    4. Check if Instant App is shown in notification area with information about Instant Apps not requiring installation and an action that provides more information about the Instant App (Please expand the notification if it is collapsed) \n\n
    5. Click Pass button if all checks in step 4 passed, otherwise click Fail button.
    </string>
    <string name="ia_recents">Instant Apps Recents Test</string>
    <string name="ia_recents_info">
    This test verifies that Instant App can be accessed in Recent Apps screen.\n\n
    - Read the message above the \"Start Test\" button for
    step-by-step instructions.
    </string>
    <string name="ia_recents_instruction_label">\n
    1. Click Start Test. \n\n
    2. An alert dialog with install instruction will be shown if the sample Instant App has not been installed, otherwise, the sample Instant App will be opened automatically. \n\n
    3. Tap Recents button, verify the sample Instant App is shown in Recent Apps screen. \n\n
    4. Tap the sample Instant App in Recent Apps screen, verify the Instant App is opened in the foreground. \n\n
    5. Click Pass button if checks in step 3 and 4 passed, otherwise click Fail button.
    </string>
    <string name="ia_app_info">View/Delete Instant Apps Test</string>
    <string name="ia_app_info_info">
    This test verifies that Instant App can be viewed and deleted in Settings.\n\n
    - Read the message above the \"Start Test\" button for
    step-by-step instructions.
    </string>
    <string name="ia_app_info_instruction_label">\n
    1. Click Start Test. \n\n
    2. An alert dialog with install instruction will be shown if the sample Instant App has not been installed, otherwise, the sample Instant App will be opened automatically. \n\n
    3. Open Settings App. \n\n
    4. Tap Apps &amp; Notifications. \n\n
    5. Verify the sample Instant App can be found and it is shown as \"Instant App\". \n\n
    6. Verify there is an action allowing user to clear/delete app. \n\n
    7. Click Pass button if checks in step 5 and 6 passed, otherwise click Fail button.
    </string>

    <string name="uap_test_no">No</string>
    <string name="uap_test_yes">Yes</string>
    <string name="uap_test_info">Info</string>
    <string name="uap_test_question">Does this device allow for the connection of a USB audio peripheral?\nNote: phones and tablets generally do, watches and automobiles generally do not.</string>
    <string name="uap_refmic_question">Does this device allow for the connection of a USB reference microphone?</string>
    <string name="uap_test_hostmode_info_caption">USB Host Mode Audio Required</string>
    <string name="uap_test_hostmode_info_text">This test requires a USB audio peripheral be
        connected to the device.
    The DUT may not support USB Host Mode Audio, either because it does not have a
    USB port, or USB Host Mode Audio has been removed from the OS. In this case, the test can be
    passed by pressing the \"No\" button and indicating \"Test Pass\" at the bottom.
    \n\nNote: Handheld devices supporting USB host mode MUST support USB audio class (CDD 7.7 .2/H-1-1)
    \n\nNote: Devices declaring feature android.hardware.audio.pro MUST implement USB host mode (CDD 5.10 C-1-3).
    Devices that omit a 4 conductor 3.5mm audio jack MUST support USB audio class (CDD 5.10 C-3-1).
    </string>

    <string name="refmic_test_no">No</string>
    <string name="refmic_test_yes">Yes</string>
    <string name="refmic_test_info">Info</string>
    <string name="refmic_test_question">Does this device allow for the connection of a USB reference microphone?</string>
    <string name="ref_mic_dlg_caption">Reference Mic Required</string>
    <string name="ref_mic_dlg_text">This test requires a USB Reference Mic to be connected to the device.
    If the device under test does not support USB Host Mode Audio (either because it does not have a
    USB port, or USB Host Mode Audio has been removed from the OS) you can be granted a provisional
    pass on this test by pressing the \"No\" button and indicating \"Test Pass\" at the bottom.\n
    Note: Handheld devices supporting USB host mode MUST support USB audio class (CDD 7.7 .2/H-1-1)\n
    Note: Devices declaring feature android.hardware.audio.pro MUST implement USB host mode (CDD 5.10 C-1-3) and if they omit a 4 conductor 3.5mm audio jack MUST support USB audio class (CDD 5.10 C-3-1)
    </string>

    <string name="loopback_test_question">Does this device allow for the connection of a loopback audio peripheral?</string>
    <string name="loopback_dlg_caption">Loopback Peripheral Required</string>

    <string name="display_cutout_test">DisplayCutout Test</string>
    <string name="display_cutout_test_instruction">\n
    This test is to make sure that the area inside the safe insets from the DisplayCutout should be:\n
    1. Visible\n
    2. Clickable.\n
    </string>

    <!-- TTS Test Resources -->
    <string name="tts_test">TTS Test</string>
    <string name="tts_test_info">
      1. Install the CtsTtsEngineSelectorTestHelper and CtsTtsEngineSelectorTestHelper2 apps on the device.\n
      2. Click on the "Go To Accessibility Settings" button.\n
      3. Go to Text-to-speech output > Preferred engine.\n
      4. Ensure that two engines are listed, both named "TTS CTS Test Helper App".\n
      5. Ensure that each engine can be selected.
    </string>
    <string name="tts_test_steps">
      1. Install the CtsTtsEngineSelectorTestHelper and CtsTtsEngineSelectorTestHelper2 apps on the device.\n
      2. Click on the "Go To Accessibility Settings" button.\n
      3. Go to Text-to-speech output > Preferred engine.\n
      4. Ensure that two engines are listed, both named "TTS CTS Test Helper App".\n
      5. Ensure that each engine can be selected.
    </string>
    <string name="tts_accessibility_settings_button">Go To Accessibility Settings</string>

    <!-- Strings for SecurityModeFeatureVerifierActivity test -->
    <string name="security_mode_feature_verifier_test">SecurityModeFeatureVerifier Test</string>
    <string name="security_mode_feature_verifier_instructions">This test verifies that the PackageManager.FEATURE_SECURITY_MODEL_COMPATIBLE feature is present.</string>
    <string name="handheld_or_tablet_text_before_test">Is this a handheld or tablet device?</string>
    <string name="handheld_or_tablet_yes">Yes</string>
    <string name="handheld_or_tablet_not_applicable">Not applicable</string>

    <!-- AudioDescriptor Test -->
    <string name="audio_descriptor_test">Audio Descriptor Test</string>
    <string name="audio_descriptor_test_info">
        This test tests if the reported AudioDescriptor is valid and necessary.\n
        AudioDescriptor must only be used to report audio device capabilities that are not able to
        describe by Android defined enums.\n
        \nTo execute test:\n
        1. Plug in HDMI cable if HDMI is supported on the device.\n
        2. The test will execute automatically and verify the reported AudioDescriptor when the
        activity is created and when audio device connection is changed.
    </string>
    <string name="audio_descriptor_HDMI_support_label">HDMI support:</string>
    <string name="audio_descriptor_has_hdmi_support">Has HDMI support</string>
    <string name="audio_descriptor_NA">N/A</string>
    <string name="audio_descriptor_hdmi_pending">No HDMI detected. Pending&#8230;</string>
    <string name="audio_descriptor_pass">Pass</string>
    <string name="audio_descriptor_hdmi_not_reported">No HDMI device connected</string>
    <string name="audio_descriptor_standard_none">Standard is none.</string>
    <string name="audio_descriptor_is_null">Audio descriptor is null.</string>
    <string name="audio_descriptor_unrecognized_standard">Standard %1$d is unrecognized.</string>
    <string name="audio_descriptor_length_error">
        The length of short audio descriptor is %1$d, but it is expected to be 3.
    </string>
    <string name="audio_descriptor_cannot_get_hal_version">Cannot get audio HAL version</string>
    <string name="audio_descriptor_invalid_hal_version">Invalid audio HAL version %1$s</string>
    <string name="audio_descriptor_format_code_should_not_be_reported">
        Format with format code as %1$d(%2$s) should not be reported by AudioDescriptor.
        Instead, it should be reported by Android defined enums.
    </string>
    <string name="audio_descriptor_format_extended_code_should_not_be_reported">
        Format with format extended code as %1$d(%2$s) should not be reported by AudioDescriptor.
        Instead, it should be reported by Android defined enums.
    </string>
    <string name="audio_descriptor_format_extended_code_is_not_used">
        Format extended code as %1$d is not used.
    </string>
    <string name="audio_descriptor_hdmi_info_title">HDMI Support</string>
    <string name="audio_descriptor_hdmi_message">
        Please connect an HDMI peripheral to validate AudioDescriptor.
    </string>
</resources>
