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

    <!-- 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_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.</string>
    <string name="runtime_permissions_error">Cannot continue. Please grant runtime permissions</string>
    <string name="export">Export</string>
    <string name="no_storage">Cannot save report to external storage, see log for details.</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 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 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.
    </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="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_kg_disabled_features_test">Keyguard Disabled Features Test</string>
    <string name="rn_kg_disabled_features_test">Redacted Notifications Keyguard Disabled Features Test</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 on the device.
        If needed, grant \'Cts Verifier\' permission to install unknown apps, and return when install succeeds.
    </string>
    <string name="da_install_admin_button_text">Install admin</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 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 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\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_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="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>

    <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 priority: </string>
    <string name="ble_connection_priority_balanced">BALANCED</string>
    <string name="ble_connection_priority_high">HIGH</string>
    <string name="ble_connection_priority_low">LOW</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_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_high">Bluetooth LE Send With CONNECTION_PRIORITY_HIGH</string>
    <string name="ble_connection_priority_client_low">Bluetooth LE Send With CONNECTION_PRIORITY_LOW_POWER</string>
    <string name="ble_connection_priority_client_balanced">Bluetooth LE Send With CONNECTION_PRIORITY_BALANCED</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_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_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>

    <!-- Strings for net.ConnectivityScreenOffTestActivity -->
    <string name="network_screen_off_test">Network Connectivity Screen Off Test</string>
    <string name="network_screen_off_test_instructions">
        This test verifies that IPv6 network connectivity continues to work
        when the screen is off.\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.\n
        4. Wait until the screen turns on (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_screen_off_test_start">Start</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_success">Test passed!</string>
    <string name="nfc_result_failure">Test failed!</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>

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

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

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

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

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

    <!-- 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 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,
    and the broadcast intents are received when appropriate per the SDK
    documentation.\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_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 Start Test. \n
    2. Go to home screen (HOME key). \n
    3. Launch Camera application. \n
    4. Capture photo within 1 minute. \n
    5. Return to CTS verifier app. \n
    6. Pass button will light up if URI trigger was fired.\n
    7. Click "Pass" if possible.
    </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 URI trigger was fired.\n
    7. Click "Pass" if possible.
    </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 URI trigger was NOT received.\n
    5. Click "Pass" if possible.
    </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. Pass button will light up if URI trigger was received.\n
    5. Click "Pass" if possible.
    </string>
    <string name="ci_start_test_button_caption">Start Test</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.
    </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 - 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.
    </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.
        \n\n5. Confirm access to the USB accessory on the helper device.
        \n\n6. Confirm access to the USB device on this device again.
        \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.
        \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.
        \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_legacy_devices">
        All cameras on this device are LEGACY mode only - ITS tests are only required on LIMITED
        or better devices.  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 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 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_group_client_test">Group Client 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 is not enabled</string>
    <string name="aware_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="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_open_solicited">Data Path: Open: Solicited/Active</string>
    <string name="aware_dp_ib_passphrase_solicited">Data Path: Passphrase: Solicited/Active</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_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_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_sleeping_wait_for_responder">Pausing to let Responder time to set up ...</string>
    <string name="aware_status_lifecycle_ok">Discovery lifecycle validated!</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_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_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="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="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="attention_ready">I\'m done</string>
    <string name="attention_filter_all">Please disable \"Do not disturb\" by tapping the Quick Settings tile.</string>
    <string name="attention_filter_priority">Please select \"Priority only\" in the dialog that appears
        when you tap the \"Do not disturb\" tile in Quick Settings, and customize the setting to allow messages from
        starred contacts only by tapping "More settings".</string>
    <string name="attention_filter_none">Please select \"Total silence\" in the dialog that appears
        when you tap the \"Do not disturb\" tile in Quick Settings.</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">Check that \"All\" mode doesn\'t filter any notifications.</string>
    <string name="attention_some_are_filtered">Check that \"Priority\" mode doesn\'t filter priority notifications.</string>
    <string name="attention_all_are_filtered">Check that \"None\" mode filters all notifications.</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="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_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="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_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 a 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_update_rule">Updating Automatic Zen Rule</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</string>
    <string name="cp_get_rules">Retrieving Automatic Zen Rules</string>
    <string name="cp_get_rule">Retrieving Automatic Zen Rule</string>

    <string name="location_mode_high_accuracy_test">High Accuracy Mode Test</string>
    <string name="location_mode_high_accuracy_info">
        This test checks that the Location Mode API is consistent with the
        Location Provider API when the device is in High Accuracy location mode.
    </string>
    <string name="location_mode_select_high_accuracy">
        Please select the \"High accuracy\" mode at Settings > Location
        (hint: tap the "Mode" item) and return here.
    </string>
    <string name="location_mode_battery_saving_test">Battery Saving Mode Test</string>
    <string name="location_mode_battery_saving_info">
        This test checks that the Location Mode API is consistent with the
        Location Provider API when the device is in Battery Saving location mode.
    </string>
    <string name="location_mode_select_battery_saving">
        Please select the \"Battery Saving\" mode at Settings > Location
        (hint: tap the "Mode" item) and return here.
    </string>
    <string name="location_mode_device_only_test">Device Only Mode Test</string>
    <string name="location_mode_device_only_info">
        This test checks that the Location Mode API is consistent with the
        Location Provider API when the device is in Device Only location mode.
    </string>
    <string name="location_mode_select_device_only">
        Please select the \"Device Only\" mode at
        Settings > Location (hint: tap the "Mode" item) and return here.
    </string>
    <string name="location_mode_off_test">Location Mode Off Test</string>
    <string name="location_mode_off_info">
        This test checks that the Location Mode API is consistent with the
        Location Provider API when the device is in the Off location mode.
    </string>

    <string name="location_mode_start_settings">Launch Settings</string>
    <string name="location_mode_turn_on">
        Please turn ON location access (the switch at the top of Settings > Location)
        and return here.
    </string>
    <string name="location_mode_turn_off">
        Please turn OFF location access (the switch at the top of Settings > Location)
        and return here.
    </string>
    <string name="location_mode_secure_gps_on">GPS provider should be ON in secure settings.</string>
    <string name="location_mode_secure_gps_off">GPS provider should be OFF in secure settings.</string>
    <string name="location_mode_secure_nlp_on">Network location provider should be ON in secure settings.</string>
    <string name="location_mode_secure_nlp_off">Network location provider should be OFF in secure settings.</string>
    <string name="location_mode_manager_gps_on">GPS provider should be ON in LocationManager.</string>
    <string name="location_mode_manager_gps_off">GPS provider should be OFF in LocationManager.</string>
    <string name="location_mode_manager_nlp_on">Network location provider should be ON in LocationManager.</string>
    <string name="location_mode_manager_nlp_off">Network location provider should be OFF in LocationManager.</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">Use the CertInstaller to install the certificate "MyCA.cer" from device storage. When it opens, choose any name and tap "Okay". 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. (If this button does nothing, pass the test and move on.)</string>
    <string name="caboot_install_cert">Install credential</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 and reset the following items:\n
 1. Clear device credentials.\n
 2. Change the lock screen type to \'None\'.</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_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 package and verify that it installs.
    </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_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
    </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_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 background image contains an orange suitcase.\n
        4. Verify that the background color of the remaining image is blue.\n
        5. Verify that the header text says \"CtsVerifier\".\n
        6. Confirm your credentials and verify that the credentials you entered previously work.
    </string>
    <string name="provisioning_byod_confirm_work_credentials_header">
        CtsVerifier
    </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.
    </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) 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) Follow the instructions on-screen to remove the work password.\n
        2) Open Recents.\n
        3) Confirm that this "CTS Verifier" activity is shown in Recents.\n
        4) Confirm that the contents of the activity <b>are not</b> hidden.\n
        5) 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 remove this before continuing.
    </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. Then try to open the camera
        from the lower right corner of the screen. Expected result is you cannot
        open the camera from lock screen and it will ask for password instead.
    </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 and "Accept and continue" button are 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, you should be automatically redirected back to this page
    </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, you should be automatically redirected back to this page.
        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_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_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 exist.\n
        - \"Remove work profile\" exists under the Work category.\n
        \n
        Furthermore, verify that:\n
        - There are two auto-sync options present, one for personal and one for work data (either on the screen or in the overflow menu).\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).\n
        \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 work profile exists in the dropdown list and selecting 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).\n
        \n
        Verify that work profile entry exists in the page 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 \"Data usage\" page and then into the \"Wi-Fi data usage\" category.\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_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 \"Data usage\" page and then into the \"Mobile data usage\" category.\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 file. Verify that the file 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 file. Verify that the file 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. 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
        3. 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. 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
        3. 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. 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
        3. 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. 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
        3. Go back to the cts-verifier tests using the back button, then mark the test accordingly.\n
    </string>

    <string name="provisioning_byod_turn_off_work">Turn off work mode</string>
    <string name="provisioning_byod_turn_off_work_info">This test verifies device behaviors when turning off work mode.</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 mode.\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 mode</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 mode is turned off.)
    </string>

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

    <string name="provisioning_byod_turn_off_work_notifications">Notifications when work mode 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_icon">Status bar icon when work mode is off</string>
    <string name="provisioning_byod_turn_off_work_icon_instruction">
        Now that work mode is off, please verify that the status bar shows an icon indicating that work mode is off.\n
    </string>

    <string name="provisioning_byod_turn_off_work_launcher">Starting work apps when work mode is off</string>
    <string name="provisioning_byod_turn_off_work_launcher_instruction">
        This test verifies that work applications cannot be started if work mode is off.\n
        1. Press home to go to the launcher.\n
        2. Verify that work applications are greyed out.\n
        3. Tap on a work application.\n
        4. Verify that the application does not start.\n
    </string>

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

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

    <string name="provisioning_byod_turn_on_work_launcher">Starting work apps when work mode is on</string>
    <string name="provisioning_byod_turn_on_work_launcher_instruction">
        Now that work mode 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_organization_color_hint">#FF00FF</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. Enter a valid color code.\n
        3. Press the Set button to set organization Info.\n
        4. Press the Go button to open a dialog to confirm work credentials.\n
        5. Verify that the background color of the resulting dialog is as set by you.\n
        6. 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>

    <!-- 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 can\'t be 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.
    </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">
            Please set the device owner by enabling USB debugging on the device and issuing the following command on the host:\n
            adb shell dpm set-device-owner \'com.android.cts.verifier/com.android.cts.verifier.managedprovisioning.DeviceAdminTestReceiver\'
    </string>
    <string name="device_owner_remove_device_owner_test">Remove device owner</string>
    <string name="device_owner_remove_device_owner_test_info">
            Please check in Settings &gt; Security &gt; Device Administrators if CTSVerifier is
            Device Owner. Then press the button below, and check that CTSVerifier is NOT Device
            Owner anymore.
    </string>
    <string name="remove_device_owner_button">Remove device owner</string>
    <string name="device_owner_check_device_owner_test">Check device owner</string>
    <string name="device_owner_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, notifications
            and the assist gesture are no longer available.\n
            Next, press the button to reenable the status bar and verify that quick settings, notification
            and the assist gesture 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 again.\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_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. Trying to change it triggers a support message.\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. Trying to change it triggers a support message.\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)\" cannot be selected and 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.\n
        1. Press the set user icon button.\n
        2. Press the go button to go to Settings.\n
        3a. If there is a \"users\" section in Settings, check that the icon of the user \"owner\" is the CtsVerifier one and mark this test accordingly.\n
        3b. If there is no \"users\" section, mark this test as passed.\n
    </string>
    <string name="device_owner_set_user_icon_button">Set user icon</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_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_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. (If this device has a separate app for work settings, ignore the button and open that app manually from the launcher)\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 "More details" 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_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 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</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_modify_accounts">Disallow modify accounts</string>
    <string name="disallow_modify_accounts_action">Adding an account or removing an account (if you have already 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="disallow_remove_user_action">Removing other users</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_uninstall_apps">Disallow uninstall apps</string>
    <string name="disallow_uninstall_apps_action">Uninstalling applications other CtsVerifier</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\' is not enabled in Settings and 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 accessibility services
    </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) Upload the NotificationBot.apk to your device by issuing the following command on the host:\n
            adb push /path/to/NotificationBot.apk /sdcard\n
        3) Press the Uninstall button.\n
        4) Press the Open Settings button.\n
        5) In the screen that opens, verify that you are not told that your administrator installed any apps.\n
        6) Use the Back button to return to this page.\n
        7) Press the Install button.\n
        8) Press the Open Settings button.\n
        9) In the screen that opens, verify that you are told now that your administrator installed at least one app.\n
        10) Tap on that information. Verify that a list of apps installed shows.\n
        11) Verify that the list contains the CTS Robot app.\n
        12) Use the Back button to return to this page.\n
        13) Press the Uninstall button.\n
        14) Issue the following command on the host:\n
            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) When a default browser is set, you must clear it by step (2), (3) and (4).\n
        2) Confirm default browser by "Settings &gt; Apps &amp; notifications &gt; Default apps &gt; Browser app".\n
        3) Tap default browser app in the "Settings &gt; Apps &amp; notifications &gt; App info".\n
        4) Tap "Open by default" and Tap "CLEAR DEFAULTS"\n
        5) Press the Reset button.\n
        6) Press the Open Settings button.\n
        7) In the screen that opens, verify that you are not told that your administrator set any default apps.\n
        8) Use the Back button to return to this page.\n
        9) Press the Set Default Apps button.\n
        10) Press the Open Settings button.\n
        11) In the screen that opens, verify that you are now told that your administrator has set 7 default apps.\n
        12) Tap on that information. Verify that a list of default apps shows, with 7 elements in it.\n
        13) Verify that each element shows the CTS Verifier is the default app.\n
        14) Use the Back button to return to this page.\n
        15) 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_comp_always_on_vpn">Always-on VPN (managed profile)</string>
    <string name="enterprise_privacy_comp_always_on_vpn_info">
        Please do the following:\n
        1) Press the Start button to create a work profile.\n
        2) Press the Open Settings button.\n
        3) In the screen that opens, verify that you are not told that an always-on VPN is set.\n
        4) Use the Back button to return to this page.\n
        5) Press the Set VPN button to set an always-on VPN in your work profile.\n
        6) Repeat steps (2) through (4), verifying that in step (3), you are told now that an always-on VPN is set in your work profile.\n
        7) Press the Finish button to remove the work profile and always-on 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_comp_ca_certs">Trusted CA certs (managed profile)</string>
    <string name="enterprise_privacy_comp_ca_certs_info">
        Please do the following:\n
        1) Press the Start button to create a work profile.\n
        2) Press the Settings button.\n
        3) In the screen that opens, verify that you are not told that your administrator installed trusted CA certs.\n
        4) Use the Back button to return to this page.\n
        5) Press the Install Cert button to install a trusted CA cert in your work profile.\n
        6) Repeat steps (2) through (4), verifying that in step (3), you are told now that the administrator has installed at least one trusted CA cert in your work profile.\n
        7) Press the Finish button to remove the work profile and 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_comp_failed_password_wipe">Wipe on authentication failure (managed profile)</string>
    <string name="enterprise_privacy_comp_failed_password_wipe_info">
        Please do the following:\n
        1) Press the Start button to create a work profile.\n
        2) Press the Open Settings button.\n
        3) In the screen that opens, verify that you are not told work profile data will be deleted if you mistype your password too many times.\n
        4) Use the Back button to return to this page.\n
        5) Press the Set Limit button to set the maximum number of password attempts.\n
        6) Repeat steps (2) through (4), verifying that in step (3), you are told now that work profile data will be deleted if you mistype your password 100 times.\n
        7) Press the Finish button to remove the work profile.
    </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 \"Learn more\" link.\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.
    </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
    </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>

    <string name="comp_test">Corporate Owned Managed Profile</string>
    <string name="comp_provision_profile_dialog_title">Provision work profile</string>
    <string name="comp_provision_profile_dialog_text">Press the OK button to start the managed provisioning flow, and complete the flow to create a work profile</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_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>

    <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="screen_pinning_done">All tests completed successfully.</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 Notifcations 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="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="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>

    <!-- 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_ok">Ok</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>

    <!-- Audio Loopback Latency Test -->
    <string name="audio_loopback_test">Audio Loopback Latency Test</string>
     <string name="audio_loopback_info">
          This test requires the Loopback Plug. Please connect a Loopback Plug into the headset
          connector, 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>

    <!-- 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</string>
    <string name="voicemail_restore_default_dialer_no_default_description">Restore the default dialer by going to settings-> apps -> cogwheel -> 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_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 mandated 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 mandated 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 mandated USB Audio headset. Press each
        \"transport\" button and verify that it is recognized by the test.
       </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 incoming calls from a Self-Managed Connection Service will trigger
        a Telecom-managed incoming call UI when there is already 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">
        Click the button below to test that the system incoming call notification shows.  When the
        notification shows, "answer" the call.
    </string>
    <string name="telecom_incoming_self_mgd_show_ui_button">Show System Incoming UI</string>
    <string name="telecom_incoming_self_mgd_step_3">
        Click the button below to confirm that the incoming call was answered.
    </string>
    <string name="telecom_incoming_self_mgd_confirm_answer_button">Confirm Answer</string>
</resources>
