├── Android.mk ├── AndroidManifest.xml ├── CleanSpec.mk ├── MODULE_LICENSE_APACHE2 ├── NOTICE ├── res ├── drawable-hdpi │ ├── app_voicedialer.png │ ├── ic_vd_green_key.png │ ├── ic_vd_mic_off.png │ ├── ic_vd_mic_on.png │ └── ic_vd_retry.png ├── drawable-mdpi │ ├── app_voicedialer.png │ ├── ic_vd_green_key.png │ ├── ic_vd_mic_off.png │ ├── ic_vd_mic_on.png │ └── ic_vd_retry.png ├── layout │ ├── tool_tip.xml │ └── voice_dialing.xml ├── values-af │ └── strings.xml ├── values-am │ └── strings.xml ├── values-ar │ └── strings.xml ├── values-bg │ └── strings.xml ├── values-bn-rBD │ └── strings.xml ├── values-ca │ └── strings.xml ├── values-cs │ └── strings.xml ├── values-da │ └── strings.xml ├── values-de │ └── strings.xml ├── values-el │ └── strings.xml ├── values-en-rGB │ └── strings.xml ├── values-en-rIN │ └── strings.xml ├── values-es-rUS │ └── strings.xml ├── values-es │ └── strings.xml ├── values-et-rEE │ └── strings.xml ├── values-fa │ └── strings.xml ├── values-fi │ └── strings.xml ├── values-fr │ └── strings.xml ├── values-hi │ └── strings.xml ├── values-hr │ └── strings.xml ├── values-hu │ └── strings.xml ├── values-in │ └── strings.xml ├── values-it │ └── strings.xml ├── values-iw │ └── strings.xml ├── values-ja │ └── strings.xml ├── values-ko │ └── strings.xml ├── values-lt │ └── strings.xml ├── values-lv │ └── strings.xml ├── values-ms-rMY │ └── strings.xml ├── values-nb │ └── strings.xml ├── values-nl │ └── strings.xml ├── values-pl │ └── strings.xml ├── values-pt-rPT │ └── strings.xml ├── values-pt │ └── strings.xml ├── values-ro │ └── strings.xml ├── values-ru │ └── strings.xml ├── values-sk │ └── strings.xml ├── values-sl │ └── strings.xml ├── values-sr │ └── strings.xml ├── values-sv │ └── strings.xml ├── values-sw │ └── strings.xml ├── values-th │ └── strings.xml ├── values-tl │ └── strings.xml ├── values-tr │ └── strings.xml ├── values-uk │ └── strings.xml ├── values-vi │ └── strings.xml ├── values-zh-rCN │ └── strings.xml ├── values-zh-rHK │ └── strings.xml ├── values-zh-rTW │ └── strings.xml ├── values-zu │ └── strings.xml └── values │ └── strings.xml ├── src └── com │ └── android │ └── voicedialer │ ├── CommandRecognizerEngine.java │ ├── PhoneTypeChoiceRecognizerEngine.java │ ├── RecognizerClient.java │ ├── RecognizerEngine.java │ ├── RecognizerLogger.java │ ├── VoiceContact.java │ ├── VoiceDialerActivity.java │ ├── VoiceDialerReceiver.java │ └── VoiceDialerTester.java └── tests ├── Android.mk ├── AndroidManifest.xml └── src └── com └── android └── voicedialer └── VoiceDialerLaunchPerformance.java /Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH:= $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE_TAGS := optional 5 | 6 | LOCAL_SRC_FILES := $(call all-java-files-under, src) \ 7 | 8 | LOCAL_PACKAGE_NAME := VoiceDialer 9 | 10 | LOCAL_MULTILIB := 32 11 | 12 | LOCAL_JNI_SHARED_LIBRARIES := libsrec_jni 13 | 14 | LOCAL_PRIVILEGED_MODULE := true 15 | 16 | include $(BUILD_PACKAGE) 17 | 18 | # Install the srec data files if VoiceDialer.apk is installed to system image. 19 | include external/srec/config/en.us/config.mk 20 | $(LOCAL_INSTALLED_MODULE) : | $(SREC_CONFIG_TARGET_FILES) 21 | # SREC_CONFIG_TARGET_FILES is from external/srec/config/en.us/config.mk and now can be cleaned up. 22 | SREC_CONFIG_TARGET_FILES := 23 | 24 | # Use the following include to make our test apk. 25 | include $(call all-makefiles-under,$(LOCAL_PATH)) 26 | -------------------------------------------------------------------------------- /AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /CleanSpec.mk: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2007 The Android Open Source Project 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | # 15 | 16 | # If you don't need to do a full clean build but would like to touch 17 | # a file or delete some intermediate files, add a clean step to the end 18 | # of the list. These steps will only be run once, if they haven't been 19 | # run before. 20 | # 21 | # E.g.: 22 | # $(call add-clean-step, touch -c external/sqlite/sqlite3.h) 23 | # $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates) 24 | # 25 | # Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with 26 | # files that are missing or have been moved. 27 | # 28 | # Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory. 29 | # Use $(OUT_DIR) to refer to the "out" directory. 30 | # 31 | # If you need to re-do something that's already mentioned, just copy 32 | # the command and add it to the bottom of the list. E.g., if a change 33 | # that you made last week required touching a file and a change you 34 | # made today requires touching the same file, just copy the old 35 | # touch step and add it to the end of the list. 36 | # 37 | # ************************************************ 38 | # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST 39 | # ************************************************ 40 | 41 | # For example: 42 | #$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates) 43 | #$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates) 44 | #$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f) 45 | #$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*) 46 | 47 | # ************************************************ 48 | # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST 49 | # ************************************************ 50 | -------------------------------------------------------------------------------- /MODULE_LICENSE_APACHE2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_VoiceDialer/ae3c271041058f4bafa9691c3f80342d435cbee8/MODULE_LICENSE_APACHE2 -------------------------------------------------------------------------------- /res/drawable-hdpi/app_voicedialer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_VoiceDialer/ae3c271041058f4bafa9691c3f80342d435cbee8/res/drawable-hdpi/app_voicedialer.png -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_vd_green_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_VoiceDialer/ae3c271041058f4bafa9691c3f80342d435cbee8/res/drawable-hdpi/ic_vd_green_key.png -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_vd_mic_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_VoiceDialer/ae3c271041058f4bafa9691c3f80342d435cbee8/res/drawable-hdpi/ic_vd_mic_off.png -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_vd_mic_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_VoiceDialer/ae3c271041058f4bafa9691c3f80342d435cbee8/res/drawable-hdpi/ic_vd_mic_on.png -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_vd_retry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_VoiceDialer/ae3c271041058f4bafa9691c3f80342d435cbee8/res/drawable-hdpi/ic_vd_retry.png -------------------------------------------------------------------------------- /res/drawable-mdpi/app_voicedialer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_VoiceDialer/ae3c271041058f4bafa9691c3f80342d435cbee8/res/drawable-mdpi/app_voicedialer.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_vd_green_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_VoiceDialer/ae3c271041058f4bafa9691c3f80342d435cbee8/res/drawable-mdpi/ic_vd_green_key.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_vd_mic_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_VoiceDialer/ae3c271041058f4bafa9691c3f80342d435cbee8/res/drawable-mdpi/ic_vd_mic_off.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_vd_mic_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_VoiceDialer/ae3c271041058f4bafa9691c3f80342d435cbee8/res/drawable-mdpi/ic_vd_mic_on.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_vd_retry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_VoiceDialer/ae3c271041058f4bafa9691c3f80342d435cbee8/res/drawable-mdpi/ic_vd_retry.png -------------------------------------------------------------------------------- /res/layout/tool_tip.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 27 | 28 | 32 | 33 | 37 | 38 | 41 | 42 | 45 | 46 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /res/layout/voice_dialing.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 26 | 27 | 33 | 34 | 38 | 39 | 43 | 44 | 47 | 48 | 54 | 55 | 61 | 62 | 68 | 69 | 70 | 71 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /res/values-af/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Stembeller" 20 | "Het jy geweet…" 21 | "Druk en en hou die groen Bel-knoppie in om die Stembeller te open." 22 | " Voorbeelde: "" \n\"Bel Piet Pompies\" \n\"Bel Piet Pompies tuis, ...\" \n\"Bel stempos\" \n\"Bel (866) 555 0123\" \n\"Bel 911, 811, ...\" \n\"Bel +27 7333 444 555\" \n\"Bel weer\" \n\"Open kalender\" " 23 | "Stembeller" 24 | "Bluetooth-stembeller" 25 | "Begin tans..." 26 | "Luister tans…" 27 | "Probeer weer." 28 | "Kon nie inisialiseer nie" 29 | "Herbegin jou foon en probeer weer." 30 | "Verbinding met kopfoon verloor." 31 | " tuis" 32 | " op selfoon" 33 | " by die werk" 34 | " by ander" 35 | "Stembeller-logskryf is aangeskakel." 36 | "Stembeller-logskryf is afgeskakel." 37 | "Praat nou." 38 | "Geen resultate nie, probeer weer." 39 | "Ongeldige keuse." 40 | "Tot siens." 41 | 42 | -------------------------------------------------------------------------------- /res/values-am/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "በድምፅ መደወያ" 20 | "ያውቁ ኖሯል..." 21 | "& መጫን አረንጓዴውን የጥሪ አዝራር በመያዝ የድምፅ መደወያውን ይከፍታል።" 22 | " ምሳሌዎች፡"\n"\" ለከበደ ሚካኤል ደውል\" \n\" ከበደ ሚካኤል ቤትደውል....\"\n\" በድምፅ መልዕክት ደውል\"\n\" (011) 012 3456 ደውል\"\n\"911፣997 ደውል\"\n\" +251 1234 567 890 ደውል\"\n\" ድጋሚ ደውል\"\n\" ቀን መቁጠሪያ ክፈት\"" 23 | "የድምፅ ደዋይ" 24 | "የብሉቱዝ ድምፅ ደዋይ" 25 | "በመጀመር ላይ…" 26 | "በማዳመጥ ላይ..." 27 | "እንደገና ሞክር::" 28 | "ማስጀመር አልተቻለም" 29 | "ስልክህን ዳግም አስጀምር እና እንደገና ሞክር፡፡" 30 | "የተያያዥ ማዳመጫ ጠፍቷል።" 31 | " በመነሻ ገፅ" 32 | " በተንቀሳቃሽላይ" 33 | " በሥራ" 34 | " በሌላ" 35 | "የድምፅ ደዋይ ግባ ተነስቷል፡፡" 36 | "የድምፅ ደዋይ ግባ ጠፍቷል፡፡" 37 | "አሁን ተናገር።" 38 | "ምንም ውጤቶች የሉም፣ እንደገና ሞክር" 39 | "ትክክል ያልሆነ ምርጫ" 40 | "ቻው" 41 | 42 | -------------------------------------------------------------------------------- /res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Voice Dialer" 20 | "هل تعلم..." 21 | "يؤدي الضغط مع الاستمرار على زر الاتصال الأخضر إلى فتح Voice Dialer." 22 | " أمثلة: "" \n\"الاتصال بعمار ياسر\" \n\"الاتصال بعمار ياسر بالمنزل، …\" \n\"الاتصال بالبريد الصوتي\" \n\"طلب 0123 555 ‏(866)‏\"\n\"طلب 911، 811، …\" \n\"طلب 555 444 7333 44+\" \n\"إعادة الطلب\" \n\"فتح التقويم\" " 23 | "Voice Dialer" 24 | "Voice Dialer للبلوتوث" 25 | "جارٍ التشغيل..." 26 | "جارٍ الاستماع..." 27 | "أعد المحاولة." 28 | "تتعذر التهيئة" 29 | "أعد تشغيل الهاتف، ثم أعد المحاولة." 30 | "تم فقد الاتصال بسماعة الرأس." 31 | " بالمنزل" 32 | " بالجوال" 33 | " بالعمل" 34 | " برقم آخر" 35 | "تم تشغيل تسجيل Voice Dialer." 36 | "تم إيقاف تسجيل Voice Dialer." 37 | "تحدث الآن." 38 | "لا نتائج، حاول مرة أخرى." 39 | "اختيار غير صالح" 40 | "وداعًا." 41 | 42 | -------------------------------------------------------------------------------- /res/values-bg/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Гласово набиране" 20 | "Знаете ли, че..." 21 | "Натискането и задържането на зеления бутон за обаждане отваря Гласово набиране." 22 | " Примери: "" \n„Обаждане на Иван Петров“ \n„Обаждане на Иван Петров вкъщи, …“ \n„Обаждане на гласовата поща“ \n„Набиране на (866) 555 0123“ \n„Набиране на 911, 811, ...“ \n„Набиране на +44 7333 444 555“ \n„Повторно набиране на“ \n„Отваряне на Календар“ " 23 | "Гласово набиране" 24 | "Гласово набиране с Bluetooth" 25 | "Стартира се..." 26 | "Слуша се..." 27 | "Опитайте отново." 28 | "Не можа да започне" 29 | "Рестартирайте телефона си, след което опитайте отново." 30 | "Връзката със слушалките е загубена." 31 | " вкъщи" 32 | " на мобилния" 33 | " на служебния" 34 | " на други" 35 | "Влизането с Гласово набиране е включено." 36 | "Влизането с Гласово набиране е изключено." 37 | "Говорете сега." 38 | "Няма резултати, опитайте отново." 39 | "Невалиден избор." 40 | "Довиждане." 41 | 42 | -------------------------------------------------------------------------------- /res/values-bn-rBD/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Taleringer" 20 | "Visste du at…" 21 | "Taleringeren aktiveres om du holder nede den grønne ringeknappen." 22 | " Eksempler: "" \n«Call John Doe» \n«Call John Doe at home, …» \n«Call voicemail» \n«Dial (866) 555 0123» \n«Dial 911, 811, …» \n«Dial +44 7333 444 555» \n«Redial» \n«Open Calendar» " 23 | "Taleringer" 24 | "Bluetooth talestyrt oppringing" 25 | "Starter opp …" 26 | "Lytter…" 27 | "Prøv igjen." 28 | "Kunne ikke initialisere" 29 | "Start telefonen på nytt og prøv igjen." 30 | "Mistet tilkobling til hodetelefonene." 31 | " hjemme" 32 | " på mobilen" 33 | " på arbeid" 34 | " på annen" 35 | "Logging av talestyrt oppringing er slått på." 36 | "Logging av talestyrt oppringing er slått av." 37 | "Snakk nå." 38 | "Ingen resultater, prøv på nytt." 39 | "Ugyldig valg." 40 | "Adjø." 41 | 42 | -------------------------------------------------------------------------------- /res/values-ca/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Marcador de veu" 20 | "Sabíeu que..." 21 | "Si manteniu premut el botó verd de trucada s\'obre el Marcador de veu." 22 | " Exemples: "" \n\"Truca a Jordi Grau\" \n\"Truca a Jordi Grau a casa, …\" \n\"Truca al correu de veu\" \n\"Marca el (866) 555 0123\" \n\"Marca el 911, 811, …\" \n\"Marca el +44 7333 444 555\" \n\"Torna a marcar\" \n\"Obre el calendari\" " 23 | "Marcador de veu" 24 | "Marcador de veu Bluetooth" 25 | "S\'està iniciant..." 26 | "S\'està escoltant..." 27 | "Torna-ho a provar." 28 | "No s\'ha pogut inicialitzar" 29 | "Reinicia el telèfon i torna-ho a provar." 30 | "S\'ha perdut la connexió amb l\'auricular." 31 | " a casa" 32 | " al mòbil" 33 | " a la feina" 34 | " en un altre" 35 | "S\'ha activat el registre de marcatge per veu." 36 | "S\'ha desactivat el registre de marcatge per veu." 37 | "Parleu ara." 38 | "No hi ha cap resultat; torneu-ho a provar." 39 | "Selecció no vàlida." 40 | "Adéu." 41 | 42 | -------------------------------------------------------------------------------- /res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Hlasové vytáčení" 20 | "Víte, že..." 21 | "Stisknutím a přidržením zeleného tlačítka Volat spustíte hlasové vytáčení." 22 | " Příklady: "" \n„Volat Karel Vacek“ \n„Volat Karel Vacek domů, ...“ \n„Volat hlasová schránka“ \n„Vytočit 2 22 33 911 55“ \n„Vytočit 155, 555, ...“ \n„Vytočit +420 2 22 33 44 55“ \n„Znovu vytočit“ \n„Otevřít Kalendář“ " 23 | "Hlasové vytáčení" 24 | "Hlasové vytáčení Bluetooth" 25 | "Spouštění..." 26 | "Poslouchám..." 27 | "Zkusit znovu." 28 | "Inicializace se nezdařila." 29 | "Restartujte telefon a zkuste to znovu." 30 | "Připojení k náhlavní soupravě bylo přerušeno." 31 | " domů" 32 | " mobil" 33 | " práce" 34 | " jiné" 35 | "Protokolování Hlasového vytáčení je zapnuto." 36 | "Protokolování Hlasového vytáčení je vypnuto." 37 | "Mluvte." 38 | "Žádné výsledky, zkuste to znovu." 39 | "Neplatná volba." 40 | "Na shledanou." 41 | 42 | -------------------------------------------------------------------------------- /res/values-da/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Stemmeopkald" 20 | "Vidste du ..." 21 | "Hvis du trykker og holder på den grønne opkaldsknap åbnes Stemmeopkald." 22 | " Eksempler: "" \n\"Ring til Peter Hansen\" \n\"Ring til Peter Hansen hjemme, …\" \n\"Ring til voicemail\" \n\"Ring til 55 12 34 56\" \n\"Ring til 119, 118, …\" \n\"Ring til +45 55 44 33 22\" \n\"Ring igen\" \n\"Åbn kalender\" " 23 | "Stemmeopkald" 24 | "Stemmeopkald via Bluetooth" 25 | "Starter..." 26 | "Lytter ..." 27 | "Prøv igen." 28 | "Der kunne ikke initialiseres" 29 | "Genstart telefonen, og prøv igen." 30 | "Forbindelsen til headsettet blev afbrudt." 31 | " hjemme" 32 | " på mobilen" 33 | " på arbejde" 34 | " på andet" 35 | "Logføring i Stemmeopkald er aktiveret." 36 | "Logføring i Stemmeopkald er deaktiveret." 37 | "Tal nu." 38 | "Ingen resultater. Prøv igen." 39 | "Ugyldigt valg." 40 | "Farvel." 41 | 42 | -------------------------------------------------------------------------------- /res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Sprachwahl" 20 | "Wussten Sie schon..." 21 | "Durch Drücken und Halten der grünen Anruftaste wird die Sprachwahl geöffnet." 22 | " Beispiele: "" \n\"Max Muster anrufen\" \n\"Max Muster zu Hause anrufen\" \n\"Mailbox anrufen\" \n\"(040) 123 4567 wählen\" \n\"110, 112, … wählen\" \n\"+44 7333 444 555 wählen\" \n\"Wahlwiederholung\" \n\"Kalender öffnen\" " 23 | "Sprachwahl" 24 | "Bluetooth-Voice-Dialer" 25 | "Startvorgang..." 26 | "Jetzt sprechen..." 27 | "Bitte versuchen Sie es erneut." 28 | "Initialisierung nicht möglich" 29 | "Starten Sie Ihr Telefon neu und versuchen Sie es dann erneut." 30 | "Keine Headset-Verbindung" 31 | " Privat" 32 | " Mobil" 33 | " Geschäftlich" 34 | " Sonstige" 35 | "Die Sprachwahl-Protokollierung ist aktiviert." 36 | "Die Sprachwahl-Protokollierung ist deaktiviert." 37 | "Jetzt sprechen..." 38 | "Keine Ergebnisse, versuchen Sie es erneut." 39 | "Ungültige Auswahl" 40 | "Bis bald." 41 | 42 | -------------------------------------------------------------------------------- /res/values-el/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Φωνητική κλήση" 20 | "Γνωρίζατε ότι..." 21 | "Πατώντας & κρατώντας πατημένο το πράσινο κουμπί Κλήσης ανοίγει η Φωνητική Κλήση." 22 | " Παραδείγματα: "" \n\"Κάλεσε τον Γιώργο Ιωάννου\" \n\"Κάλεσε τον Γιώργο Ιωάννου στο σπίτι, …\" \n\"Κάλεσε τον αυτόματο τηλεφωνητή\" \n\"Κάλεσε (866) 555 0123\" \n\"Κάλεσε 911, 811, …\" \n\"Κάλεσε +44 7333 444 555\" \n\"Επανάκληση\" \n\"Άνοιξε το Ημερολόγιο\" " 23 | "Φωνητική κλήση" 24 | "Φωνητική κλήση Bluetooth" 25 | "Εκκίνηση..." 26 | "Ακρόαση..." 27 | "Δοκιμάστε ξανά." 28 | "Δεν ήταν δυνατή η προετοιμασία" 29 | "Επανεκκινήστε το τηλέφωνό σας και προσπαθήστε ξανά." 30 | "Η σύνδεση με το ακουστικό διακόπηκε." 31 | " στο σπίτι" 32 | " στο κινητό" 33 | " στη δουλειά" 34 | " σε άλλον" 35 | "Η καταγραφή φωνητικών κλήσεων έχει ενεργοποιηθεί." 36 | "Η καταγραφή φωνητικών κλήσεων έχει απενεργοποιηθεί." 37 | "Μιλήστε τώρα." 38 | "Κανένα αποτέλεσμα, δοκιμάστε ξανά." 39 | "Μη έγκυρη επιλογή." 40 | "Αντίο." 41 | 42 | -------------------------------------------------------------------------------- /res/values-en-rGB/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Voice Dialler" 20 | "Did you know…" 21 | "Pressing & holding the green Call button opens the Voice Dialler." 22 | " Examples: "" \n\"Call John Smith\" \n\"Call John Smith at home, …\" \n\"Call voicemail\" \n\"Dial (866) 555 0123\" \n\"Dial 911, 811, …\" \n\"Dial +44 7333 444 555\" \n\"Redial\" \n\"Open Calendar\" " 23 | "Voice Dialler" 24 | "Bluetooth Voice Dialler" 25 | "Starting up…" 26 | "Listening…" 27 | "Try again." 28 | "Couldn\'t initialise" 29 | "Restart your phone then try again." 30 | "Connection to headset lost." 31 | " at home" 32 | " on mobile" 33 | " at work" 34 | " at other" 35 | "Voice Dialler logging is turned on." 36 | "Voice Dialler logging is turned off." 37 | "Speak now." 38 | "No results, try again." 39 | "Invalid choice." 40 | "Goodbye." 41 | 42 | -------------------------------------------------------------------------------- /res/values-en-rIN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Voice Dialler" 20 | "Did you know…" 21 | "Pressing & holding the green Call button opens the Voice Dialler." 22 | " Examples: "" \n\"Call John Smith\" \n\"Call John Smith at home, …\" \n\"Call voicemail\" \n\"Dial (866) 555 0123\" \n\"Dial 911, 811, …\" \n\"Dial +44 7333 444 555\" \n\"Redial\" \n\"Open Calendar\" " 23 | "Voice Dialler" 24 | "Bluetooth Voice Dialler" 25 | "Starting up…" 26 | "Listening…" 27 | "Try again." 28 | "Couldn\'t initialise" 29 | "Restart your phone then try again." 30 | "Connection to headset lost." 31 | " at home" 32 | " on mobile" 33 | " at work" 34 | " at other" 35 | "Voice Dialler logging is turned on." 36 | "Voice Dialler logging is turned off." 37 | "Speak now." 38 | "No results, try again." 39 | "Invalid choice." 40 | "Goodbye." 41 | 42 | -------------------------------------------------------------------------------- /res/values-es-rUS/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Marcador de voz" 20 | "Sabías que..." 21 | "Si mantienes presionado el botón verde para llamar, se abre Marcador de voz.." 22 | " Ejemplos: "" \n\"Llamar a Juan Pérez\" \n\"Llamar a Juan Pérez a la casa, ...\" \n\"Llamar al correo de voz\"\n\"Marcar (866) 555 0123\" \n\"Marcar 911, 811, …\" \n\"Marcar +44 7333 444 555\" \n\"Volver a marcar\" \n\"Abrir Calendario\"" 23 | "Marcador de voz" 24 | "Voice Dailer de Bluetooth" 25 | "Iniciando..." 26 | "Escuchando..." 27 | "Vuelve a intentarlo." 28 | "No se pudo inicializar" 29 | "Reinicia el teléfono y vuelve a intentarlo." 30 | "Se ha perdido la conexión con los auriculares." 31 | " a la casa" 32 | " al celular" 33 | " al trabajo" 34 | " a otro número" 35 | "El acceso a Marcador de voz está activado." 36 | "El acceso a Marcador de voz está desactivado." 37 | "Habla ahora." 38 | "No se encontraron resultados, vuelve a intentarlo." 39 | "Elección no válida" 40 | "Adiós." 41 | 42 | -------------------------------------------------------------------------------- /res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Marcación por voz" 20 | "¿Sabías que...?" 21 | "Para abrir la ventana de marcación por voz, mantén pulsado el botón verde de llamada." 22 | " Ejemplos: "" \n\"Llamar a Juan Díaz\" \n\"Llamar a Juan Díaz a casa, …\" \n\"Llamar al buzón de voz\" \n\"Marcar (866) 555 0123\" \n\"Marcar 911, 811, …\" \n\"Marcar +44 7333 444 555\" \n\"Volver a marcar\" \n\"Abrir Calendar\" " 23 | "Marcación por voz" 24 | "Marcación por voz a través de Bluetooth" 25 | "Iniciando..." 26 | "Escuchando..." 27 | "Inténtalo de nuevo." 28 | "No se ha podido iniciar." 29 | "Reinicia el teléfono y vuelve a intentarlo." 30 | "Se ha perdido la conexión con los auriculares." 31 | " a casa" 32 | " en móvil" 33 | " al trabajo" 34 | " a otro número" 35 | "Se ha activado el registro de la marcación por voz." 36 | "Se ha desactivado el registro de la marcación por voz." 37 | "Habla ahora" 38 | "No se ha encontrado ningún resultado. Vuelve a intentarlo." 39 | "La selección no es válida." 40 | "Adiós" 41 | 42 | -------------------------------------------------------------------------------- /res/values-et-rEE/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Häälvalimismoodul" 20 | "Kas teadsite ..." 21 | "Häälvalimismooduli avab rohelise nupu Helista vajutamine ja all hoidmine." 22 | " Näited: "\n"„Helista Jaan Tamm” \n„Helista Jaan Tamm kodus”, … \n„Helista kõneposti” \n„Vali (372) 555 0123” \n„Vali 112, 212, …” \n„Vali + 44 7333 444 555” \n„Vali uuesti” \n„Ava kalender” " 23 | "Häälvalimismoodul" 24 | "Bluetoothi häälvalija" 25 | "Käivitamine ..." 26 | "Kuulamine ..." 27 | "Proovige uuesti." 28 | "Ei saanud installida" 29 | "Taaskäivitage telefon ja proovige uuesti." 30 | "Ühendus peakomplektiga katkes." 31 | " kodus" 32 | " mobiilil" 33 | " tööl" 34 | " muudel" 35 | "Häälvalija logimine on sisse lülitatud." 36 | "Häälvalija logimine on välja lülitatud." 37 | "Alustage rääkimist." 38 | "Tulemusi pole, proovige uuesti." 39 | "Kehtetu valik." 40 | "Kohtumiseni." 41 | 42 | -------------------------------------------------------------------------------- /res/values-fa/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "شماره‌گیر صوتی" 20 | "آیا می‌دانستید که..." 21 | "با فشردن و نگهداشتن کلید تماس سبز رنگ، شماره‌گیر صوتی باز می‌شود." 22 | " مثال‌ها: "" \n\"با جان دو تماس بگیر\" \n\"با خانه جان دو تماس بگیر، …\" \n\"با پست صوتی تماس بگیر\" \n\"شماره 0123 555 (866) را بگیر\" \n\"با شماره 911، 811، … تماس بگیر\" \n\"با شماره 555 444 7333 44+ تماس بگیر\" \n\"دوباره شماره بگیر\" \n\"تقویم را باز کن\" " 23 | "شماره‌گیر صوتی" 24 | "شماره‌گیر صوتی بلوتوث" 25 | "در حال راه‌اندازی..." 26 | "در حال گوش کردن..." 27 | "دوباره امتحان کنید." 28 | "مقداردهی اولیه انجام نشد" 29 | "تلفن خود را مجدداً راه‌اندازی کنید و دوباره امتحان کنید." 30 | "اتصال به هدست قطع شد." 31 | " در خانه" 32 | " در تلفن همراه" 33 | " در محل کار" 34 | " در سایر مکان‌ها" 35 | "گزارش‌گیری شماره‌گیر صوتی فعال شده است." 36 | "گزارش‌گیری شماره‌گیر صوتی غیر فعال است." 37 | "اکنون صحبت کنید." 38 | "نتیجه‌ای یافت نشد، دوباره امتحان کنید." 39 | "انتخاب نامعتبر است." 40 | "خداحافظ." 41 | 42 | -------------------------------------------------------------------------------- /res/values-fi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Äänipuhelu" 20 | "Tiesitkö..." 21 | "Voit avata Äänipuhelut pitämällä vihreää puhelupainiketta painettuna." 22 | " Esimerkkejä: "" \n\"Soita kohteelle Matti Meikäläinen\" \n\"Soita kohteelle Matti Meikäläinen kotinumeroon, …\" \n\"Soita kohteelle vastaaja\" \n\"Soita numeroon (866) 555 0123\" \n\"Soita numeroon 911, 811, …\" \n\"Soita numeroon +44 7333 444 555\" \n\"Soita uudelleen\" \n\"Avaa kalenteri\" " 23 | "Äänipuhelu" 24 | "Bluetooth Voice Dialer" 25 | "Käynnistyy..." 26 | "Kuunnellaan..." 27 | "Yritä uudelleen." 28 | "Alustus epäonnistui" 29 | "Käynnistä puhelin uudelleen. Yritä sen jälkeen uudelleen." 30 | "Kuulokemikrofoniyhteys katkesi." 31 | " kotinumeroon" 32 | " kännykkään" 33 | " työnumeroon" 34 | " muussa numerossa" 35 | "Äänipuhelujen lokitallennus on käytössä." 36 | "Äänipuhelujen lokitallennus on pois käytöstä." 37 | "Puhu nyt." 38 | "Ei tuloksia, yritä uudelleen." 39 | "Virheellinen valinta." 40 | "Näkemiin." 41 | 42 | -------------------------------------------------------------------------------- /res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Reconnaissance vocale" 20 | "Saviez-vous que..." 21 | "Appuyez sur le bouton vert Appel et maintenez la touche enfoncée pour ouvrir l\'application Reconnaissance vocale." 22 | " Exemples : "" \n\"Appeler Thomas Durand\" \n\"Appeler Thomas Durand à la maison, …\" \n\"Appeler la messagerie vocale\" \n\"Composer le 01 23 45 67 89\" \n\"Composer le 15, 112, …\" \n\"Composer le +33 6 12 34 56 78\" \n\"Recomposer\" \n\"Ouvrir Google Agenda\" " 23 | "Reconnaissance vocale" 24 | "Appels par reconnaissance vocale via le Bluetooth" 25 | "Démarrage…" 26 | "Écoute en cours…" 27 | "Veuillez réessayer." 28 | "Impossible de procéder à l\'initialisation." 29 | "Rallumez votre téléphone, puis réessayez." 30 | "Connexion au casque perdue" 31 | " à la maison" 32 | " sur le téléphone portable" 33 | " au bureau" 34 | " autre" 35 | "La connexion à l\'application Reconnaissance vocale est activée." 36 | "La connexion à l\'application Reconnaissance vocale est désactivée." 37 | "Parlez maintenant." 38 | "Aucun résultat, réessayez." 39 | "Choix incorrect" 40 | "Au revoir" 41 | 42 | -------------------------------------------------------------------------------- /res/values-hi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "ध्वनि डायलर" 20 | "क्या आप जानते हैं..." 21 | "हरा कॉल बटन दबाने और पकड़कर रखने पर ध्वनि डायलर खुल जाता है." 22 | " उदाहरण: "" \n\"जॉन डो को कॉल करें\" \n\"जॉन डो को घर पर कॉल करें, …\" \n\"ध्वनिमेल को कॉल करें\" \n\"(866) 555 0123 डायल करें\" \n\"911, 811, … डायल करें\" \n\"+44 7333 444 555 डायल करें\" \n\"पुनः डायल करें\" \n\"कैलेंडर खोलें\" " 23 | "ध्वनि डायलर" 24 | "Bluetooth ध्वनि डायलर" 25 | "प्रारंभ हो रहा है..." 26 | "सुन रहा है..." 27 | "पुनः प्रयास करें." 28 | "प्रारंभ नहीं किया जा सका" 29 | "अपना फ़ोन पुन: प्रारंभ करें फिर पुन: प्रयास करें." 30 | "हेडसेट से कनेक्शन टूट गया." 31 | " घर पर" 32 | " मोबाइल पर" 33 | " कार्य पर" 34 | " दूसरे पर" 35 | "Voice Dialer लॉगिंग चालू है." 36 | "Voice Dialer लॉगिंग बंद है." 37 | "अब बोलें." 38 | "कोई परिणाम नहीं, पुनः प्रयास करें." 39 | "अमान्य पसंद." 40 | "अलविदा." 41 | 42 | -------------------------------------------------------------------------------- /res/values-hr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Glasovno biranje" 20 | "Jeste li znali…" 21 | "Ako pritisnete i držite zelenu tipku za pozivanje otvorit ćete Glasovno biranje." 22 | " Primjeri: "" \n\"Nazovi Ivana Ivića\" \n\"Nazovi Ivana Ivića kod kuće, …\" \n\"Nazovi govornu poštu\" \n\"Biraj (866) 555 0123\" \n\"Biraj 911, 811, …\" \n\"Biraj +44 7333 444 555\" \n\"Ponovno biraj\" \n\"Otvori kalendar\" " 23 | "Glasovno biranje" 24 | "Bluetooth Glasovno biranje" 25 | "Pokretanje..." 26 | "Slušanje..." 27 | "Pokušajte ponovo." 28 | "Pokretanje nije moguće" 29 | "Ponovo pokrenite telefon pa pokušajte ponovo." 30 | "Veza sa slušalicama je izgubljena." 31 | " kod kuće" 32 | " na mobitel" 33 | " na posao" 34 | " drugdje" 35 | "Uključena je prijava za Glasovno biranje." 36 | "Isključena je prijava za Glasovno biranje." 37 | "Govorite sad." 38 | "Nema rezultata, pokušajte ponovo." 39 | "Nevažeći izbor." 40 | "Zbogom." 41 | 42 | -------------------------------------------------------------------------------- /res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Hangtárcsázó" 20 | "Tudta..." 21 | "A zöld Hívás gomb lenyomásával és nyomva tartásával a Hangtárcsázót nyitja meg." 22 | " Például: "" \n\"John Doe hívása\" \n\"John Doe hívása otthon, …\" \n\"Hangposta hívása\" \n\"(866) 555 0123 tárcsázása\" \n\"911, 811, … tárcsázása\" \n\"+44 7333 444 555 tárcsázása\" \n\"Újratárcsázás\" \n\"Naptár megnyitása\" " 23 | "Hangtárcsázó" 24 | "Bluetooth hangtárcsázó" 25 | "Indítás..." 26 | "Figyelés..." 27 | "Próbálkozzon újra." 28 | "Az előkészítés sikertelen" 29 | "Indítsa újra a telefont, majd próbálkozzon újra." 30 | "Megszakadt a kapcsolat a headsettel." 31 | " otthon" 32 | " mobilon" 33 | " munkahelyen" 34 | " máshol" 35 | "A hangtárcsázó naplózása bekapcsolva." 36 | "A hangtárcsázó naplózása kikapcsolva." 37 | "Most beszéljen." 38 | "Nincs találat, próbálja újra." 39 | "Érvénytelen választás." 40 | "Viszontlátásra." 41 | 42 | -------------------------------------------------------------------------------- /res/values-in/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Aplikasi Telepon via Suara" 20 | "Mungkin Anda tahu..." 21 | "Menekan & menahan tombol Panggil warna hijau akan membuka Aplikasi Telepon via Suara." 22 | " Contoh: "" \n\"Panggil Budi Setiawan\" \n\"Panggil John Doe di rumah, …\" \n\"Panggil kotak pesan\" \n\"Hubungi (866) 555 0123\" \n\"Hubungi 911, 811, …\" \n\"Hubungi +44 7333 444 555\" \n\"Hubungi Kembali\" \n\"Buka Kalender\" " 23 | "Aplikasi Telepon via Suara" 24 | "Aplikasi Telepon via Suara Bluetooth" 25 | "Memulai..." 26 | "Mendengarkan…" 27 | "Coba lagi." 28 | "Tidak dapat memulai" 29 | "Mulai ulang ponsel Anda lalu coba lagi." 30 | "Sambungan ke headset terputus." 31 | " di rumah" 32 | " pada nomor seluler" 33 | " di kantor" 34 | " di lainnya" 35 | "Penyimpanan log diaktifkan untuk Aplikasi Telepon via Suara." 36 | "Penyimpanan log dinonaktifkan untuk Aplikasi Telepon via Suara." 37 | "Bicara sekarang." 38 | "Tidak ada hasil, coba lagi." 39 | "Pilihan tidak valid." 40 | "Sampai Jumpa." 41 | 42 | -------------------------------------------------------------------------------- /res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Compositore vocale" 20 | "Informazioni utili" 21 | "Premi e tieni premuto il tasto verde Chiama per aprire il compositore vocale." 22 | " Esempi: "" \n\"Chiama Mario Rossi\" \n\"Chiama Mario Rossi a casa, …\" \n\"Messaggio in segreteria\" \n\"Componi (866) 555 0123\" \n\"Componi 911, 811, …\" \n\"Componi +44 7333 444 555\" \n\"Ricomponi\" \n\"Apri Calendario\" " 23 | "Compositore vocale" 24 | "Compositore vocale Bluetooth" 25 | "Avvio..." 26 | "In ascolto..." 27 | "Riprova." 28 | "Inizializzazione non riuscita" 29 | "Riavvia il telefono e riprova." 30 | "Conness. ad auricolare persa." 31 | " a casa" 32 | " al cellulare" 33 | " al lavoro" 34 | " ad altro numero" 35 | "La registrazione con Compositore vocale è attiva." 36 | "La registrazione con Compositore vocale non è attiva." 37 | "Parla ora." 38 | "Nessun risultato, riprova." 39 | "Scelta non valida." 40 | "Arrivederci." 41 | 42 | -------------------------------------------------------------------------------- /res/values-iw/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "חייגן קולי" 20 | "הידעת..." 21 | "לחיצה ממושכת על הלחצן \'שיחה\' הירוק פותחת את החייגן הקולי." 22 | " דוגמאות: "" \n\"התקשר לפלוני אלמוני\" \n\"התקשר לפלוני אלמוני בבית, …\" \n\"התקשר לדואר הקולי\" \n\"חייג ‎(866) 555 0123\" \n\"חייג 911, 811, …\" \n\"חייג ‎+44 7333 444 555\" \n\"בצע חיוג חוזר\" \n\"פתח יומן\" " 23 | "חייגן קולי" 24 | "חייגן קולי של Bluetooth" 25 | "מתחיל..." 26 | "מאזין..." 27 | "נסה שוב." 28 | "לא ניתן לאתחל" 29 | "הפעל מחדש את הטלפון ונסה שוב." 30 | "החיבור לאוזניות אבד." 31 | " בבית" 32 | " בנייד" 33 | " בעבודה" 34 | " במספר אחר" 35 | "ההתחברות באמצעות חייגן קולי מופעלת." 36 | "ההתחברות באמצעות חייגן קולי מושבתת." 37 | "דבר עכשיו." 38 | "אין תוצאות, נסה שוב." 39 | "בחירה לא חוקית." 40 | "להתראות." 41 | 42 | -------------------------------------------------------------------------------- /res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "ボイスダイヤル" 20 | "ヒント:" 21 | "緑色の発信ボタンを押したまま&キーを押すとボイスダイヤルが開きます。" 22 | " 例:"\n"「Call John Doe」\n「Call John Doe at home, …」\n「Call voicemail」\n「Dial (866) 555 0123」\n「Dial 911, 811, …」\n「Dial +44 7333 444 555」\n「Redial」\n「Open Calendar」" 23 | "ボイスダイヤル" 24 | "Bluetoothボイスダイヤル" 25 | "起動しています..." 26 | "聞き取り中..." 27 | "もう一度お試しください。" 28 | "初期化できませんでした" 29 | "端末を再起動して、もう一度お試しください。" 30 | "ヘッドセットとの接続が切断されました。" 31 | " at home" 32 | " on mobile" 33 | " at work" 34 | " at other" 35 | "ボイスダイヤルの記録を有効にしました。" 36 | "ボイスダイヤルの記録を無効にしました。" 37 | "お話しください。" 38 | "結果が見つかりません。もう一度お試しください。" 39 | "選択が無効です。" 40 | "終了しています。" 41 | 42 | -------------------------------------------------------------------------------- /res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "음성 다이얼" 20 | "유용한 정보..." 21 | "녹색 \'통화\' 버튼을 길게 누르면 음성 다이얼이 시작됩니다." 22 | " 예: "" \n\'김구글\' \n\'김구글 집, …\' \n\'음성사서함\' \n\'(866) 555 0123\' \n\'911, 811, …\' \n\'(02) 123 4567\' \n\'재다이얼\' \n\'캘린더 열기\' " 23 | "음성 다이얼" 24 | "블루투스 음성 다이얼" 25 | "시작 중..." 26 | "청취 중..." 27 | "다시 시도해 보세요." 28 | "초기화하지 못했습니다." 29 | "휴대전화를 다시 시작한 다음 다시 시도해 보세요." 30 | "헤드셋 연결이 끊어졌습니다." 31 | " (집)" 32 | " (휴대전화)" 33 | " (직장)" 34 | " (기타)" 35 | "음성 다이얼 로깅을 사용하도록 설정했습니다." 36 | "음성 다이얼 로깅을 사용 중지했습니다." 37 | "지금 말하세요." 38 | "검색결과가 없습니다. 다시 시도해 주세요." 39 | "선택이 잘못되었습니다." 40 | "종료됩니다." 41 | 42 | -------------------------------------------------------------------------------- /res/values-lt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Numerio rinkiklis balsu" 20 | "Ar žinojote..." 21 | "Paspaudus ir palaikius žalią mygtuką „Skambinti“, atsidaro numerio rinkiklis balsu." 22 | " Pavyzdžiai: "" \n„Call John Doe“ \n„Call John Doe at home, …“ \n„Call voicemail“ \n„Dial (866) 555 0123“ \n„Dial 911, 811, …“ \n„Dial +44 7333 444 555“ \n„Redial“ \n„Open Calendar“ " 23 | "Numerio rinkiklis balsu" 24 | "„Bluetooth“ numerio rinkiklis balsu" 25 | "Paleidžiama..." 26 | "Klausoma..." 27 | "Bandykite dar kartą." 28 | "Nepavyko inicijuoti" 29 | "Paleiskite telefoną iš naujo ir bandykite dar kartą." 30 | "Prarastas ryšys su ausinėmis." 31 | " namų numeriu" 32 | " mobiliojo telefono numeriu" 33 | " darbo telefonu" 34 | " kitu numeriu" 35 | "Skambučių balsu registravimas įjungtas." 36 | "Skambučių balsu registravimas išjungtas." 37 | "Kalbėkite dabar." 38 | "Nėra rezultatų, bandykite dar kartą." 39 | "Neteisingas pasirinkimas." 40 | "Viso gero." 41 | 42 | -------------------------------------------------------------------------------- /res/values-lv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Balss numura sastādītājs" 20 | "Vai zinājāt..." 21 | "Nospiežot un turot zaļo zvanīšanas pogu, tiek atvērts Balss numura sastādītājs." 22 | " Piemēri: "" \n“Zvanīt Jānim Bērziņam” \n“Zvanīt Jānim Bērziņam uz mājām, ...” \n“Zvanīt uz balss pastu”·\n“Sastādīt numuru (866) 555 0123” \n“Sastādīt numuru 112, 02, …” \n“Sastādīt numuru +44 7333 444 555” \n“Zvanīt vēlreiz” \n“Atvērt kalendāru” " 23 | "Balss numura sastādītājs" 24 | "Bluetooth balss numuru sastādītājs" 25 | "Notiek palaišana..." 26 | "Notiek klausīšanās..." 27 | "Mēģiniet vēlreiz." 28 | "Nevarēja inicializēt." 29 | "Restartējiet tālruni un pēc tam mēģiniet vēlreiz." 30 | "Savienojums ar austiņām ir zaudēts." 31 | " mājās" 32 | " mobilajā tālrunī" 33 | " darbā" 34 | " citā vietā" 35 | "Balss numura sastādītāja reģistrēšana ir ieslēgta." 36 | "Balss numura sastādītāja reģistrēšana ir izslēgta." 37 | "Runājiet tagad." 38 | "Rezultātu nav, mēģiniet vēlreiz." 39 | "Nederīga izvēle." 40 | "Uz redzēšanos." 41 | 42 | -------------------------------------------------------------------------------- /res/values-ms-rMY/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Pendail Suara" 20 | "Adakah anda tahu..." 21 | "Menekan terus butang Panggil hijau akan membuka Pendail Suara." 22 | " Contoh: "" \n\"Panggil Johan Dolah\" \n\"Panggil Johan Dolah di rumah, ...\" \n\"Panggil mel suara\" \n\"Dail (603) 5555 0123\" \n\"Dail 911, 811, …\" \n\"Dail +44 7333 444 555\" \n\"Dail semula\" \n\"Buka Kalendar\" " 23 | "Pendail Suara" 24 | "Pendail Suara Bluetooth" 25 | "Memulakan…" 26 | "Mendengar..." 27 | "Cuba lagi." 28 | "Tidak dapat memulakan" 29 | "Hidupkan semula telefon anda kemudian cuba lagi." 30 | "Sambungan kepada set kepala terputus." 31 | " di rumah" 32 | " pada telefon mudah alih" 33 | " di tempat kerja" 34 | " di lain-lain" 35 | "Pengelogan Pendail Suara dihidupkan." 36 | "Pengelogan Pendail Suara dimatikan." 37 | "Sebutkan sekarang." 38 | "Tiada hasil, cuba lagi." 39 | "Pilihan tidak sah." 40 | "Selamat tinggal." 41 | 42 | -------------------------------------------------------------------------------- /res/values-nb/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Taleringer" 20 | "Visste du at…" 21 | "Taleringeren aktiveres om du holder nede den grønne ringeknappen." 22 | " Eksempler: "" \n«Call John Doe» \n«Call John Doe at home, …» \n«Call voicemail» \n«Dial (866) 555 0123» \n«Dial 911, 811, …» \n«Dial +44 7333 444 555» \n«Redial» \n«Open Calendar» " 23 | "Taleringer" 24 | "Bluetooth talestyrt oppringing" 25 | "Starter opp …" 26 | "Lytter…" 27 | "Prøv igjen." 28 | "Kunne ikke initialisere" 29 | "Start telefonen på nytt og prøv igjen." 30 | "Mistet tilkobling til hodetelefonene." 31 | " hjemme" 32 | " på mobilen" 33 | " på arbeid" 34 | " på annen" 35 | "Logging av talestyrt oppringing er slått på." 36 | "Logging av talestyrt oppringing er slått av." 37 | "Snakk nå." 38 | "Ingen resultater, prøv på nytt." 39 | "Ugyldig valg." 40 | "Adjø." 41 | 42 | -------------------------------------------------------------------------------- /res/values-nl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Voice Dialer" 20 | "Wist u..." 21 | "Als u de groene belknop ingedrukt houdt, wordt de Voice Dialer geopend." 22 | " Voorbeelden: "" \n\'Bel Jan de Vries\' \n\'Bel Jan de Vries thuis, …\' \n\'Bel voicemail\' \n\'Kies (866) 555 0123\' \n\'Kies 911, 811, …\' \n\'Kies +44 7333 444 555\' \n\'Opnieuw kiezen\' \n\'Agenda openen\' " 23 | "Voice Dialer" 24 | "Bluetooth Voice Dialer" 25 | "Starten…" 26 | "Luisteren..." 27 | "Probeer het opnieuw." 28 | "Kan niet initialiseren" 29 | "Start uw telefoon opnieuw en probeer het nogmaals." 30 | "Verbinding met headset verbroken." 31 | " thuis" 32 | " mobiel" 33 | " werk" 34 | " anders" 35 | "Aanmelden via Voice Dialer is ingeschakeld." 36 | "Aanmelden via Voice Dialer is uitgeschakeld." 37 | "Nu spreken." 38 | "Geen resultaten. Probeer opnieuw." 39 | "Ongeldige keuze." 40 | "Tot ziens." 41 | 42 | -------------------------------------------------------------------------------- /res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Wybieranie głosowe" 20 | "Czy wiesz, że..." 21 | "Naciśnięcie i przytrzymanie zielonego przycisku otwiera aplikację Wybieranie głosowe." 22 | " Przykłady: "" \n„Połącz z Janem Kowalskim” \n„Połącz z Janem Kowalskim w domu, …” \n„Połącz z pocztą głosową” \n„Wybierz (866) 555 0123” \n„Wybierz 911, 811, …” \n„Wybierz +44 7333 444 555” \n„Wybierz ponownie” \n„Otwórz Kalendarz” " 23 | "Wybieranie głosowe" 24 | "Wybieranie głosowe Bluetooth" 25 | "Uruchamianie..." 26 | "Słuchanie..." 27 | "Spróbuj ponownie." 28 | "Nie udało się zainicjować." 29 | "Uruchom ponownie telefon i powtórz próbę." 30 | "Utracono połączenie z zestawem słuchawkowym." 31 | " w domu" 32 | " w telefonie komórkowym" 33 | " w pracy" 34 | " w innym miejscu" 35 | "Rejestrowanie w Wybieraniu głosowym jest włączone." 36 | "Rejestrowanie w Wybieraniu głosowym jest wyłączone." 37 | "Mów teraz." 38 | "Brak wyników. Spróbuj ponownie." 39 | "Nieprawidłowy wybór." 40 | "Do widzenia." 41 | 42 | -------------------------------------------------------------------------------- /res/values-pt-rPT/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Marcador por voz" 20 | "Sabia que…" 21 | "Ao manter premido o botão Ligar verde abrirá o Marcador por voz." 22 | " Exemplos: "" \n\"Ligar para o José Silva\" \n\"Ligar para o número de casa do José Silva, …\" \n\"Ligar para o correio de voz\" \n\"Marcar (866) 555 0123\" \n\"Marcar 911, 811, …\" \n\"Marcar +44 7333 444 555\" \n\"Remarcar\" \n\"Abrir Calendário\" " 23 | "Marcador por voz" 24 | "Marcação por voz através de Bluetooth" 25 | "A iniciar..." 26 | "A ouvir…" 27 | "Tente novamente." 28 | "Não foi possível inicializar" 29 | "Reinicie o telemóvel e tente novamente." 30 | "A ligação ao auricular perdeu-se." 31 | " para o número de casa" 32 | " para o telemóvel" 33 | " para o número do trabalho" 34 | " para outro número" 35 | "O registo de Marcação por Voz está ativado." 36 | "O registo de Marcação por Voz está desativado." 37 | "Falar agora." 38 | "Sem resultados; tente novamente." 39 | "Escolha inválida." 40 | "Adeus." 41 | 42 | -------------------------------------------------------------------------------- /res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Discador por voz" 20 | "Você sabia..." 21 | "Pressionar e manter pressionado o botão verde de chamada abre o Discador por voz." 22 | " Exemplos: "" \n\"Chamar José da Silva\" \n\"Chamar José da Silva em casa, …\" \n\"Chamar correio de voz\" \n\"Discar (866) 555 0123\" \n\"Discar 911, 811, …\" \n\"Discar +44 7333 444 555\" \n\"Rediscar\" \n\"Abrir Agenda\" " 23 | "Discador por voz" 24 | "Discagem por voz Bluetooth" 25 | "Iniciando..." 26 | "Ouvindo..." 27 | "Tentar novamente." 28 | "Não foi possível inicializar" 29 | "Reinicie o telefone e tente novamente." 30 | "Conexão com o fone de ouvido perdida." 31 | " em casa" 32 | " no celular" 33 | " no trabalho" 34 | " em outro número" 35 | "O registro de discagem por voz está ativado." 36 | "O registro de discagem por voz está desligado." 37 | "Fale agora." 38 | "Sem resultados. Tente novamente." 39 | "Opção inválida." 40 | "Adeus." 41 | 42 | -------------------------------------------------------------------------------- /res/values-ro/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Apelare vocală" 20 | "Știaţi că..." 21 | "Prin apăsarea şi menţinerea butonului verde de apelare se deschide Apelarea vocală." 22 | " Exemple: "" \n„Apelaţi-l pe Ion Popescu” \n„Apelaţi-l pe Ion Popescu acasă, …” \n„Apelaţi mesageria vocală” \n„Apelaţi 0722334455” \n„Apelaţi 112, 981, …” \n„Apelaţi +44 7333 444 555” \n„Reapelaţi” \n„Deschideţi calendarul” " 23 | "Apelare vocală" 24 | "Apelare vocală Bluetooth" 25 | "Porneşte..." 26 | "Se ascultă..." 27 | "Încercaţi din nou." 28 | "Nu s-a putut iniţializa" 29 | "Reporniţi telefonul şi încercaţi din nou." 30 | "Conexiunea cu casca s-a întrerupt." 31 | " acasă" 32 | " pe mobil" 33 | " la birou" 34 | " pe un alt număr" 35 | "Înregistrarea în jurnal pentru aplicaţia Apelare vocală este activată." 36 | "Înregistrarea în jurnal pentru aplicaţia Apelare vocală este dezactivată." 37 | "Vorbiţi acum." 38 | "Niciun rezultat, încercaţi din nou." 39 | "Opţiune nevalidă." 40 | "La revedere." 41 | 42 | -------------------------------------------------------------------------------- /res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Голосовой набор" 20 | "Знаете ли вы…" 21 | "Нажмите и удерживайте зеленую кнопку \"Вызов\", чтобы открыть Голосовой набор." 22 | " Примеры: "" \n\"Позвонить Ивану Петрову\" \n\"Позвонить Ивану Петрову домой, …\" \n\"Позвонить в голосовую почту\" \n\"Набрать (866) 555 0123\" \n\"Набрать 911, 811, …\" \n\"Набрать +44 7333 444 555\" \n\"Повторить набор\" \n\"Открыть календарь\" " 23 | "Голосовой набор" 24 | "Голосовой набор Bluetooth" 25 | "Подготовка к работе..." 26 | "Слушаю..." 27 | "Повторите попытку." 28 | "Ошибка инициализации" 29 | "Перезагрузите телефон и повторите попытку." 30 | "Связь с наушниками потеряна." 31 | " , домашний" 32 | " , мобильный" 33 | " , работа" 34 | " , другой номер" 35 | "Журнал Голосового набора включен." 36 | "Журнал Голосового набора выключен." 37 | "Говорите." 38 | "Безрезультатно, повторите попытку." 39 | "Неверный выбор." 40 | "До свидания." 41 | 42 | -------------------------------------------------------------------------------- /res/values-sk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Hlasové vytáčanie" 20 | "Vedeli ste..." 21 | "Stlačením a podržaním zeleného tlačidla Zavolať spustíte Hlasové vytáčanie." 22 | " Príklady: "" \n„Zavolať Peter Kováč“ \n„Zavolať Peter Kováč domov, ...“ \n„Zavolať hlasová schránka“ \n„Vytočiť 2 22 33 911 55“ \n„Vytočiť 155, 555, ...“ \n„Vytočiť +421 2 22 33 44 55“ \n„Znova vytočiť“ \n„Otvoriť Kalendár“ " 23 | "Hlasové vytáčanie" 24 | "Hlasové vytáčanie Bluetooth" 25 | "Prebieha spúšťanie..." 26 | "Počúvam..." 27 | "Skúsiť znova." 28 | "Nepodarilo sa inicializovať" 29 | "Reštartujte telefón a následne to skúste znova." 30 | "Pripojenie k náhlavnej súprave bolo prerušené." 31 | " domov" 32 | " na mobil" 33 | " do práce" 34 | " na iné" 35 | "Protokol hlasového vytáčania je zapnutý." 36 | "Protokol hlasového vytáčania je vypnutý." 37 | "Hovorte." 38 | "Žiadne výsledky, skúste to znova." 39 | "Neplatná voľba." 40 | "Dovidenia." 41 | 42 | -------------------------------------------------------------------------------- /res/values-sl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Glasovni klicalnik" 20 | "Ste vedeli ..." 21 | "Glasovni klicalnik odprete tako, da pritisnete in držite zeleni gumb »Pokliči«." 22 | " Primeri: "" \n»Pokliči Janeza Kovača« \n»Pokliči Janeza Kovača domov …« \n»Pokliči tajnico« \n»Pokliči (866) 555 0123« \n»Pokliči 911, 811 …« \n»Pokliči +44 7333 444 555« \n»Pokliči isto številko« \n»Odpri koledar« " 23 | "Glasovni klicalnik" 24 | "Bluetoothov glasovni klicalnik" 25 | "Zagon ..." 26 | "Poslušanje ..." 27 | "Poskusite znova." 28 | "Ni mogoče začeti" 29 | "Znova zaženite telefon in poskusite znova." 30 | "Povezava s slušalkami z mikrofonom je prekinjena." 31 | " doma" 32 | " na mobilnem telefonu" 33 | " v službi" 34 | " drugje" 35 | "Prijava z glasovnim klicalnikom je vklopljena." 36 | "Prijava z glasovnim klicalnikom je izklopljena." 37 | "Začnite govoriti." 38 | "Ni rezultatov, poskusite znova." 39 | "Neveljavna izbira." 40 | "Nasvidenje." 41 | 42 | -------------------------------------------------------------------------------- /res/values-sr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Бирач гласом" 20 | "Да ли сте знали..." 21 | "Притиском и држањем зеленог дугмета за позив отвара се Бирач гласом." 22 | " Примери: "" \n„Позови Петра Петровића“ \n„Позови Петра Петровића код куће, …“ \n„Позови говорну пошту“ \n„Позови(866) 555 0123“ \n„Позови 911, 811, …“ \n„Позови +44 7333 444 555“ \n„Поново позови“ \n„Oтвори календар“ " 23 | "Бирач гласом" 24 | "Bluetooth бирач гласом" 25 | "Покретање..." 26 | "Слушање..." 27 | "Покушајте поново." 28 | "Покретање није могуће" 29 | "Поново покрените телефон, а затим покушајте опет." 30 | "Прекинута је веза са слушалицама." 31 | " код куће" 32 | " на број мобилног телефона" 33 | " на послу" 34 | " на други" 35 | "Пријављивање Бирача гласом је укључено." 36 | "Пријављивање Бирача гласом је искључено." 37 | "Говорите сада." 38 | "Нема резултата, покушајте поново." 39 | "Неважећи избор." 40 | "Довиђења" 41 | 42 | -------------------------------------------------------------------------------- /res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Röstaktiverad uppringningsfunktion" 20 | "Visste du…" 21 | "Om du trycker och håller ned den gröna samtalsknappen öppnas den röstaktiverade uppringningsfunktionen." 22 | " Till exempel: "" \n\"Ring John Berg\" \n\"Ring John Berg hem, …\" \n\"Ring röstbrevlåda\" \n\"Ring (08) 12 34 56\" \n\"Ring 112 …\" \n\"Ring +44 7333 444 555\" \n\"Ring igen\" \n\"Öppna kalender\" " 23 | "Röstaktiverad uppringningsfunktion" 24 | "Bluetooth - röstaktiverad uppringningsfunktion" 25 | "Startar ..." 26 | "Lyssnar…" 27 | "Försök igen." 28 | "Initieringen misslyckades" 29 | "Starta om mobilen och försök igen." 30 | "Anslutningen till hörlurarna bröts." 31 | " hem" 32 | " på mobilen" 33 | " på jobbet" 34 | " på annat nummer" 35 | "Röstaktiverad uppringningsfunktion aktiverad." 36 | "Röstaktiverad uppringningsfunktion inaktiverad." 37 | "Tala nu." 38 | "Inga resultat. Försök igen." 39 | "Ogiltigt val." 40 | "Adjö." 41 | 42 | -------------------------------------------------------------------------------- /res/values-sw/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Piga kwa Kutamka" 20 | "Ulijua kuwa..." 21 | "Kubonyeza & kushikilia kitufe cha kijani cha Kupiga simu hufungua Kipigaji simu ya Sauti." 22 | " Mifano: "" \n\"Pigia simu John Doe\" \n\"Pigia John Doe simu akiwa nyumbani, …\" \n\"Piga simu ya barua ya sauti\" \n\"Piga (866) 555 0123\" \n\"Piga 911, 811, …\" \n\"Piga +44 7333 444 555\" \n\"Piga tena\" \n\"Fungua Kalenda\" " 23 | "Kipiga simu ya Sauti" 24 | "Kipigaji cha Sauti cha Blurtooth" 25 | "Inaanza..." 26 | "Inasikiliza..." 27 | "Jaribu tena." 28 | "Haikuweza kuanzilisha" 29 | "Washa upya simu yako kisha ujaribu tena." 30 | "Muunganisho wa kipaza sauti cha kichwa umepotea." 31 | " nyumbani" 32 | " kwenye simu ya mkononi" 33 | " kazini" 34 | " kwa nyingine" 35 | "Kuweka kumbukumbu ya Kupiga kwa Kutamka kumewashwa." 36 | "Kuweka kumbukumbu ya Kupiga kwa Kutamka kumezimwa." 37 | "Zungumza sasa." 38 | "Hakuna matokeo, jaribu tena." 39 | "Chaguo batili." 40 | "Kwaheri." 41 | 42 | -------------------------------------------------------------------------------- /res/values-th/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "โทรออกด้วยเสียง" 20 | "คุณรู้ไหมว่า..." 21 | "กดปุ่มโทรออกสีเขียวค้างไว้จะเปิดโปรแกรมโทรออกด้วยเสียง" 22 | " ตัวอย่าง: "" \n\"โทรหานาย ก.\" \n\"โทรหานาย ก.ที่บ้าน …\" \n\"โทรฟังข้อความเสียง\" \n\"โทร (866) 555 0123\" \nโทร 911, 811, …\" \n\"โทร +44 7333 444 555\" \n\"โทรซ้ำ\" \n\"เปิดปฏิทิน\" " 23 | "โทรออกด้วยเสียง" 24 | "โทรออกด้วยเสียงผ่านบลูทูธ" 25 | "กำลังเริ่มต้น..." 26 | "กำลังฟัง..." 27 | "ลองอีกครั้ง" 28 | "ไม่สามารถเริ่มต้น" 29 | "รีสตาร์ทโทรศัพท์ของคุณแล้วลองอีกครั้ง" 30 | "การเชื่อมต่อกับชุดหูฟังขาดหาย" 31 | " ที่บ้าน" 32 | " บนมือถือ" 33 | " ที่ทำงาน" 34 | " ที่อื่น" 35 | "เปิดบันทึกโปรแกรมโทรออกด้วยเสียง" 36 | "ปิดบันทึกโปรแกรมโทรออกด้วยเสียง" 37 | "พูดได้เลย" 38 | "ไม่พบผลลัพธ์ ลองอีกครั้ง" 39 | "ตัวเลือกไม่ถูกต้อง" 40 | "ลาก่อน" 41 | 42 | -------------------------------------------------------------------------------- /res/values-tl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Voice Dialer" 20 | "Alam mo ba…" 21 | "Ang pagpindot & pagpindot nang matagal sa berdeng pindutang Tawag ay nagbubukas sa Voice Dialer." 22 | " Mga halimbawa: "" \n\"Tawagan si John Doe\" \n\"Tawagan si John Doe sa tahanan, …\" \n\"Tumawag sa voicemail\" \n\"I-dial ang (866) 555 0123\" \n\"I-dial ang 911, 811, …\" \n\"I-dial ang +44 7333 444 555\" \n\"Mag-redial\" \n\"Magbukas ng Kalendaryo\" " 23 | "Voice Dialer" 24 | "Bluetooth Voice Dialer" 25 | "Nagsisimula…" 26 | "Nakikinig…" 27 | "Subukang muli." 28 | "Hindi masimulan" 29 | "I-restart ang iyong telepono at subukang muli." 30 | "Nawala ang koneksyon sa headset." 31 | " sa tahanan" 32 | " sa mobile" 33 | " sa trabaho" 34 | " sa iba" 35 | "Naka-on ang pag-log sa Voice Dialer." 36 | "Naka-off ang pag-log sa Voice Dialer." 37 | "Magsalita na ngayon." 38 | "Walang mga resulta, subukang muli." 39 | "Di-wastong pagpipilian." 40 | "Paalam." 41 | 42 | -------------------------------------------------------------------------------- /res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Sesli Çevirici" 20 | "Biliyor muydunuz...?" 21 | "Yeşil renkli Çağrı düğmesini basılı tutmak Sesli Çevirici\'yi açar." 22 | " Örnekler: "" \n\"Can Demir\'i ara\" \n\"Can Demir\'i evden ara, …\" \n\"Sesli mesaj bırak\" \n\"(212) 555 0123 numarasını ara\" \n\"911, 811, … numaralarını ara\" \n\"+90 7333 444 555 numarasını ara\" \n\"Tekrar Ara\" \n\"Takvimi Aç\" " 23 | "Sesli Çevirici" 24 | "Bluetooth Sesli Çevirici" 25 | "Başlatılıyor..." 26 | "Dinleniyor..." 27 | "Tekrar deneyin." 28 | "Başlatılamadı" 29 | "Telefonunuzu yeniden başlatın ve tekrar deneyin." 30 | "Kulaklık bağlantısı kesildi." 31 | " evden" 32 | " cepten" 33 | " işten" 34 | " başka numaradan" 35 | "Sesli Çevirici günlük kaydı açıldı." 36 | "Sesli Çevirici günlük kaydı kapatıldı." 37 | "Şimdi konuşun." 38 | "Sonuç yok, yeniden deneyin." 39 | "Geçersiz seçim." 40 | "Hoşça kalın." 41 | 42 | -------------------------------------------------------------------------------- /res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Голос. набір" 20 | "Чи відомо вам…" 21 | "При натисн. й утрим. зеленої кнопки \"Набрати\" відкрив. голос. набір." 22 | " Прикл.: "" \n\"Дзв. Ів.Кліщу\" \n\"Дзв. Ів.Кліщу на дом., …\" \n\"Дзв. на гол.пошту\" \n\"Наб. (866) 555 0123\" \n\"Наб. 911, 811, …\" \n\"Наб. +44 7333 444 555\" \n\"Наб. ще\" \n\"Відкр. Календ.\" " 23 | "Голос. набір" 24 | "Голос.набір ч-з Bluetooth" 25 | "Запуск..." 26 | "Прослухов…" 27 | "Повторіть спробу." 28 | "Не вдалося ініціалізувати" 29 | "Перезапустіть свій телефон і повторіть спробу." 30 | "Підключ. до гарнітури втрач." 31 | " на домашн." 32 | " на мобільний" 33 | " на робоч." 34 | " на інший" 35 | "Запис голосового набору в журнал увімкнено." 36 | "Запис голосового набору в журнал вимкнено." 37 | "Диктуйте." 38 | "Нема результ., спроб. ще." 39 | "Недійсний вибір." 40 | "До побач." 41 | 42 | -------------------------------------------------------------------------------- /res/values-vi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Khẩu lệnh" 20 | "Bạn có biết…" 21 | "Nhấn & giữ nút Gọi màu xanh để mở Khẩu lệnh." 22 | " Ví dụ: "" \n\"Gọi John Doe\" \n\"Gọi John Doe theo số nhà riêng, …\" \n\"Gọi thư thoại\" \n\"Quay số (866) 555 0123\" \n\"Quay số 911, 811, …\" \n\"Quay số +44 7333 444 555\" \n\"Quay số lại\" \n\"Mở Lịch\" " 23 | "Khẩu lệnh" 24 | "Khẩu lệnh qua Bluetooth" 25 | "Đang khởi động…" 26 | "Đang nghe…" 27 | "Thử lại." 28 | "Không thể khởi chạy" 29 | "Hãy khởi động lại điện thoại của bạn, sau đó thử lại." 30 | "Mất kết nối đến tai nghe." 31 | " theo số nhà riêng" 32 | " theo số điện thoại di động" 33 | " theo số cơ quan" 34 | " theo số khác" 35 | "Đã bật tính năng ghi nhật ký Khẩu lệnh." 36 | "Đã tắt tính năng ghi nhật ký Khẩu lệnh." 37 | "Nói ngay." 38 | "Không có kết quả nào, hãy thử lại." 39 | "Lựa chọn không hợp lệ." 40 | "Tạm biệt." 41 | 42 | -------------------------------------------------------------------------------- /res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "语音拨号器" 20 | "您是否知道..." 21 | "长按绿色的呼叫按钮可打开语音拨号器。" 22 | " 示例:"\n"“打电话给张山”\n“拨打张山的住宅电话”\n“呼叫语音邮件”\n“拨打 (866) 555 0123”\n“拨打 110、120 …”\n“拨打 +44 7333 444 555”\n“重拨”\n“打开日历”" 23 | "语音拨号器" 24 | "蓝牙语音拨号器" 25 | "正在启动..." 26 | "正在接听..." 27 | "请重试。" 28 | "无法初始化" 29 | "请重新启动手机,然后重试。" 30 | "已丢失与耳机的连接。" 31 | " 住宅电话" 32 | " 手机号码" 33 | " 单位电话" 34 | " 其他电话" 35 | "已启用语音拨号器记录。" 36 | "已停用语音拨号器记录。" 37 | "请开始说话。" 38 | "找不到结果,请重试。" 39 | "选择无效。" 40 | "再见。" 41 | 42 | -------------------------------------------------------------------------------- /res/values-zh-rHK/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "語音撥號" 20 | "您知道嗎?" 21 | "按住綠色 [通話] 按鈕即可開啟「語音撥號」。" 22 | " 例子:"\n"「打電話給王小明」\n「打王小明家裡的電話...」\n「聽留言」\n「撥打 (866) 555 0123」\n「撥打 119、110...」\n「撥打 +44 7333 444 555」\n「重新撥號」\n「開啟日曆」" 23 | "語音撥號" 24 | "藍牙語音撥號" 25 | "正在啟動..." 26 | "正在聆聽..." 27 | "請再試一次。" 28 | "無法初始化" 29 | "重新啟動您的手機,然後再試一次。" 30 | "與耳機連線中斷。" 31 | " 住宅電話" 32 | " 流動電話號碼" 33 | " 在工作中" 34 | " 在其他" 35 | "語音撥號記錄已開啟。" 36 | "語音撥號記錄已關閉。" 37 | "請說話。" 38 | "沒有結果,請再試一次。" 39 | "選項無效。" 40 | "再見。" 41 | 42 | -------------------------------------------------------------------------------- /res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "語音撥號" 20 | "您知道…" 21 | "按住綠色撥號鍵,開啟語音撥號。" 22 | " 範例:"\n"「打電話給王小明」\n「打王小明家裡的電話…」\n「聽留言」\n「撥打 (866) 555 0123」\n「撥打 119、110…」\n「撥打 +44 7333 444 555」\n「重新撥號」\n「開啟日曆」" 23 | "語音撥號" 24 | "藍牙語音撥號" 25 | "啟動中…" 26 | "等候語音指令…" 27 | "請再試一次。" 28 | "無法初始化" 29 | "請重新啟動您的手機,然後再試一次。" 30 | "與耳機連線中斷。" 31 | " 住宅電話" 32 | " 行動電話" 33 | " 工作電話" 34 | " 其他電話" 35 | "語音撥號記錄已開啟。" 36 | "語音撥號記錄已關閉。" 37 | "請說話。" 38 | "沒有結果,請再試一次。" 39 | "選項無效。" 40 | "再見。" 41 | 42 | -------------------------------------------------------------------------------- /res/values-zu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | "Ukudayela Ngezwi" 20 | "Kade wazi..." 21 | "Ukucindezela & nokubamba inkinobho Yekholi eluhlaza kuvula Ukudayela Ngezwi." 22 | " Izibonelo: "" \n\"Shayela u-John Doe\" \n\"Shayela u-John Doe ekhaya, …\" \n\"Shayela imeyili yezwi\" \n\"Dayela (866) 555 0123\" \n\"Dayela 911, 811, …\" \n\"Dayela +44 7333 444 555\" \n\"Dayela futhi\" \n\"Vula Ikhalenda\" " 23 | "Ukudayela Ngezwi" 24 | "Isidayeli Sezwi se-Bluetooth" 25 | "Iyaqalisa." 26 | "Iyalalela..." 27 | "Zama futhi." 28 | "Yehlulekile ukuqala" 29 | "Qala phansi ifoni yakho bese uyazama futhi." 30 | "Uxhumano lwe-headset lulahlekile." 31 | " ekhaya" 32 | " kwiselula" 33 | " emsebenzini" 34 | " kokunye" 35 | "Ukushaya Ngephimbo kuvuliwe." 36 | "Ukushaya Ngephimbo kuvaliwe." 37 | "Khuluma manje." 38 | "Ayikho imiphumela, zama futhi." 39 | "Inketho engalungile." 40 | "Usale kahle." 41 | 42 | -------------------------------------------------------------------------------- /res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | Voice Dialer 20 | 21 | 23 | Did you know\u2026 24 | 25 | 27 | 28 | Pressing & holding the green Call button opens the Voice 29 | Dialer. 30 | 31 | 32 | 34 | 35 | Examples: 36 | 37 | \n\"Call John Doe\" 38 | \n\"Call John Doe at home, \u2026\" 39 | \n\"Call voicemail\" 40 | \n\"Dial (866) 555 0123\" 41 | \n\"Dial 911, 811, \u2026\" 42 | \n\"Dial +44 7333 444 555\" 43 | \n\"Redial\" 44 | \n\"Open Calendar\" 45 | 46 | 47 | 48 | 49 | Voice Dialer 50 | 51 | 52 | Bluetooth Voice Dialer 53 | 54 | 55 | Starting up\u2026 56 | 57 | 58 | Listening\u2026 59 | 60 | 61 | Try again. 62 | 63 | 64 | 66 | Couldn\'t initialize 67 | 68 | 70 | 71 | Restart your phone then try again. 72 | 73 | 74 | 75 | 76 | Connection to headset lost. 77 | 78 | 79 | 82 | " at home" 83 | 84 | 87 | " on mobile" 88 | 89 | 92 | " at work" 93 | 94 | 97 | " at other" 98 | 99 | 101 | Voice Dialer logging is turned on. 102 | 103 | 105 | Voice Dialer logging is turned off. 106 | 107 | 109 | Speak now. 110 | 111 | 113 | No results, try again. 114 | 115 | 117 | Invalid choice. 118 | 119 | 121 | Goodbye. 122 | 123 | 124 | -------------------------------------------------------------------------------- /src/com/android/voicedialer/PhoneTypeChoiceRecognizerEngine.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.android.voicedialer; 17 | 18 | import android.util.Log; 19 | import android.content.Intent; 20 | import android.speech.srec.Recognizer; 21 | 22 | import java.io.IOException; 23 | import java.util.ArrayList; 24 | 25 | public class PhoneTypeChoiceRecognizerEngine extends RecognizerEngine { 26 | /** 27 | * Constructor. 28 | */ 29 | public PhoneTypeChoiceRecognizerEngine() { 30 | 31 | } 32 | 33 | protected void setupGrammar() throws IOException, InterruptedException { 34 | if (mSrecGrammar == null) { 35 | if (false) Log.d(TAG, "start new Grammar"); 36 | mSrecGrammar = mSrec.new Grammar(SREC_DIR + "/grammars/phone_type_choice.g2g"); 37 | mSrecGrammar.setupRecognizer(); 38 | } 39 | } 40 | 41 | /** 42 | * Called when recognition succeeds. It receives a list 43 | * of results, builds a corresponding list of Intents, and 44 | * passes them to the {@link RecognizerClient}, which selects and 45 | * performs a corresponding action. 46 | * @param recognizerClient the client that will be sent the results 47 | */ 48 | protected void onRecognitionSuccess(RecognizerClient recognizerClient) throws InterruptedException { 49 | if (false) Log.d(TAG, "onRecognitionSuccess " + mSrec.getResultCount()); 50 | 51 | if (mLogger != null) mLogger.logNbestHeader(); 52 | 53 | ArrayList intents = new ArrayList(); 54 | 55 | for (int result = 0; result < mSrec.getResultCount() && 56 | intents.size() < RESULT_LIMIT; result++) { 57 | 58 | // parse the semanticMeaning string and build an Intent 59 | String conf = mSrec.getResult(result, Recognizer.KEY_CONFIDENCE); 60 | String literal = mSrec.getResult(result, Recognizer.KEY_LITERAL); 61 | String semantic = mSrec.getResult(result, Recognizer.KEY_MEANING); 62 | String msg = "conf=" + conf + " lit=" + literal + " sem=" + semantic; 63 | if (false) Log.d(TAG, msg); 64 | } 65 | 66 | // we only pay attention to the first result. 67 | if (mSrec.getResultCount() > 0) { 68 | // parse the semanticMeaning string and build an Intent 69 | String conf = mSrec.getResult(0, Recognizer.KEY_CONFIDENCE); 70 | String literal = mSrec.getResult(0, Recognizer.KEY_LITERAL); 71 | String semantic = mSrec.getResult(0, Recognizer.KEY_MEANING); 72 | String msg = "conf=" + conf + " lit=" + literal + " sem=" + semantic; 73 | if (false) Log.d(TAG, msg); 74 | if (mLogger != null) mLogger.logLine(msg); 75 | 76 | if (("H".equalsIgnoreCase(semantic)) || 77 | ("M".equalsIgnoreCase(semantic)) || 78 | ("W".equalsIgnoreCase(semantic)) || 79 | ("O".equalsIgnoreCase(semantic)) || 80 | ("R".equalsIgnoreCase(semantic)) || 81 | ("X".equalsIgnoreCase(semantic))) { 82 | if (false) Log.d(TAG, " got valid response"); 83 | Intent intent = new Intent(RecognizerEngine.ACTION_RECOGNIZER_RESULT, null); 84 | intent.putExtra(RecognizerEngine.SENTENCE_EXTRA, literal); 85 | intent.putExtra(RecognizerEngine.SEMANTIC_EXTRA, semantic); 86 | addIntent(intents, intent); 87 | } else { 88 | // Anything besides yes or no is a failure. 89 | } 90 | } 91 | 92 | // log if requested 93 | if (mLogger != null) mLogger.logIntents(intents); 94 | 95 | // bail out if cancelled 96 | if (Thread.interrupted()) throw new InterruptedException(); 97 | 98 | if (intents.size() == 0) { 99 | if (false) Log.d(TAG, " no intents"); 100 | recognizerClient.onRecognitionFailure("No Intents generated"); 101 | } 102 | else { 103 | if (false) Log.d(TAG, " success"); 104 | recognizerClient.onRecognitionSuccess( 105 | intents.toArray(new Intent[intents.size()])); 106 | } 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /src/com/android/voicedialer/RecognizerClient.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.voicedialer; 18 | 19 | import android.content.Intent; 20 | 21 | import java.io.InputStream; 22 | 23 | /** 24 | * This is an interface for clients of the RecognizerEngine. 25 | * A user should implement this interface, and then pass that implementation 26 | * into a RecognizerEngine. The RecognizerEngine will call the 27 | * appropriate function when the recognition completes. 28 | */ 29 | 30 | interface RecognizerClient { 31 | 32 | public void onRecognitionSuccess(final Intent[] intents); 33 | 34 | public void onRecognitionFailure(String msg); 35 | 36 | public void onRecognitionError(String err); 37 | 38 | public void onMicrophoneStart(InputStream mic); 39 | } 40 | -------------------------------------------------------------------------------- /src/com/android/voicedialer/RecognizerEngine.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2007 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.voicedialer; 18 | 19 | import android.app.Activity; 20 | import android.content.Intent; 21 | import android.speech.srec.MicrophoneInputStream; 22 | import android.speech.srec.Recognizer; 23 | import android.speech.srec.WaveHeader; 24 | import android.util.Log; 25 | import java.io.File; 26 | import java.io.FileInputStream; 27 | import java.io.IOException; 28 | import java.io.InputStream; 29 | import java.util.ArrayList; 30 | 31 | /** 32 | * This class is a framework for recognizing speech. It must be extended to use. 33 | * The child class must timplement setupGrammar and onRecognitionSuccess. 34 | * A usage cycle is as follows: 35 | * 48 | * Notes: 49 | * 58 | */ 59 | abstract public class RecognizerEngine { 60 | 61 | protected static final String TAG = "RecognizerEngine"; 62 | 63 | protected static final String ACTION_RECOGNIZER_RESULT = 64 | "com.android.voicedialer.ACTION_RECOGNIZER_RESULT"; 65 | public static final String SENTENCE_EXTRA = "sentence"; 66 | public static final String SEMANTIC_EXTRA = "semantic"; 67 | 68 | protected final String SREC_DIR = Recognizer.getConfigDir(null); 69 | 70 | protected static final String OPEN_ENTRIES = "openentries.txt"; 71 | 72 | protected static final int RESULT_LIMIT = 5; 73 | 74 | protected Activity mActivity; 75 | protected Recognizer mSrec; 76 | protected Recognizer.Grammar mSrecGrammar; 77 | protected RecognizerLogger mLogger; 78 | protected int mSampleRate; 79 | 80 | /** 81 | * Constructor. 82 | */ 83 | public RecognizerEngine() { 84 | mSampleRate = 0; 85 | } 86 | 87 | abstract protected void setupGrammar() throws IOException, InterruptedException; 88 | 89 | abstract protected void onRecognitionSuccess(RecognizerClient recognizerClient) 90 | throws InterruptedException; 91 | 92 | /** 93 | * Start the recognition process. 94 | * 95 | * 106 | * 107 | * @param recognizerClient client to be given the results 108 | * @param activity the Activity this recognition is being run from. 109 | * @param micFile optional audio input from this file, or directory tree. 110 | * @param sampleRate the same rate coming from the mic or micFile 111 | */ 112 | public void recognize(RecognizerClient recognizerClient, Activity activity, 113 | File micFile, int sampleRate) { 114 | InputStream mic = null; 115 | boolean recognizerStarted = false; 116 | try { 117 | mActivity = activity; 118 | // set up logger 119 | mLogger = null; 120 | if (RecognizerLogger.isEnabled(mActivity)) { 121 | mLogger = new RecognizerLogger(mActivity); 122 | } 123 | 124 | if (mSampleRate != sampleRate) { 125 | // sample rate has changed since we last used this recognizerEngine. 126 | // destroy the grammar and regenerate. 127 | if (mSrecGrammar != null) { 128 | mSrecGrammar.destroy(); 129 | } 130 | mSrecGrammar = null; 131 | mSampleRate = sampleRate; 132 | } 133 | 134 | // create a new recognizer 135 | if (false) Log.d(TAG, "start new Recognizer"); 136 | if (mSrec == null) { 137 | String parFilePath = SREC_DIR + "/baseline11k.par"; 138 | if (sampleRate == 8000) { 139 | parFilePath = SREC_DIR + "/baseline8k.par"; 140 | } 141 | mSrec = new Recognizer(parFilePath); 142 | } 143 | 144 | // start audio input 145 | if (micFile != null) { 146 | if (false) Log.d(TAG, "using mic file"); 147 | mic = new FileInputStream(micFile); 148 | WaveHeader hdr = new WaveHeader(); 149 | hdr.read(mic); 150 | } else { 151 | if (false) Log.d(TAG, "start new MicrophoneInputStream"); 152 | mic = new MicrophoneInputStream(sampleRate, sampleRate * 15); 153 | } 154 | 155 | // notify UI 156 | recognizerClient.onMicrophoneStart(mic); 157 | 158 | // log audio if requested 159 | if (mLogger != null) mic = mLogger.logInputStream(mic, sampleRate); 160 | 161 | setupGrammar(); 162 | 163 | // start the recognition process 164 | if (false) Log.d(TAG, "start mSrec.start"); 165 | mSrec.start(); 166 | recognizerStarted = true; 167 | 168 | // recognize 169 | while (true) { 170 | if (Thread.interrupted()) throw new InterruptedException(); 171 | int event = mSrec.advance(); 172 | if (event != Recognizer.EVENT_INCOMPLETE && 173 | event != Recognizer.EVENT_NEED_MORE_AUDIO) { 174 | Log.d(TAG, "start advance()=" + 175 | Recognizer.eventToString(event) + 176 | " avail " + mic.available()); 177 | } 178 | switch (event) { 179 | case Recognizer.EVENT_INCOMPLETE: 180 | case Recognizer.EVENT_STARTED: 181 | case Recognizer.EVENT_START_OF_VOICING: 182 | case Recognizer.EVENT_END_OF_VOICING: 183 | continue; 184 | case Recognizer.EVENT_RECOGNITION_RESULT: 185 | onRecognitionSuccess(recognizerClient); 186 | break; 187 | case Recognizer.EVENT_NEED_MORE_AUDIO: 188 | mSrec.putAudio(mic); 189 | continue; 190 | default: 191 | Log.d(TAG, "unknown event " + event); 192 | recognizerClient.onRecognitionFailure(Recognizer.eventToString(event)); 193 | break; 194 | } 195 | break; 196 | } 197 | 198 | } catch (InterruptedException e) { 199 | if (false) Log.d(TAG, "start interrupted " + e); 200 | recognizerClient.onRecognitionError(e.toString()); 201 | } catch (IOException e) { 202 | if (false) Log.d(TAG, "start new Srec failed " + e); 203 | recognizerClient.onRecognitionError(e.toString()); 204 | } catch (Exception e) { 205 | if (false) Log.d(TAG, "exception " + e); 206 | recognizerClient.onRecognitionError(e.toString()); 207 | } finally { 208 | if (false) Log.d(TAG, "start mSrec.stop"); 209 | if (mSrec != null && recognizerStarted) mSrec.stop(); 210 | 211 | // stop microphone 212 | try { 213 | if (mic != null) mic.close(); 214 | } 215 | catch (IOException ex) { 216 | if (false) Log.d(TAG, "start - mic.close failed - " + ex); 217 | } 218 | mic = null; 219 | 220 | // close logger 221 | try { 222 | if (mLogger != null) mLogger.close(); 223 | } 224 | catch (IOException ex) { 225 | if (false) Log.d(TAG, "start - mLoggger.close failed - " + ex); 226 | } 227 | mLogger = null; 228 | } 229 | if (false) Log.d(TAG, "start bye"); 230 | } 231 | 232 | protected static void addIntent(ArrayList intents, Intent intent) { 233 | for (Intent in : intents) { 234 | if (in.getAction() != null && 235 | in.getAction().equals(intent.getAction()) && 236 | in.getData() != null && 237 | in.getData().equals(intent.getData())) { 238 | return; 239 | } 240 | } 241 | intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK); 242 | intents.add(intent); 243 | } 244 | } 245 | -------------------------------------------------------------------------------- /src/com/android/voicedialer/RecognizerLogger.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2009 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.voicedialer; 18 | 19 | import android.content.Context; 20 | import android.content.Intent; 21 | import android.os.Build; 22 | import android.speech.srec.WaveHeader; 23 | import android.text.format.DateFormat; 24 | import android.util.Log; 25 | 26 | import java.io.BufferedWriter; 27 | import java.io.ByteArrayOutputStream; 28 | import java.io.File; 29 | import java.io.FileFilter; 30 | import java.io.FileOutputStream; 31 | import java.io.FileWriter; 32 | import java.io.IOException; 33 | import java.io.InputStream; 34 | import java.io.OutputStream; 35 | import java.util.ArrayList; 36 | import java.util.Arrays; 37 | import java.util.List; 38 | 39 | /** 40 | * This class logs the inputs and results of a recognition session to 41 | * the files listed below, which reside in 42 | * /data/data/com.android.voicedialer/app_logdir. 43 | * The files have the date encoded in the name so that they will sort in 44 | * time order. The newest RecognizerLogger.MAX_FILES are kept, 45 | * and the rest deleted to limit space used in the file system. 46 | *
    47 | *
  • datename.wav - what the microphone heard. 48 | *
  • datename.log - contact list, results, errors, etc. 49 | *
50 | */ 51 | public class RecognizerLogger { 52 | 53 | private static final String TAG = "RecognizerLogger"; 54 | 55 | private static final String LOGDIR = "logdir"; 56 | private static final String ENABLED = "enabled"; 57 | 58 | private static final int MAX_FILES = 20; 59 | 60 | private final String mDatedPath; 61 | private final BufferedWriter mWriter; 62 | 63 | /** 64 | * Determine if logging is enabled. If the 65 | * @param context needed to reference the logging directory. 66 | * @return true if logging is enabled, determined by the 'enabled' file. 67 | */ 68 | public static boolean isEnabled(Context context) { 69 | File dir = context.getDir(LOGDIR, 0); 70 | File enabled = new File(dir, ENABLED); 71 | return enabled.exists(); 72 | } 73 | 74 | /** 75 | * Enable logging. 76 | * @param context needed to reference the logging directory. 77 | */ 78 | public static void enable(Context context) { 79 | try { 80 | File dir = context.getDir(LOGDIR, 0); 81 | File enabled = new File(dir, ENABLED); 82 | enabled.createNewFile(); 83 | } 84 | catch (IOException e) { 85 | Log.e(TAG, "enableLogging " + e); 86 | } 87 | } 88 | 89 | /** 90 | * Disable logging. 91 | * @param context needed to reference the logging directory. 92 | */ 93 | public static void disable(Context context) { 94 | try { 95 | File dir = context.getDir(LOGDIR, 0); 96 | File enabled = new File(dir, ENABLED); 97 | enabled.delete(); 98 | } 99 | catch (SecurityException e) { 100 | Log.e(TAG, "disableLogging " + e); 101 | } 102 | } 103 | 104 | /** 105 | * Constructor 106 | * @param dataDir directory to contain the log files. 107 | */ 108 | public RecognizerLogger(Context context) throws IOException { 109 | if (false) Log.d(TAG, "RecognizerLogger"); 110 | 111 | // generate new root filename 112 | File dir = context.getDir(LOGDIR, 0); 113 | mDatedPath = dir.toString() + File.separator + "log_" + 114 | DateFormat.format("yyyy_MM_dd_kk_mm_ss", 115 | System.currentTimeMillis()); 116 | 117 | // delete oldest files 118 | deleteOldest(".wav"); 119 | deleteOldest(".log"); 120 | 121 | // generate new text output log file 122 | mWriter = new BufferedWriter(new FileWriter(mDatedPath + ".log"), 8192); 123 | mWriter.write(Build.FINGERPRINT); 124 | mWriter.newLine(); 125 | } 126 | 127 | /** 128 | * Write a line into the text log file. 129 | */ 130 | public void logLine(String msg) { 131 | try { 132 | mWriter.write(msg); 133 | mWriter.newLine(); 134 | } 135 | catch (IOException e) { 136 | Log.e(TAG, "logLine exception: " + e); 137 | } 138 | } 139 | 140 | /** 141 | * Write a header for the NBest lines into the text log file. 142 | */ 143 | public void logNbestHeader() { 144 | logLine("Nbest *****************"); 145 | } 146 | 147 | /** 148 | * Write the list of contacts into the text log file. 149 | * @param contacts 150 | */ 151 | public void logContacts(List contacts) { 152 | logLine("Contacts *****************"); 153 | for (VoiceContact vc : contacts) logLine(vc.toString()); 154 | try { 155 | mWriter.flush(); 156 | } 157 | catch (IOException e) { 158 | Log.e(TAG, "logContacts exception: " + e); 159 | } 160 | } 161 | 162 | /** 163 | * Write a list of Intents into the text log file. 164 | * @param intents 165 | */ 166 | public void logIntents(ArrayList intents) { 167 | logLine("Intents *********************"); 168 | StringBuffer sb = new StringBuffer(); 169 | for (Intent intent : intents) { 170 | logLine(intent.toString() + " " + RecognizerEngine.SENTENCE_EXTRA + "=" + 171 | intent.getStringExtra(RecognizerEngine.SENTENCE_EXTRA)); 172 | } 173 | try { 174 | mWriter.flush(); 175 | } 176 | catch (IOException e) { 177 | Log.e(TAG, "logIntents exception: " + e); 178 | } 179 | } 180 | 181 | /** 182 | * Close the text log file. 183 | * @throws IOException 184 | */ 185 | public void close() throws IOException { 186 | mWriter.close(); 187 | } 188 | 189 | /** 190 | * Delete oldest files with a given suffix, if more than MAX_FILES. 191 | * @param suffix delete oldest files with this suffix. 192 | */ 193 | private void deleteOldest(final String suffix) { 194 | FileFilter ff = new FileFilter() { 195 | public boolean accept(File f) { 196 | String name = f.getName(); 197 | return name.startsWith("log_") && name.endsWith(suffix); 198 | } 199 | }; 200 | File[] files = (new File(mDatedPath)).getParentFile().listFiles(ff); 201 | Arrays.sort(files); 202 | 203 | for (int i = 0; i < files.length - MAX_FILES; i++) { 204 | files[i].delete(); 205 | } 206 | } 207 | 208 | /** 209 | * InputStream wrapper which will log the contents to a WAV file. 210 | * @param inputStream 211 | * @param sampleRate 212 | * @return 213 | */ 214 | public InputStream logInputStream(final InputStream inputStream, final int sampleRate) { 215 | final ByteArrayOutputStream baos = new ByteArrayOutputStream(sampleRate * 2 * 20); 216 | 217 | return new InputStream() { 218 | 219 | public int available() throws IOException { 220 | return inputStream.available(); 221 | } 222 | 223 | public int read(byte[] b, int offset, int length) throws IOException { 224 | int rtn = inputStream.read(b, offset, length); 225 | if (rtn > 0) baos.write(b, offset, rtn); 226 | return rtn; 227 | } 228 | 229 | public int read(byte[] b) throws IOException { 230 | int rtn = inputStream.read(b); 231 | if (rtn > 0) baos.write(b, 0, rtn); 232 | return rtn; 233 | } 234 | 235 | public int read() throws IOException { 236 | int rtn = inputStream.read(); 237 | if (rtn > 0) baos.write(rtn); 238 | return rtn; 239 | } 240 | 241 | public long skip(long n) throws IOException { 242 | throw new UnsupportedOperationException(); 243 | } 244 | 245 | public void close() throws IOException { 246 | try { 247 | OutputStream out = new FileOutputStream(mDatedPath + ".wav"); 248 | try { 249 | byte[] pcm = baos.toByteArray(); 250 | WaveHeader hdr = new WaveHeader(WaveHeader.FORMAT_PCM, 251 | (short)1, sampleRate, (short)16, pcm.length); 252 | hdr.write(out); 253 | out.write(pcm); 254 | } 255 | finally { 256 | out.close(); 257 | } 258 | } 259 | finally { 260 | inputStream.close(); 261 | baos.close(); 262 | } 263 | } 264 | }; 265 | } 266 | 267 | } 268 | -------------------------------------------------------------------------------- /src/com/android/voicedialer/VoiceDialerReceiver.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2008 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.voicedialer; 18 | 19 | 20 | import android.content.Context; 21 | import android.content.Intent; 22 | import android.content.BroadcastReceiver; 23 | import com.android.internal.telephony.TelephonyIntents; 24 | import android.util.Log; 25 | import android.widget.Toast; 26 | 27 | public class VoiceDialerReceiver extends BroadcastReceiver { 28 | private static final String TAG = "VoiceDialerReceiver"; 29 | 30 | @Override 31 | public void onReceive(Context context, Intent intent) { 32 | if (false) Log.d(TAG, "onReceive " + intent); 33 | 34 | // fetch up useful stuff 35 | String action = intent.getAction(); 36 | String host = intent.getData() != null ? intent.getData().getHost() : null; 37 | 38 | // force recompilation of g2g on boot 39 | if (Intent.ACTION_BOOT_COMPLETED.equals(action)) { 40 | CommandRecognizerEngine.deleteCachedGrammarFiles(context); 41 | } 42 | 43 | // force recompilation if apps change, for 'OPEN' command 44 | else if (Intent.ACTION_PACKAGE_ADDED.equals(action) || 45 | Intent.ACTION_PACKAGE_CHANGED.equals(action) || 46 | Intent.ACTION_PACKAGE_REMOVED.equals(action) || 47 | Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE.equals(action) || 48 | Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE.equals(action)) { 49 | CommandRecognizerEngine.deleteCachedGrammarFiles(context); 50 | } 51 | 52 | // Voice Dialer Logging Enabled, *#*#8351#*#* 53 | else if (TelephonyIntents.SECRET_CODE_ACTION.equals(action) && "8351".equals(host)) { 54 | RecognizerLogger.enable(context); 55 | Toast.makeText(context, R.string.logging_enabled, Toast.LENGTH_LONG).show(); 56 | } 57 | 58 | // Voice Dialer Logging Disabled, *#*#8350#*#* 59 | else if (TelephonyIntents.SECRET_CODE_ACTION.equals(action) && "8350".equals(host)) { 60 | RecognizerLogger.disable(context); 61 | Toast.makeText(context, R.string.logging_disabled, Toast.LENGTH_LONG).show(); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/com/android/voicedialer/VoiceDialerTester.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2007 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.voicedialer; 18 | 19 | import android.content.Intent; 20 | import android.util.Log; 21 | import java.io.File; 22 | import java.io.FileFilter; 23 | import java.util.Arrays; 24 | import java.util.HashSet; 25 | import java.util.Set; 26 | import java.util.Vector; 27 | 28 | /** 29 | * This class represents a person who may be called via the VoiceDialer app. 30 | * The person has a name and a list of phones (home, mobile, work). 31 | */ 32 | public class VoiceDialerTester { 33 | private static final String TAG = "VoiceDialerTester"; 34 | 35 | private final WavFile[] mWavFiles; 36 | private final File[] mWavDirs; 37 | 38 | // these indicate the current test 39 | private int mWavFile = -1; // -1 so it will step to 0 on first iteration 40 | 41 | private static class WavFile { 42 | final public File mFile; 43 | public int mRank; 44 | public int mTotal; 45 | public String mMessage; 46 | 47 | public WavFile(File file) { 48 | mFile = file; 49 | } 50 | } 51 | 52 | /** 53 | * Sweep directory of directories, listing all WAV files. 54 | */ 55 | public VoiceDialerTester(File dir) { 56 | if (false) { 57 | Log.d(TAG, "VoiceDialerTester " + dir); 58 | } 59 | 60 | // keep a list of directories visited 61 | Vector wavDirs = new Vector(); 62 | wavDirs.add(dir); 63 | 64 | // scan the directory tree 65 | Vector wavFiles = new Vector(); 66 | for (int i = 0; i < wavDirs.size(); i++) { 67 | File d = wavDirs.get(i); 68 | for (File f : d.listFiles()) { 69 | if (f.isFile() && f.getName().endsWith(".wav")) { 70 | wavFiles.add(f); 71 | } 72 | else if (f.isDirectory()) { 73 | wavDirs.add(f); 74 | } 75 | } 76 | } 77 | 78 | // produce a sorted list of WavFiles 79 | File[] fa = wavFiles.toArray(new File[wavFiles.size()]); 80 | Arrays.sort(fa); 81 | mWavFiles = new WavFile[fa.length]; 82 | for (int i = 0; i < mWavFiles.length; i++) { 83 | mWavFiles[i] = new WavFile(fa[i]); 84 | } 85 | 86 | // produce a sorted list of directories 87 | mWavDirs = wavDirs.toArray(new File[wavDirs.size()]); 88 | Arrays.sort(mWavDirs); 89 | } 90 | 91 | public File getWavFile() { 92 | return mWavFiles[mWavFile].mFile; 93 | } 94 | 95 | /** 96 | * Called by VoiceDialerActivity when a recognizer error occurs. 97 | */ 98 | public void onRecognitionError(String msg) { 99 | WavFile wf = mWavFiles[mWavFile]; 100 | wf.mRank = -1; 101 | wf.mTotal = -1; 102 | wf.mMessage = msg; 103 | } 104 | 105 | /** 106 | * Called by VoiceDialerActivity when a recognizer failure occurs. 107 | * @param msg Message to display. 108 | */ 109 | public void onRecognitionFailure(String msg) { 110 | WavFile wf = mWavFiles[mWavFile]; 111 | wf.mRank = 0; 112 | wf.mTotal = 0; 113 | wf.mMessage = msg; 114 | } 115 | 116 | /** 117 | * Called by VoiceDialerActivity when the recognizer succeeds. 118 | * @param intents Array of Intents corresponding to recognized sentences. 119 | */ 120 | public void onRecognitionSuccess(Intent[] intents) { 121 | WavFile wf = mWavFiles[mWavFile]; 122 | wf.mTotal = intents.length; 123 | String utter = wf.mFile.getName().toLowerCase().replace('_', ' '); 124 | utter = utter.substring(0, utter.indexOf('.')).trim(); 125 | for (int i = 0; i < intents.length; i++) { 126 | String sentence = 127 | intents[i].getStringExtra(RecognizerEngine.SENTENCE_EXTRA). 128 | toLowerCase().trim(); 129 | // note the first in case there are no matches 130 | if (i == 0) { 131 | wf.mMessage = sentence; 132 | if (intents.length > 1) wf.mMessage += ", etc"; 133 | } 134 | // is this a match 135 | if (utter.equals(sentence)) { 136 | wf.mRank = i + 1; 137 | wf.mMessage = null; 138 | break; 139 | } 140 | } 141 | } 142 | 143 | /** 144 | * Called to step to the next WAV file in the test set. 145 | * @return true if successful, false if no more test files. 146 | */ 147 | public boolean stepToNextTest() { 148 | mWavFile++; 149 | return mWavFile < mWavFiles.length; 150 | } 151 | 152 | private static final String REPORT_FMT = "%6s %6s %6s %6s %6s %6s %6s %s"; 153 | private static final String REPORT_HDR = String.format(REPORT_FMT, 154 | "1/1", "1/N", "M/N", "0/N", "Fail", "Error", "Total", ""); 155 | 156 | /** 157 | * Called when the test is complete to dump a summary. 158 | */ 159 | public void report() { 160 | // report for each file 161 | Log.d(TAG, "List of all utterances tested"); 162 | for (WavFile wf : mWavFiles) { 163 | Log.d(TAG, wf.mRank + "/" + wf.mTotal + " " + wf.mFile + 164 | (wf.mMessage != null ? " " + wf.mMessage : "")); 165 | } 166 | 167 | // summary reports by file name 168 | reportSummaryForEachFileName(); 169 | 170 | // summary reports by directory name 171 | reportSummaryForEachDir(); 172 | 173 | // summary report for all files 174 | Log.d(TAG, "Summary of all utterances"); 175 | Log.d(TAG, REPORT_HDR); 176 | reportSummary("Total", null); 177 | } 178 | 179 | private void reportSummaryForEachFileName() { 180 | Set set = new HashSet(); 181 | for (WavFile wf : mWavFiles) { 182 | set.add(wf.mFile.getName()); 183 | } 184 | String[] names = set.toArray(new String[set.size()]); 185 | Arrays.sort(names); 186 | 187 | Log.d(TAG, "Summary of utternaces by filename"); 188 | Log.d(TAG, REPORT_HDR); 189 | for (final String fn : names) { 190 | reportSummary(fn, 191 | new FileFilter() { 192 | public boolean accept(File file) { 193 | return fn.equals(file.getName()); 194 | } 195 | }); 196 | } 197 | } 198 | 199 | private void reportSummaryForEachDir() { 200 | Set set = new HashSet(); 201 | for (WavFile wf : mWavFiles) { 202 | set.add(wf.mFile.getParent()); 203 | } 204 | String[] names = set.toArray(new String[set.size()]); 205 | Arrays.sort(names); 206 | 207 | Log.d(TAG, "Summary of utterances by directory"); 208 | Log.d(TAG, REPORT_HDR); 209 | for (File dir : mWavDirs) { 210 | final String dn = dir.getPath(); 211 | final String dn2 = dn + "/"; 212 | reportSummary(dn, 213 | new FileFilter() { 214 | public boolean accept(File file) { 215 | return file.getPath().startsWith(dn2); 216 | } 217 | }); 218 | } 219 | } 220 | 221 | private void reportSummary(String label, FileFilter filter) { 222 | if (!false) return; 223 | 224 | // log cumulative stats 225 | int total = 0; 226 | int count11 = 0; 227 | int count1N = 0; 228 | int countMN = 0; 229 | int count0N = 0; 230 | int countFail = 0; 231 | int countErrors = 0; 232 | 233 | for (WavFile wf : mWavFiles) { 234 | if (filter == null || filter.accept(wf.mFile)) { 235 | total++; 236 | if (wf.mRank == 1 && wf.mTotal == 1) count11++; 237 | if (wf.mRank == 1 && wf.mTotal >= 1) count1N++; 238 | if (wf.mRank >= 1 && wf.mTotal >= 1) countMN++; 239 | if (wf.mRank == 0 && wf.mTotal >= 1) count0N++; 240 | if (wf.mRank == 0 && wf.mTotal == 0) countFail++; 241 | if (wf.mRank == -1 && wf.mTotal == -1) countErrors++; 242 | } 243 | } 244 | 245 | String line = String.format(REPORT_FMT, 246 | countString(count11, total), 247 | countString(count1N, total), 248 | countString(countMN, total), 249 | countString(count0N, total), 250 | countString(countFail, total), 251 | countString(countErrors, total), 252 | "" + total, 253 | label); 254 | Log.d(TAG, line); 255 | } 256 | 257 | private static String countString(int count, int total) { 258 | return total > 0 ? "" + (100 * count / total) + "%" : ""; 259 | } 260 | 261 | } 262 | -------------------------------------------------------------------------------- /tests/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH:= $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | # We only want this apk build for tests. 5 | LOCAL_MODULE_TAGS := tests 6 | 7 | LOCAL_JAVA_LIBRARIES := android.test.runner 8 | 9 | # Include all test java files. 10 | LOCAL_SRC_FILES := $(call all-java-files-under, src) 11 | 12 | LOCAL_PACKAGE_NAME := VoiceDialerTests 13 | 14 | LOCAL_INSTRUMENTATION_FOR := VoiceDialer 15 | 16 | include $(BUILD_PACKAGE) 17 | -------------------------------------------------------------------------------- /tests/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /tests/src/com/android/voicedialer/VoiceDialerLaunchPerformance.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.android.voicedialer; 18 | 19 | import android.app.Activity; 20 | import android.os.Bundle; 21 | import android.test.LaunchPerformanceBase; 22 | 23 | /** 24 | * Instrumentation class for DeskClock launch performance testing. 25 | */ 26 | public class VoiceDialerLaunchPerformance extends LaunchPerformanceBase { 27 | 28 | @Override 29 | public void onCreate(Bundle arguments) { 30 | super.onCreate(arguments); 31 | 32 | mIntent.setClass(getTargetContext(), VoiceDialerActivity.class); 33 | start(); 34 | } 35 | 36 | /** 37 | * Calls LaunchApp and finish. 38 | */ 39 | @Override 40 | public void onStart() { 41 | super.onStart(); 42 | LaunchApp(); 43 | finish(Activity.RESULT_OK, mResults); 44 | } 45 | } 46 | --------------------------------------------------------------------------------