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

    <!-- Strings for TestListActivity -->
    <string name="test_category_audio">Audio</string>
    <string name="test_category_camera">Camera</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="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="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 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
        All new phones and tablets MUST support near-ultrasound recording.\n
        Report FAIL if this is a new device, report PASS if this is an updating device.\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
        All new phones and tablets MUST support near-ultrasound playback.\n
        Report FAIL if this is a new device, report PASS if this is an updating device.\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_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_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>

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

    <!-- 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 set the notification filter to \"All\" in the dialog
        that appears when you change the device\'s volume.</string>
    <string name="attention_filter_priority">Please set the notification filter to \"Priority\" in
        the dialog that appears when you change the device\'s volume, and allow messages from
        starred contacts.</string>
    <string name="attention_filter_none">Please set the notification filter to \"None\" in the dialog
        that appears when you change the device\'s volume.</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 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>

    <!-- 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 for BYOD managed provisioning tests (ByodFlowTestActivity) -->
    <string name="test_category_managed_provisioning">Managed Provisioning</string>
    <string name="provisioning_byod_device_admin">CTS Verifier - BYOD Admin</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">Open app cross profiles</string>
    <string name="provisioning_byod_cross_profile_app_personal">
        You selected the CTS Verifier option.
    </string>
    <string name="provisioning_byod_cross_profile_app_work">You selected the Work option.</string>
    <string name="provisioning_byod_cross_profile_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_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
        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 - BYOD 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_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_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_byod_go">Go</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>

    <!-- 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 Live Channels app Tests -->

    <string name="tv_input_discover_test">3rd-party TV input app discoverability test</string>
    <string name="tv_input_discover_test_info">
    This test verifies that the pre-loaded Live Channels app is invoked via intents and issues
    appropriate calls to framework APIs, so that TV input apps work properly with the pre-loaded
    Live Channels app.
    </string>
    <string name="tv_input_discover_test_go_to_setup">
    Press the \"Launch Live Channels\" 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">
    Press the \"Launch Live Channels\" button, and tune to the channel named \"Dummy\" 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">
    Overlay view must be shown. Verify that there is a text view displaying \"Overlay View Dummy Text\"
    when you tune to the \"Dummy\" channel.
    </string>
    <string name="tv_input_discover_test_verify_global_search">
    Live Channels app should provide query results for 3rd-party input\'s channels and programs on
    global search requests.
    </string>
    <string name="tv_input_discover_test_go_to_epg">
    Press the \"Launch EPG\" button, and locate the channel named \"Dummy\".
    </string>
    <string name="tv_input_discover_test_verify_epg">
    Do you see the programs named \"Dummy Program\" and its description
    "Dummy Program Description" in the EPG?
    </string>
    <string name="tv_input_discover_test_yes">Yes</string>

    <string name="tv_parental_control_test">Live Channels app parental control test</string>
    <string name="tv_parental_control_test_info">
    This test verifies that the default Live Channels app invokes proper parental control APIs in
    the framework.
    </string>
    <string name="tv_parental_control_test_turn_on_parental_control">
    Press the \"Launch Live Channels\" button, and turn on the parental control. If it\'s 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">
    Press the \"Launch Live Channels\" button, and block \"Fake\" rating for \"CtsVerifier\" rating
    system in the parental control settings. You may have to enable the rating system if it is
    disabled by default. If it\'s already blocked, unblock, 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">
    Press the \"Launch Live Channels\" button; verify that the channel is blocked visually.
    Try unblock the screen by entering PIN; verify that it\'s unblocked visually.
    </string>

    <string name="tv_launch_tv_app">Launch Live Channels</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">Live Channels app closed captions and multi-audio test</string>
    <string name="tv_multiple_tracks_test_info">
    This test verifies that the default Live Channels app invokes proper mulitple tracks APIs in the
    framework.
    </string>
    <string name="tv_multiple_tracks_test_select_subtitle">
    Press the \"Launch Live Channels\" button. Verify that the closed caption is off by default.
    Set closed caption to English.
    </string>
    <string name="tv_multiple_tracks_test_verify_set_caption_enabled">
    Caption should be enabled.
    </string>
    <string name="tv_multiple_tracks_test_verify_select_subtitle">
    The English subtitle track should be selected.
    </string>
    <string name="tv_multiple_tracks_test_select_audio">
    Press the \"Launch Live Channels\" 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="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 Test -->
    <string name="audio_devices_notifications_test">Audio Devices Notifications Test</string>
    <string name="audio_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_dev_notification_clearmsgs">Clear Messages</string>
    <string name="audio_dev_notification_connectMsg">CONNECT DETECTED</string>
    <string name="audio_dev_notification_disconnectMsg">DISCONNECT DETECTED</string>

    <!--  Audio Routing Notifcations Test -->
    <string name="audio_routingnotifications_test">Audio Routing Notifications Test</string>
    <string name="audio_dev_routingnotification_instructions">
          Click on the "Play" button in the AudioTrack Routing Notifictions 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
          Repeat the process with "Record" and "Stop" button in the AudioRecord Routing
          Notifications section below.
    </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>
</resources>
