<?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>
    <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_tv">TV</string>
    <string name="test_category_other">Other</string>
    <string name="clear">Clear</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 ReportViewerActivity -->
    <string name="report_viewer">Report Viewer</string>

    <!-- Strings for BackupTestActivity -->
    <string name="backup_test">Data Backup Test</string>
    <string name="backup_info">This test checks that data backup and automatic restore works
        properly. The test activity lists some preferences and files that are backed up and
        restored by the CTS Verifier. If backup and restore is working properly, these values
        should be restored after running the backup manager, uninstalling the app, and reinstalling
        the CTS Verifier.
        \n\nPress the \"Generate Test Data\" to populate these values
        and then follow the on screen instructions to finish the test.
    </string>
    <string name="bu_preferences">Preferences</string>
    <string name="bu_files">Files</string>
    <string name="bu_loading">Loading...</string>
    <string name="bu_generate">Generate Test Data</string>
    <string name="bu_generate_error">Error occurred while generating test data...</string>
    <string name="bu_instructions">Random values for the preferences and files have been saved.
        \n\nFollow the instructions below to check that the data backup and restore works:
        \n\n1. Make sure backup and automatic restore are enabled in settings. Depending on the
        backup transport supported by the device you may need to do additional steps. For instance
        you may need to set a Google account as the backup account for the device. If you cannot
        find the corresponding setting options on your device, run \"adb shell bmgr enable true\"
        to enable the backup manager. You can check its status by executing \"adb shell bmgr
        enabled\".
        \n\n2. Run the backup manager: adb shell bmgr run
        \n\n3. Uninstall the program: adb uninstall com.android.cts.verifier
        \n\n4. Reinstall the CTS Verifier and verify that the values are still the same.
    </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="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_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>

    <!-- 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 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 Low Energy</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_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">BLE Client Test</string>
    <string name="ble_client_connect_name">BLE Client Connect</string>
    <string name="ble_discover_service_name">BLE Discover Service</string>
    <string name="ble_read_characteristic_name">BLE Read Characteristic</string>
    <string name="ble_write_characteristic_name">BLE Write Characteristic</string>
    <string name="ble_reliable_write_name">BLE Reliable Write</string>
    <string name="ble_notify_characteristic_name">BLE Notify Characteristic</string>
    <string name="ble_read_descriptor_name">BLE Read Descriptor</string>
    <string name="ble_write_descriptor_name">BLE Write Descriptor</string>
    <string name="ble_read_rssi_name">BLE Read RSSI</string>
    <string name="ble_client_disconnect_name">BLE Client Disconnect</string>
    <string name="ble_client_test_info">The BLE test must be done simultaneously on two devices. This device is the client. All tests listed here must be done in order.</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>

    <!-- BLE server side strings -->
    <string name="ble_server_service_name">Bluetooth LE GATT Server Handler Service</string>
    <string name="ble_server_start_name">BLE Server Test</string>
    <string name="ble_server_start_info">The BLE 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 BLE client.</string>
    <string name="ble_server_add_service">Adding service to BLE 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_receiving_disconnect">Waiting on disconnection from BLE client</string>

    <!-- BLE advertiser side strings -->
    <string name="ble_advertiser_test_name">BLE Advertiser Test</string>
    <string name="ble_advertiser_test_info">The BLE test must be done simultaneously on two devices, an advertiser and a scanner. This device is the advertiser.</string>
    <string name="ble_advertiser_service_name">Bluetooth LE Advertiser Handler Service</string>
    <string name="ble_privacy_mac_name">BLE Privacy Mac</string>
    <string name="ble_privacy_mac_info">BLE 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 BLE advertising.</string>
    <string name="ble_power_level_name">BLE Tx Power Level</string>
    <string name="ble_power_level_info">BLE 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 message that this device does not support multi advertising. If advertiser does not advertise in 4 power levels, neither you receive the error message, you may not stop the advertising in previous test, or this device does not support 4 advertisers at the same time. Try rebooting the device and run the test to free those advertisers in use.</string>
    <string name="ble_advertiser_scan_filter_name">BLE Hardware Scan Filter</string>
    <string name="ble_advertiser_scan_filter_info">BLE 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">BLE Scanner Test</string>
    <string name="ble_scanner_service_name">Bluetooth LE Scanner Handler Service</string>
    <string name="ble_scanner_test_info">The BLE 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 different mac address. After 15 mins, a green text "Get a new Mac address" will show up.</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>

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

    <!-- 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_reader_tests">HCE reader tests</string>
    <string name="nfc_hce_emulator_tests">HCE emulator tests</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 "Favor foreground app" setting to be enabled. Tap OK to go to Tap and Pay settings and check the Favor foreground app option</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>

    <!-- 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: those errors
        might degrade the user experience and might cause some applications to misbehave. They are
        not required for Android Compatibility at this time, but will in a future release.</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 XCheck</string>
    <string name="snsr_rvcvxchk_test_rec">Rotation Vector CV XCheck 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">Turn off any special features installed in the
        device that register for sensors. 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 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 tigger time. wakeTime=%1$d ms triggerTime=%2$d ms</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>

    <!-- 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 SuidFilesActivity -->
    <string name="suid_files">SUID File Scanner</string>
    <string name="suid_files_info">This test will attempt to find unauthorized SUID binaries, but it is not comprehensive due to permission restrictions.\n\nAuthorized SUID binaries will appear green, while unauthorized SUID binaries will appear red.\n\nPress OK to start the scan...</string>
    <string name="scanning_directory">Scanning directory...</string>
    <string name="file_status">User: %1$s\nGroup: %2$s\nPermissions: %3$s\nPath: %4$s</string>
    <string name="no_file_status">Could not stat file...</string>
    <string name="congratulations">Congratulations!</string>
    <string name="no_suid_files">No unauthorized suid files detected!</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. \n
    5. Return to CTS verifier app. \n
    6. Pass button will light up if intent was received.\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. \n
    5. Return to CTS verifier app. \n
    6. Pass button will light up if intent was received.\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.\n
    4. Pass button will light up if intent 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.\n
    4. Pass button will light up if intent 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="sensor_power_test">Sensor Power Test</string>
    <string name="usb_accessory_test_info">
        1. Connect your Android device to a computer and run the \'cts-usb-accessory\' program
        included with the CTS Verifier bundle.
        \n\n2. If you have not started the CTS Verifier, press \'OK\' when asked to open the CTS
        Verifier when the accessory is connected. \n\nIf you are already in this test,
        then you can press \'Cancel\' but press \'OK\' in the next dialog asking whether to allow
        CTS Verifier to access the accessory.
        \n\n3. You should see the accessory and the CTS Verifier display a series of messages
        which indicates that the accessory support is working properly.
    </string>
    <string name="usb_not_available_title">USB accessory feature is not available?</string>
    <string name="usb_not_available_message">If your device is supposed to support USB accessories, your API implementation is not behaving correctly!</string>
    <string name="usb_received_messages">Received Messages</string>
    <string name="usb_sent_messages">Sent Messages</string>
    <string name="usb_no_messages">No messages</string>
    <string name="usb_message_thread_started">Starting message processing...</string>
    <string name="usb_message_thread_exception">Exception occurred while processing a message...</string>
    <string name="usb_message_thread_ended">Stopping message processing...</string>
    <string name="usb_test_passed">Received all expected messages. Pass button enabled!</string>
    <string name="usb_file_descriptor_error">Could not open file descriptor for USB accessory... try reconnecting and restarting the accessory?</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 20+ minutes to run.
    </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>

    <!-- 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">
        Start the \"GO Negotiation Requester Test\" on the other device and follow
        the instructions.</string>
    <string name="p2p_accept_client_info">
        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">
        Start the \"GO Negotiation Responder Test\" on the other device.
        Then run each test individually by clicking on it\'s name.</string>
    <string name="p2p_join_go_info">
        Start the \"Group Owner Test\" on the other device.
        Then run each test individually by clicking on it\'s name.</string>
    <string name="p2p_service_discovery_requester_info">
        Start the \"Service Discovery Responder Test\" on the other device.
        Then run each test individually by clicking on it\'s 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. 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. 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. 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>

    <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\" under \"App notifications\" in the \"Sound &amp; notifications\" settings panel, and mark it as having notification priority.</string>
    <string name="package_priority_default">Find \"%s\" under \"App notifications\" in the \"Sound &amp; notifications\" settings panel, and make sure it has default priority.</string>
    <string name="package_priority_user_order">Check that ranker respects user priorities.</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 15 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="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="nls_enable_service">Please enable \"Notification Listener for CTS Verifier\"
        under Security > Notification Access and return here.</string>
    <string name="nls_disable_service">Please disable \"Notification Listener for CTS Verifier\"
        under Security > 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="nls_note_received">Check that notification was received.</string>
    <string name="nls_payload_intact">Check that notification payload was intact.</string>
    <string name="nls_clear_one">Check that service can clear a notification.</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="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. When it opens, just 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_check_notification">Please look at the new notification and confirm: It say the network may be monitored. Tapping it brings up a more detailed explanation and a button to check trusted credentials. Tapping that button brings up the Trusted Credentials page you just visited.</string>
    <string name="cacert_dismiss_notification">Dismiss the notification. If it cannot be dismissed, 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
 Touch \'Next\' to begin.</string>
    <string name="keychain_install_desc">Credentials generated. Touch \'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, touch \'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. 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">Camera support cross profile video capture</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_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">Autentication-boud 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. Create a lockscreen password and if available, enroll a fingerprint.\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>
    <!-- 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.\n
           Ringtone: silent.\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 case the cubes to explode.</string>
    <string name="pca_test">Projection Cube Test</string>
    <string name="pwa_info">This tests whether or displaying widets 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
        Further, you should also be able to touch them and they should highlight as usual.</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_left">Left</string>
    <string name="pwa_button_right">Right</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 common for BYOD and DO managed provisioning tests. -->
    <string name="afw_device_admin">CTS Verifier - AfW Admin</string>

    <!-- Strings for BYOD managed provisioning tests (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_diskencryption">Full disk encryption enabled</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 - AfW Admin\" as active admin.\n
        After that please press the \"Prepare test\" button to disable trust agents.\n
        Then please press through the following verification steps.\n
        Note: Device password will be set to \"testpassword\". After leaving the screen device
        password and active admin status will be cleared.
    </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 screen is shown as disabled by the administrator.
        Then please press Back and mark the 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_notifications">Notifications disabled on keyguard</string>
    <string name="provisioning_byod_disable_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\", you can not see the contents
        (Which would read \"This is a work notification\").\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_work_notification_title">This is a work notification</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.
        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, hit the action overflow button (3 dots) and verify that:\n
        - There are two auto-sync options present, one for personal and one for work data.\n
        - De-selecting either option prompts a warning dialog.\n
        \n
        Use the Back button 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.
        Navigate to Device administrators and confirm that:\n
        \n
        - Both Personal and Work categories exist.\n
        - \"CTS Verifier - AfW Admin\" exists under the Work category, and is activated.\n
        \n
        Use the Back button 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.\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 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.\n
        \n
        Verify that work profile entry exists in the page.\n
        \n
        Then use the Back button to return to this test and mark accordingly.
    </string>

    <string name="provisioning_byod_battery_settings">Profile-aware battery settings</string>
    <string name="provisioning_byod_battery_settings_instruction">
        Please press the Go button to open Battery page in settings.\n
        \n
        Verify that Battery page shows both badged and unbadged apps in the usage list.\n
        \n
        Note that the usage list only displays usage since last charge,
        so you may need to unplug your device and use a badged and unbadged app
        for a little while before they will appear in the list.\n
        \n
        Then use the Back button to return to this test and mark accordingly.
    </string>

    <string name="provisioning_byod_data_usage_settings">Profile-aware data usage settings</string>
    <string name="provisioning_byod_data_usage_settings_instruction">
        Please press the Go button to open the Settings page.\n
        \n
        Navigate to Data usage page and confirm that it includes a Work profile section,
        and that tapping it shows just work profile data usage.\n
        \n
        Then use the Back button 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.
        \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 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>

    <!-- Strings for DeviceOwnerProvisioningTest -->
    <string name="provisioning_device_owner">Device Owner Provisioning</string>
    <string name="device_owner_provisioning_tests">Device Owner provisioning tests</string>
    <string name="device_owner_provisioning_tests_info">The device owner provisioning tests verify that setting up a corporate owned device can only be done on a factory reset device.</string>
    <string name="device_owner_provisioning_category">Device Owner Provisioning</string>
    <string name="device_owner_negative_test">Device owner negative test</string>
    <string name="device_owner_negative_test_info">Please click the "Start provisioning" button, and when you see a warning dialog telling the device is already set up, select "pass". Otherwise, select "fail".</string>
    <string name="start_device_owner_provisioning_button">Start provisioning</string>
    <string name="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">
            Note that any device passwords that you might have set will be deleted during this test.\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_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 behaviour is observed.\n
            <b>Allow:</b> Permission is granted to the app and cannot be changed through the settings UI.\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.\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="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 - AfW Admin\" exists and is activated.\n
        - \"CTS Verifier - AfW Admin\" 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
        - You cannot edit, add or remove any already paired devices.\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
        - You cannot edit, add or remove any existing WiFi configs.\n
        \n
        Use the Back button to return 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_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.
        Then press Go to open the VPN page.\n\n
        Confirm that:\n
        - You cannot add a new VPN network.\n
        - You cannot edit, add or remove any existing VPNs.\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 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 behaviour 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_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 behaviour 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">Unplug the device in order to begin.</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, plug the device back in to continue. If the above failed, you can simply fail this test.</string>

    <string name="js_connectivity_test">Connectivity Constraints</string>
    <string name="js_connectivity_instructions">Verify the behaviour 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 Cellular 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_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_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_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_block_tv_ma">
    Select the \"Launch TV app\" button and block the \"Fake\" rating for \"CtsVerifier\" rating
    system in the parental control settings. If the rating system is disabled by default, enable it.
    If the \"Fake\" 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_launch_tv_app">Launch TV app</string>
    <string name="tv_launch_epg">Launch EPG</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 be resumed 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 be rewinded.
    </string>
    <string name="tv_time_shift_test_verify_fast_forward">
    The playback should be fast-forwarded.
    </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 TV input service provides
    links for its specific channels, 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 could be differ.\n
    2) You should see the text \"Cts App-Link Text\".\n
    </string>

    <string name="overlay_view_text">Overlay View Dummy Text</string>
    <string name="fake_rating">Fake</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>

    <!-- 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 Successful</string>
    <string name="audio_general_test_failed">Test Failed</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="audio_frequency_mic_info">
        This test requires an external USB reference microphone and external speakers.
        Please use the headphone connector to connect external speakers. Position the device 40 cms
        from the speakers and proceed with the instructions on the screen.
        The system will measure frequency response of the built in microphone.
       </string>
    <string name="audio_frequency_mic_instructions">
          Please connect external speakers using the headphone connector. Please unplug any USB audio device (if any)
    </string>
    <string name="audio_frequency_mic_speakers_ready_btn">External speakers ready</string>
    <string name="audio_frequency_mic_speakers_ready_status">...</string>
    <string name="audio_frequency_mic_instructions2">
          Please position the speakers 40 cms from the device under test and press TEST 1
    </string>
    <string name="audio_frequency_mic_test1_btn">Test 1</string>
    <string name="audio_frequency_mic_usb_status">Waiting for USB microphone...</string>
    <string name="audio_frequency_mic_connect_mic">Please Connect USB microphone, position it next to
    the built in microphone in the device and press USB reference microphone</string>
    <string name="audio_frequency_mic_mic_ready_btn">USB Reference microphone ready</string>
    <string name="audio_frequency_mic_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_mic_mic_not_ready_text">"No USB Audio device detected. Please reconnect."</string>
    <string name="audio_frequency_mic_test2_btn">Test 2</string>
    <string name="audio_frequency_mic_results_text">Results...</string>

</resources>
