<?xml version="1.0" encoding="utf-8"?>
<!--
 Copyright (c) 2014, The Linux Foundation. All rights reserved.

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:
     * Redistributions of source code must retain the above copyright
       notice, this list of conditions and the following disclaimer.
     * Redistributions in binary form must reproduce the above
       copyright notice, this list of conditions and the following
       disclaimer in the documentation and/or other materials provided
       with the distribution.
     * Neither the name of The Linux Foundation nor the names of its
       contributors may be used to endorse or promote products derived
       from this software without specific prior written permission.

 THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
 ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

    <!-- the prefix of recordings files name.prefix like this "Rec",default value is null -->
    <string name="def_save_name_prefix" translatable="false"></string>

    <!--
         the name format of recordings files,format like this "yyyy-MM-dd-HH-mm-ss",
            default value is null
    -->
    <string name="def_save_name_format" translatable="false"></string>
    <string name="def_date_format">"yyyy-MM-dd-HH-mm-ss"</string>

    <!--
         the type of saved recordings files.The value is 0-amr , 1-3gpp , 2-wav.Default is 0-amr.
            default value is 0
    -->
    <integer name="def_save_type" translatable="false">0</integer>

    <!--
         the mimetype of saved recordings files.The value is "audio/amr","audio/3gpp",
            "audio/wave_2ch_lpcm".Default is "audio/amr".
    -->
    <string name="def_save_mimetype" translatable="false">audio/amr</string>
    <bool name= "config_storage_path">false</bool>
</resources>
