<?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="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="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_tv">TV</string>
    <string name="test_category_instant_apps">Instant Apps</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="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_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="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="night_mode_test">NIGHT_MODE Test</string>
    <string name="night_mode_test_desc">This test ensures that the NIGHT_MODE vehicle property is
      implemented correctly.\n\nFollow the instructions on the screen to engage and disengage
      NIGHT_MODE through the vehicle HAL. When the instructions are completed, the pass button
      will be enabled.</string>
    <string name="current_night_mode_value_title">Current NIGHT_MODE Value:</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_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 BiometricTest -->
    <string name="biometric_test">Biometric Tests</string>

    <string name="biometric_test_category_generic">0) Generic 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_sensor_configuration_label">0a: Sensor Configuration Test</string>
    <string name="biometric_test_sensor_configuration_instructions">This test checks that the device configuration is valid</string>
    <string name="biometric_test_sensor_configuration_button">Start test</string>

    <string name="biometric_test_credential_not_enrolled_label">1a: Credential Not Enrolled Tests</string>
    <string name="biometric_test_credential_not_enrolled_instructions">This test checks that the BiometricManager/BiometricPrompt
        APIs return results consistent with credential (PIN/Pattern/Password) state. Before starting this test, please ensure that you do
        NOT have a credential set up.</string>
    <string name="biometric_test_credential_not_enrolled_bm_button">Check BiometricManager</string>
    <string name="biometric_test_credential_not_enrolled_bp_setAllowedAuthenticators_button">Check BiometricPrompt setAllowedAuthenticators(DEVICE_CREDENTIAL)</string>
    <string name="biometric_test_credential_not_enrolled_bp_setDeviceCredentialAllowed_button">Check BiometricPrompt setDeviceCredentialAllowed(true)</string>

    <string name="biometric_test_credential_enrolled_label">1b: Credential Enrolled Tests</string>
    <string name="biometric_test_credential_enrolled_instructions">This test checks that apps are able to request credential enrollment, and that the BiometricManager/BiometricPrompt
        APIs return results consistent with credential (PIN/Pattern/Password) state.</string>
    <string name="biometric_test_credential_enroll_button">Enroll credential</string>
    <string name="biometric_test_credential_enrolled_bm_button">Check BiometricManager</string>
    <string name="biometric_test_credential_enrolled_bp_setAllowedAuthenticators_button">Check BiometricPrompt setAllowedAuthenticators(DEVICE_CREDENTIAL)</string>
    <string name="biometric_test_credential_enrolled_bp_setDeviceCredentialAllowed_button">Check BiometricPrompt setDeviceCredentialAllowed(true)</string>

    <string name="biometric_test_credential_crypto_label">1c: 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>

    <!-- setDeviceCredentialAllowed(true), biometric authentication -->
    <string name="biometric_test_authenticate_with_credential1_button">Authenticate with biometric (not PIN/Pattern/Pass)</string>
    <!-- setDeviceCredentialAllowed(true), credential authentication -->
    <string name="biometric_test_authenticate_with_credential2_button">Authenticate with PIN/Pattern/Pass (skip biometric)</string>
    <!-- setAllowedAuthenticators(CREDENTIAL|BIOMETRIC), credential authentication -->
    <string name="biometric_test_authenticate_with_credential3_button">Authenticate with PIN/Pattern/Pass (skip biometric again)</string>
    <!-- Invoking the public API with non-public constants -->
    <string name="biometric_test_invalid_inputs">Test invalid inputs</string>
    <!-- Rejecting does not end the authentication lifecycle -->
    <string name="biometric_test_reject_first">Reject, then authenticate</string>
    <!-- Negative button callback is received -->
    <string name="biometric_test_negative_button_button">Test Negative Button</string>
    <!-- ERROR_CANCELED is received -->
    <string name="biometric_test_cancellation_button">Test CancellationSignal</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_ui_button">Authenticate Crypto UI</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_weak_authenticate">Authenticate</string>
    <string name="biometric_test_weak_authenticate_time_based_keys">Authenticate attempt time-based keys</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">4h: 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 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">Android Protected Confirmation 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 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_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>

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

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

    <!-- 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 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>
    <string name="location_listener_activity">Location listener</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="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 tests 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 tests 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 tests 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_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="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">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 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. Please click \"Allow\" in the dialog that pops up for approving the app.</string>
    <string name="wifi_status_suggestion_ensure_no_connect">Ensuring no network connection. Please click \"Allow\" in the dialog that pops up for approving the app.</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_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_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_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="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="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="qs_media_player_title">QS Media Controls Test</string>
    <string name="qs_media_player_test">Media Controls Test</string>
    <string name="qs_media_player_info">This test checks that media controls appear in the
        Quick Settings shade for applications that post a media style notification.</string>
    <string name="qs_media_player_song_and_artist">Fully expand Quick Settings and look at the media
        player controls for the CTS Verifier app.
        Check that the media player contains the strings "Song" and "Artist".
    </string>
    <string name="qs_media_player_album_art">Open Quick Settings and look at the media player
        controls for the CTS Verifier app.
        Check that the media player contains a solid yellow image.
    </string>
    <string name="qs_media_player_progress_bar">Fully expand Quick Settings and look at the media
        player controls for the CTS Verifier app.
        Check that the media player contains a progress bar showing 6 seconds have elapsed of a
        one minute long track.
    </string>
    <string name="qs_media_player_actions">Fully expand Quick Settings and look at the media player
        controls for the CTS Verifier app.
        Check that icons appear for rewind, previous track, pause, next track and fast forward.
    </string>
    <string name="qs_media_player_compact_actions">Open Notification Shade and look at the media player
        controls for the CTS Verifier app.
        Check that icons appear for only previous track, pause and next track.
    </string>
    <string name="qs_media_player_output_switcher">Open Quick Settings and look at the media player
        controls for the CTS Verifier app. Click on the button showing that the media is playing
        on the phone speaker. Check that the Output Switcher opens.
    </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="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="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 that the network may be monitored. 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 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
        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
        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.

        1. Verify that you get sent to the page for Choosing a new work lock.\n
        2. Set a pattern lock.\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_color"> Custom provisioning color </string>
    <string name="provisioning_tests_byod_custom_color_info">
        Please press the Go button to start the provisioning.
        Check that the top status bar is colorized in green.
        Then hit back and stop the provisioning.
    </string>
    <string name="provisioning_tests_byod_custom_image"> Custom provisioning image </string>
    <string name="provisioning_tests_byod_custom_image_info">
        1. Please press the Go button to start the provisioning.\n
        2. Press \"Accept and continue\" button to start work profile provisioning\n
        3. Check that the CtsVerifier logo is displayed during provisioning\n
        4. After successful provisioning, come back to this page. You might need to press a button on the final provisioning screen.
    </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
        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_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_toast_location_change">Location changed</string>
    <string name="provisioning_byod_location_mode_enable_instruction">
        This test verifies that the location updates can be enabled for the managed profile apps.\n
        1. Press the go button to go to the location settings page, set both the main location switch and the work profile location switch enabled.\n
        2. Press home to go to the launcher.\n
        3. Move your position a little bit, verify that location updates toast comes up.\n
        Please wait until the location updates or timeout toast message shows up before going back to the cts-verifier tests.\n
        4. Go back to the cts-verifier tests using the back button, then mark the test accordingly.\n
    </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 updates can be disabled for the managed profile apps through the main location switch.\n
        1. Press the go button to go to the location settings page, set the main location switch disabled.\n
        2. Press home to go to the launcher.\n
        3. Move your position a little bit, verify that no location updates toast come up and that the timeout message show up after around 15 seconds.
        Please wait until the timeout or location updates toast message shows up before going back to the cts-verifier tests.\n
        4. Go back to the cts-verifier tests using the back button, then 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 updates can be disabled for the managed profile apps through work profile location switch.\n
        1. Press the go button to go to the location settings page, set the work location switch disabled while the main location switch is still enabled.\n
        2. Press home to go to the launcher.\n
        3. Move your position a little bit, verify that no location updates toast come up and that the timeout message show up after around 15 seconds.
        Please wait until the timeout or location updates toast message shows up before going back to the cts-verifier tests.\n
        4. Go back to the cts-verifier tests using the back button, then 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 updates are still received by primary profile when location updates are disabled for managed profile apps through work profile location switch.\n
        1. Press the go button to go to the location settings page, set the work location switch disabled while the main location switch is still enabled.\n
        2. Press home to go to the launcher.\n
        3. Move your position a little bit, verify that location updates toast comes up.\n
        Please wait until the location updates or timeout toast message shows up before going back to the cts-verifier tests.\n
        4. Go back to the cts-verifier tests using the back button, then mark the test accordingly.\n
    </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_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.\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="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 com.android.cts.emptydeviceowner/.EmptyDeviceAdmin
    </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_incorrect_device_owner">Missing or incorrect device owner: CTSVerifier is not DO!</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 can be seen on Settings &gt; WiFi. 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_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_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) 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) 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.
    </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) Notification icons are still hidden on the status bar.\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) 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.
    </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) System info area is still hidden on the status bar.\n
            2) 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.
    </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) 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 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.
    </string>
    <string name="device_owner_lock_task_ui_recents_test">Enable Overview button</string>
    <string name="device_owner_lock_task_ui_recents_test_info">
            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.
    </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">
            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.
    </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="dummy_input_method_label">Dummy input method</string>
    <string name="dummy_accessibility_service_label">Dummy 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>.\n
        4. Verify that the support dialog displays the short support message set earlier.\n
        5. Verify that clicking the "Learn more" link will redirect to Device administrators
           page in Settings app which displays the long support message set earlier.\n
    </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</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</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="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_password_quality">Set password quality</string>
    <string name="password_quality_set_step">Set minimum password quality by selecting an option in the spinner below.</string>
    <string name="set_password_quality_action">Setting a password which does not meet the requirements of the password quality selected</string>
    <string name="set_password_quality_widget_label">@string/set_password_quality</string>
    <string name="password_quality_unspecified">Unspecified</string>
    <string name="password_quality_something">Something</string>
    <string name="password_quality_numeric">Numeric</string>
    <string name="password_quality_numeric_complex">Numeric (Complex)</string>
    <string name="password_quality_alphabetic">Alphabetic</string>
    <string name="password_quality_alphanumeric">Alphanumeric</string>
    <string name="password_quality_complex">Complex</string>
    <string name="set_permitted_accessibility_services">Set permitted accessibility services</string>
    <string name="permitted_accessibility_services_set_step">
        Check that \'Dummy Accessibility service\' is not enabled in Settings and disallow \'Dummy Accessibility service\' from permitted accessibility services by turning on
        the switch below.
    </string>
    <string name="set_permitted_accessibility_services_action">
        Enabling \'Dummy 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 \'Dummy 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 \'Dummy Input method\' from permitted input methods by turning on the switch below.
    </string>
    <string name="set_permitted_input_methods_action">
        Enabling \'Dummy 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_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="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_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 \"Dummy\" 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 Dummy Text\" when you tune
    to the \"Dummy\" 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 \"Dummy\" channel.
    </string>
    <string name="tv_input_discover_test_verify_epg">
    Do you see the programs named \"Dummy Program\" and their descriptions
    "Dummy 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>

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

    <!-- HDR Capabilities test -->
    <string name="tv_hdr_capabilities_test">HDR Capabilities Test</string>
    <string name="tv_hdr_capabilities_test_step_hdr_display">HDR Display</string>
    <string name="tv_hdr_capabilities_test_step_no_display">No Display</string>
    <string name="tv_hdr_capabilities_test_step_non_hdr_display">Non HDR Display</string>
    <string name="tv_hdr_capabilities_test_info">This test checks if
        Display.getHdrCapabilities correctly reports the HDR capabilities of the display.
    </string>
    <string name="tv_hdr_connect_no_hdr_display">Connect a non-HDR display and then
        press the "%s" button, below.
    </string>
    <string name="tv_hdr_connect_hdr_display">Connect an HDR display and press
        the "%s" button, below.
    </string>
    <string name="tv_hdr_disconnect_display">Press the "%1$s" button
        and disconnect the display within %2$d seconds. Wait at least %3$d seconds and then
        reconnect the display.
    </string>
    <string name="tv_panel_hdr_types_reported_are_supported">
        The supported HDR types are: %s\nAre all of them supported by the hardware?
    </string>
    <string name="tv_panel_hdr_types_supported_are_reported">
        Are there other HDR types which are supported by the hardware, but are not listed above?
    </string>

    <!-- Display Modes Test -->
    <string name="tv_display_modes_test">Display Modes Test</string>
    <string name="tv_display_modes_test_info">This test checks if Display.getSupportedModes()
        and Display.getMode() are correctly reporting the supported screen modes.
    </string>
    <string name="tv_display_modes_disconnect_display">
        Press the "%1$s" button and disconnect the display within %2$d seconds. Wait at least %3$d
        seconds and then reconnect the display.
    </string>
    <string name="tv_display_modes_test_step_no_display">No Display</string>
    <string name="tv_display_modes_test_step_1080p">1080p Display</string>
    <string name="tv_display_modes_test_step_2160p">2160p Display</string>
    <string name="tv_display_modes_start_test_button">Start Test</string>
    <string name="tv_display_modes_connect_2160p_display">
        Connect a 2160p display and press the "%s" button, below.
    </string>
    <string name="tv_display_modes_connect_1080p_display">
        Connect a 1080p display and press the "%s" button, below.
    </string>
    <string name="tv_panel_display_modes_reported_are_supported">
        The supported display modes are:\n%s\n\nAre all of the above display modes supported by the hardware?
    </string>
    <string name="tv_panel_display_modes_supported_are_reported">
        Are there other modes which are supported by the hardware, but are not listed above?
    </string>
    <string name="overlay_view_text">Overlay View Dummy 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" />

    <!-- 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_out_devices_notifications_test">Audio Output Devices Notifications Test</string>
    <string name="audio_out_devices_notification_instructions">
          Click the "Clear Messages" button then connect and disconnect a wired headset.
          Note if the appropriate notification messages appear below.
    </string>
    <string name="audio_in_devices_notifications_test">Audio Input Devices Notifications Test</string>
    <string name="audio_in_devices_notification_instructions">
          Click the "Clear Messages" button then connect and disconnect a microphone or wired headset.
          Note if the appropriate notification messages appear below.
    </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="uapPeripheralProfileStatus">Peripheral Profile Status</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="proAudioMIDIInputLbl">MIDI Input:</string>
    <string name="proAudioMIDIOutputLbl">MIDI Output:</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_roundtrip">Round-Trip Test</string>
    <string name="audio_proaudio_NA">N/A</string>
    <string name="audio_proaudio_pending">pending...</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>

    <!--  MIDI Test -->
    <string name="midi_test">MIDI Test</string>
    <string name="ndk_midi_test">Native MIDI API 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_general_headset_port_exists">Does this device have a headset port?</string>
    <string name="audio_general_headset_no">No</string>
    <string name="audio_general_headset_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>

    <!-- Audio Loopback Latency Test -->
    <string name="audio_loopback_latency_test">Audio Loopback Latency Test</string>
     <string name="audio_loopback_info">
          This test requires some form of audio loopback. This can be either:\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 jaccks.
          Please connect one of these Loopback mechanisms, and proceed with the instructions
          on the screen.
          The system will measure the input-output audio latency by injecting a pulse on the output,
          and computing the distance between replicas of the pulse.
          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>

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


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


    <!-- 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.</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.
    </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 requires that you have connected a mandated USB Audio Interface peripheral.
        If the discovered attributes of the peripheral matches the known attributes of the
        peripheral the test passes and the \"pass\" button will be enabled.
       </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 test requires that you have connected a supported USB Audio Peripheral device
       (not a headset) and that peripheral\'s audio outputs are connected to the peripherals\'s
       audio inputs. Alternatively, for devices with an analog audio jack or USB-c Digital
       to Analog dongle, a <a href="https://source.android.com/devices/audio/latency/loopback">Loopback Plug</a>
       can be used. Also, if there is an input level
       control on the peripheral, it must be set to a non-zero value. When the test has
       verified support for a valid audio peripheral, press the \"Round-Trip Test\" button
       to complete the test.
       The latency measurement is generally accurate even when the volume is low. But you may
       need to increase the volume to bring the confidence number above the threshold.
    </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>
    <!-- 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>

    <!-- Notification Bubble Tests-->
    <string name="bubbles_notification_title">Bubble Notification Tests</string>
    <string name="bubbles_notification_description">This test checks the behaviour of bubble
        notifications, ensuring that notifications appear or disappear appropriately based on how
        BubbleMetadata is configured on the notification and user actions. Bubbles are special
        notifications that appear as a floating button on the screen, in addition to the notification
        in the notification shade.</string>
    <string name="bubbles_notification_test_enable_bubbles_title">Enable Bubbles for CTS Verifier</string>
    <string name="bubbles_notification_test_enable_bubbles_verify">Click the button below and enable
        bubbles for the verifier app on the resulting screen, if they aren\'t enabled already.</string>
    <string name="bubbles_notification_enable_bubbles_button">Enable bubbles for CTS Verifier</string>
    <string name="bubbles_notification_test_title_1">Step 1: send a bubble with notification</string>
    <string name="bubbles_notification_test_verify_1">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_notification_test_button_1">Send bubble notification</string>
    <string name="bubbles_notification_test_title_2">Step 2: hide notification</string>
    <string name="bubbles_notification_test_verify_2">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_notification_test_button_2">Update bubble to hide notification</string>
    <string name="bubbles_notification_test_title_3">Step 3: show notification</string>
    <string name="bubbles_notification_test_verify_3">Click the button below and verify that the bubble
        is still on the screen, and the notification is now visible in the notification shade.
    </string>
    <string name="bubbles_notification_test_button_3">Update bubble to show notification</string>
    <string name="bubbles_notification_test_title_4">Step 4: remove bubble</string>
    <string name="bubbles_notification_test_verify_4">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_notification_test_button_4">Remove bubble</string>
    <string name="bubbles_notification_test_title_5">Step 5: add bubble</string>
    <string name="bubbles_notification_test_verify_5">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_notification_test_button_5">Add bubble</string>
    <string name="bubbles_notification_test_title_6">Step 6: open bubble</string>
    <string name="bubbles_notification_test_verify_6">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>
    <string name="bubbles_notification_test_title_7">Step 7: drag and dismiss bubble</string>
    <string name="bubbles_notification_test_verify_7">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_notification_test_button_7">Update bubble to show notification</string>
    <string name="bubbles_notification_test_title_8">Step 8: dismiss notification</string>
    <string name="bubbles_notification_test_verify_8">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_notification_test_button_8">Send bubble notification</string>
    <string name="bubbles_notification_test_title_9">Step 9: auto expand bubble</string>
    <string name="bubbles_notification_test_verify_9">Click the button below and verify that a bubble
        appears on screen, auto-expanded.</string>
    <string name="bubbles_notification_test_button_9">Send auto-expanded bubble notification</string>
    <string name="bubbles_notification_test_title_10">No bubbles on low memory device</string>
    <string name="bubbles_notification_test_verify_10">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_notification_test_button_10">Add bubble</string>
    <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>

    <!-- 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 connectiono of a USB reference microphone?</string>
    <string name="uap_mic_dlg_caption">USB Host Mode Audio Required</string>
    <string name="uap_mic_dlg_text">This test requires a USB audio peripheral 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="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="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
    fully visible and touchable. \n\n
    Please check the below items: \n
    1. All buttons are fully visible \n
    2. All buttons are clickable. \n
    </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="loopback_dlg_text">This test requires an Audio Loopback Peripheral to be connected to the device.\n
        This can be done in one of three ways:\n
        1. Connect a <a href="https://source.android.com/devices/audio/latency/loopback">Loopback Plug</a> to the 3.5mm headset jack.\n
        2. Connect a <a href="https://source.android.com/devices/audio/latency/loopback">Loopback Plug</a> to a USB-C headset adapter.\n
        3. Connect a USB audio interface peripheral and connect the outputs to the inputs with an audio patch cable.
    </string>
</resources>
