From 466741d8a78965b8509bf527344f289e50873092 Mon Sep 17 00:00:00 2001
From: Mike LeBeau <mlebeau@android.com>
Date: Sat, 16 Jan 2010 12:21:23 -0800
Subject: [PATCH] Migrate voice features into the open-source LatinIME. This
 includes the change to logging to remove any private dependencies and use
 broadcast intents to VoiceSearch instead.

I have audited this code and it appears good to go for open-source,
but would appreciate a second pair of eyes.

Still to do after submitting this CL:

* Reintroduce Amith's memory leak fix (37557) which was the only CL
  added to LatinIME since the last merge over to the private copy.
* Make some changes to allow LatinIME to work without voice search
  installed. Currently I believe it will show the mic but fail if
  you press it. We need to base the visibility on the mic on the
  availability of the service.
* Fix this code to use the new Gservices framework, it's still trying
  to use the old one.
---
 res/drawable-hdpi/ic_mic_dialog.png           | Bin 0 -> 3634 bytes
 .../ic_suggest_strip_microphone.png           | Bin 0 -> 548 bytes
 .../ic_suggest_strip_microphone_swipe.png     | Bin 0 -> 438 bytes
 .../list_selector_background_pressed.9.png    | Bin 0 -> 4203 bytes
 res/drawable-hdpi/mic_slash.png               | Bin 3095 -> 5615 bytes
 res/drawable-hdpi/speak_now_level0.png        | Bin 1508 -> 1512 bytes
 res/drawable-hdpi/speak_now_level1.png        | Bin 1587 -> 2215 bytes
 res/drawable-hdpi/speak_now_level2.png        | Bin 1687 -> 3130 bytes
 res/drawable-hdpi/speak_now_level3.png        | Bin 1636 -> 3647 bytes
 res/drawable-hdpi/speak_now_level4.png        | Bin 1635 -> 3626 bytes
 res/drawable-hdpi/speak_now_level5.png        | Bin 1706 -> 3670 bytes
 res/drawable-hdpi/speak_now_level6.png        | Bin 0 -> 4006 bytes
 .../sym_keyboard_feedback_mic.png             | Bin 0 -> 681 bytes
 res/drawable-hdpi/sym_keyboard_mic.png        | Bin 0 -> 1440 bytes
 ...round.9.png => voice_ime_background.9.png} | Bin
 res/drawable-mdpi/ic_mic_dialog.png           | Bin 0 -> 3312 bytes
 .../ic_suggest_strip_microphone.png           | Bin 0 -> 398 bytes
 .../ic_suggest_strip_microphone_swipe.png     | Bin 0 -> 309 bytes
 .../list_selector_background_pressed.9.png    | Bin 0 -> 11006 bytes
 .../sym_keyboard_feedback_mic.png             | Bin 0 -> 483 bytes
 res/drawable-mdpi/sym_keyboard_mic.png        | Bin 0 -> 859 bytes
 res/drawable/cancel.png                       | Bin 0 -> 1259 bytes
 res/drawable/caution.png                      | Bin 0 -> 1100 bytes
 .../dialog_top_dark_bottom_medium.9.png       | Bin 0 -> 1574 bytes
 res/drawable/ic_dialog_alert_large.png        | Bin 0 -> 4089 bytes
 res/drawable/ic_dialog_voice_input.png        | Bin 0 -> 1040 bytes
 res/drawable/ic_dialog_wave_0_0.png           | Bin 0 -> 8471 bytes
 res/drawable/ic_dialog_wave_1_3.png           | Bin 0 -> 9017 bytes
 res/drawable/ic_dialog_wave_2_3.png           | Bin 0 -> 9614 bytes
 res/drawable/ic_dialog_wave_3_3.png           | Bin 0 -> 10089 bytes
 res/drawable/ic_dialog_wave_4_3.png           | Bin 0 -> 10514 bytes
 res/drawable/mic_slash.png                    | Bin 0 -> 3098 bytes
 res/drawable/ok_cancel.png                    | Bin 0 -> 8453 bytes
 res/drawable/speak_now_level0.png             | Bin 0 -> 3263 bytes
 res/drawable/speak_now_level1.png             | Bin 0 -> 3572 bytes
 res/drawable/speak_now_level2.png             | Bin 0 -> 3974 bytes
 res/drawable/speak_now_level3.png             | Bin 0 -> 4270 bytes
 res/drawable/speak_now_level4.png             | Bin 0 -> 4241 bytes
 res/drawable/speak_now_level5.png             | Bin 0 -> 4252 bytes
 res/drawable/speak_now_level6.png             | Bin 0 -> 2201 bytes
 res/drawable/voice_ime_background.9.png       | Bin 0 -> 20661 bytes
 res/drawable/voice_swipe_hint.png             | Bin 0 -> 3111 bytes
 res/drawable/working.png                      | Bin 0 -> 33111 bytes
 res/layout/recognition_status.xml             |  98 +++
 res/layout/voice_punctuation_hint.xml         |  49 ++
 res/layout/voice_swipe_hint.xml               |  56 ++
 res/values-cs/strings.xml                     |  32 +-
 res/values-da/strings.xml                     |  32 +-
 res/values-de/strings.xml                     |  32 +-
 res/values-el/strings.xml                     |  32 +-
 res/values-es-rUS/strings.xml                 |  32 +-
 res/values-es/strings.xml                     |  32 +-
 res/values-fr/strings.xml                     |  32 +-
 res/values-it/strings.xml                     |  32 +-
 res/values-ja/strings.xml                     |  32 +-
 res/values-ko/strings.xml                     |  32 +-
 res/values-nb/strings.xml                     |  32 +-
 res/values-nl/strings.xml                     |  32 +-
 res/values-pl/strings.xml                     |  32 +-
 res/values-pt-rPT/strings.xml                 |  32 +-
 res/values-pt/strings.xml                     |  32 +-
 res/values-ru/strings.xml                     |  32 +-
 res/values-sv/strings.xml                     |  32 +-
 res/values-tr/donottranslate.xml              |   2 +-
 res/values-tr/strings.xml                     |  32 +-
 res/values-zh-rCN/strings.xml                 |  31 +-
 res/values-zh-rTW/strings.xml                 |  32 +-
 res/values/bools.xml                          |   2 +
 res/values/donottranslate.xml                 |   2 -
 res/values/keycodes.xml                       |   2 +-
 res/values/strings.xml                        | 100 ++-
 res/xml-de/kbd_qwerty.xml                     |  77 +++
 res/xml-fr/kbd_qwerty.xml                     |  78 ++-
 res/xml/kbd_qwerty.xml                        |  85 ++-
 res/xml/method.xml                            |   4 +-
 res/xml/prefs.xml                             |   6 +
 .../inputmethod/latin/CandidateView.java      |   2 +-
 src/com/android/inputmethod/latin/Hints.java  | 188 ++++++
 .../inputmethod/latin/KeyboardSwitcher.java   |  81 ++-
 .../android/inputmethod/latin/LatinIME.java   | 621 ++++++++++++++++--
 .../latin/LatinIMEBackupAgent.java            |   2 +-
 .../inputmethod/latin/LatinIMESettings.java   | 140 +++-
 .../inputmethod/latin/LatinKeyboardView.java  |   4 +-
 .../inputmethod/voice/EditingUtil.java        | 162 +++++
 .../inputmethod/voice/FieldContext.java       |  91 +++
 .../inputmethod/voice/GoogleSettingsUtil.java | 175 +++++
 .../inputmethod/voice/LatinIMEWithVoice.java  |  28 +
 .../voice/LatinIMEWithVoiceSettings.java      |  21 +
 .../inputmethod/voice/LoggingEvents.java      |  96 +++
 .../inputmethod/voice/RecognitionView.java    | 321 +++++++++
 .../android/inputmethod/voice/VoiceInput.java | 551 ++++++++++++++++
 .../inputmethod/voice/VoiceInputLogger.java   | 174 +++++
 .../inputmethod/voice/WaveformImage.java      |  90 +++
 .../android/inputmethod/voice/Whitelist.java  |  67 ++
 .../voicesearch/LatinIMEWithVoice.java        |  29 +
 .../LatinIMEWithVoiceSettings.java            |   5 +
 96 files changed, 3806 insertions(+), 242 deletions(-)
 create mode 100644 res/drawable-hdpi/ic_mic_dialog.png
 create mode 100644 res/drawable-hdpi/ic_suggest_strip_microphone.png
 create mode 100644 res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png
 create mode 100644 res/drawable-hdpi/list_selector_background_pressed.9.png
 mode change 100755 => 100644 res/drawable-hdpi/mic_slash.png
 create mode 100755 res/drawable-hdpi/speak_now_level6.png
 create mode 100644 res/drawable-hdpi/sym_keyboard_feedback_mic.png
 create mode 100644 res/drawable-hdpi/sym_keyboard_mic.png
 rename res/drawable-hdpi/{voice_background.9.png => voice_ime_background.9.png} (100%)
 create mode 100644 res/drawable-mdpi/ic_mic_dialog.png
 create mode 100644 res/drawable-mdpi/ic_suggest_strip_microphone.png
 create mode 100644 res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png
 create mode 100644 res/drawable-mdpi/list_selector_background_pressed.9.png
 create mode 100644 res/drawable-mdpi/sym_keyboard_feedback_mic.png
 create mode 100644 res/drawable-mdpi/sym_keyboard_mic.png
 create mode 100644 res/drawable/cancel.png
 create mode 100644 res/drawable/caution.png
 create mode 100644 res/drawable/dialog_top_dark_bottom_medium.9.png
 create mode 100644 res/drawable/ic_dialog_alert_large.png
 create mode 100644 res/drawable/ic_dialog_voice_input.png
 create mode 100644 res/drawable/ic_dialog_wave_0_0.png
 create mode 100644 res/drawable/ic_dialog_wave_1_3.png
 create mode 100644 res/drawable/ic_dialog_wave_2_3.png
 create mode 100644 res/drawable/ic_dialog_wave_3_3.png
 create mode 100644 res/drawable/ic_dialog_wave_4_3.png
 create mode 100644 res/drawable/mic_slash.png
 create mode 100644 res/drawable/ok_cancel.png
 create mode 100644 res/drawable/speak_now_level0.png
 create mode 100644 res/drawable/speak_now_level1.png
 create mode 100644 res/drawable/speak_now_level2.png
 create mode 100644 res/drawable/speak_now_level3.png
 create mode 100644 res/drawable/speak_now_level4.png
 create mode 100644 res/drawable/speak_now_level5.png
 create mode 100644 res/drawable/speak_now_level6.png
 create mode 100644 res/drawable/voice_ime_background.9.png
 create mode 100644 res/drawable/voice_swipe_hint.png
 create mode 100644 res/drawable/working.png
 create mode 100644 res/layout/recognition_status.xml
 create mode 100644 res/layout/voice_punctuation_hint.xml
 create mode 100644 res/layout/voice_swipe_hint.xml
 create mode 100644 src/com/android/inputmethod/latin/Hints.java
 create mode 100644 src/com/android/inputmethod/voice/EditingUtil.java
 create mode 100644 src/com/android/inputmethod/voice/FieldContext.java
 create mode 100644 src/com/android/inputmethod/voice/GoogleSettingsUtil.java
 create mode 100644 src/com/android/inputmethod/voice/LatinIMEWithVoice.java
 create mode 100644 src/com/android/inputmethod/voice/LatinIMEWithVoiceSettings.java
 create mode 100644 src/com/android/inputmethod/voice/LoggingEvents.java
 create mode 100644 src/com/android/inputmethod/voice/RecognitionView.java
 create mode 100644 src/com/android/inputmethod/voice/VoiceInput.java
 create mode 100644 src/com/android/inputmethod/voice/VoiceInputLogger.java
 create mode 100644 src/com/android/inputmethod/voice/WaveformImage.java
 create mode 100644 src/com/android/inputmethod/voice/Whitelist.java
 create mode 100644 src/com/google/android/voicesearch/LatinIMEWithVoice.java
 create mode 100644 src/com/google/android/voicesearch/LatinIMEWithVoiceSettings.java

diff --git a/res/drawable-hdpi/ic_mic_dialog.png b/res/drawable-hdpi/ic_mic_dialog.png
new file mode 100644
index 0000000000000000000000000000000000000000..349dc4b37c6a5530cd2846eeba3024f976cab75a
GIT binary patch
literal 3634
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
Eg7g2=lmGw#

literal 0
HcmV?d00001

diff --git a/res/drawable-hdpi/ic_suggest_strip_microphone.png b/res/drawable-hdpi/ic_suggest_strip_microphone.png
new file mode 100644
index 0000000000000000000000000000000000000000..c00b4aaa645b244f89b209b540668737795f29f3
GIT binary patch
literal 548
zcmV+<0^9wGP)<h;3K|Lk000e1NJLTq001KZ0021%1^@s6yp)op0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz#z{m$RCwC#n7eJmFc3iPAgwZhJ%ClD
zOp3H>Qbr4?NbAC_iWm?CIEC93Ze4hRxD604pbVe|G=T?Dj=%{xTqK92J~o6qfDlAd
z^uzJKo|a`fxfZ#ZT#*QjzzB@M2+XDAw#~<Bng;Oj$yAmkN#=Uq)Fn{@ga?lg7>_l}
z3dS2iorb!meFKOVt*!S#YzDLvva6{Df_?rFnt3qX7YqS2mpCIZ0wXY^%-RsrV~nH<
z65qB(cHdwMIl?&yYt3M8i7?_uF1ZHJ(FwK6XR+%wc@6KjrNO)lo5|U`PwEvDsfw%x
znL9bbU~yECsTX{H*MR;3Ar)U(1L)*UN2(cJW+LSJ43Pf8723;^UAJ;BJF&d{V)pV1
zKshP20$kTx{DHMkvbG_|6|nZ)ss@HbBjyDfXm`#<Q6oz>y@GF4D;N?dLN;CCHD<)y
zDmUhysNr{=bq5VVCSn9)-Kt=p6dT44t+};LALZINRffA@U^x!;pM7)&!$SR@#HRbv
zWNmBBu>N|+jG7v%s^U>EjX!|Qu*Yr^8e4RHdg}9<?kx6tz5XSl)ehR(8n&*7LA^-|
ma)A*Tfe{#i89U6c00RIp(xgh7f$!!30000<MNUMnLSTZ(hwLQ)

literal 0
HcmV?d00001

diff --git a/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png b/res/drawable-hdpi/ic_suggest_strip_microphone_swipe.png
new file mode 100644
index 0000000000000000000000000000000000000000..256dc3d6155009d2ed7b495d911d661f59c100fa
GIT binary patch
literal 438
zcmeAS@N?(olHy`uVBq!ia0vp^W<YGo!3HF2g>P^GDajJoh?3y^w370~qErUQl>DSr
z1<%~X^wgl##FWaylc_cg42%(;E{-7;x8B^a<vQdb!1_QU=V;tP;Tu(q+|k91`V+ic
z8hY2dZrLnQ9lh5nsyoJ^`Xj@~-X0~z*Y-Oi?;Q~6%sw&wu4H(2<-BUWw)d7&ErM<m
ziD-nL+udceJ0DkcIk&~Q1(p<L9+NsDu#?rOpiq;mfaea|&GL=MZk^C9;7&Pz^qHc@
zLC#HIPqAk$+rOi*(U5O?X`j=(S3CLmic_BFWi)*kuC>1+rFks3r|)(xXRNY%zf@1Y
z18ew{rGgpFoD+M?rzNdsIvwnwe3|73|FT=(CM>l*P!zN84{Ps1cAt+6o@B~Q)K2;Q
zE+(pC?vxlK-JL5pNo1+lgvAGKZttIUe14f6_uGbf4<C9QKB2XJsgcXF1zR>%A9Z>&
z(YV2GRk?Jc`dt?Fb8p_Us%-u8_T0T)&koAZLh~$;d!zr6&H;wvCn?t)v^G2gMg)VW
LtDnm{r-UW|Fh{jU

literal 0
HcmV?d00001

diff --git a/res/drawable-hdpi/list_selector_background_pressed.9.png b/res/drawable-hdpi/list_selector_background_pressed.9.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba79cf7f85d3cf1709ef6332322fb6543555fab3
GIT binary patch
literal 4203
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
B;FSOX

literal 0
HcmV?d00001

diff --git a/res/drawable-hdpi/mic_slash.png b/res/drawable-hdpi/mic_slash.png
old mode 100755
new mode 100644
index 87153dc336320a73e9aecadaced901f35d5e0d95..a7b734c71011252d80283f9ee49b36f28b8e2629
GIT binary patch
literal 5615
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
JPDHLkV1m-vmY4tl

literal 3095
zcmZvec{~%2|Hp^i%tw-=8EPV*m|WRfggKT<gd7cXbUDTxnLEQAeKd3JW2uxg86Q`!
z$Za%o=A6cI<jj2J_Urrm`}4>9_5S1ac)b65KOc{0;_X{zqC&Dl002M~WsbD|y@~%D
z0lwdfSh)VbLMG6}KJX6qe&7=f&J$qhfpzm#K>1)Ecv^d6Jn;T>PXquUT!%s$+JsE3
zpoRTxMr8EyWJ)ZAj~it!#Ih=s7#_~7`r?)WH#J<;D1{e2v%fTND83id`e`xm+?`K>
z(I?K1!YLY_ezG#wP8VF0^K%q<y;C<56qQIF2yM&FzU^adpW2f_kM-%5X~y*QI(2tp
zZG2yEVTv;yaCCgIAny8Mk{2LCyw=DKU<0lJ|1$tE0Ey>6!{)@kKeG*0ka|P$Zv}&N
z!OeR-iD<AF>altK!74BB4r@48np_8|e9>4&X3IlL6^Pgvl)pUci^}@Ca<Kx87q<g6
zG6yT7be8aU&6&zegg(}N8_%h^ng{(wJ9^Q;=hqKgFMei=B@d!~jrLqipZVX>WXLtX
zjmhzv<;N-0gUQ~cHlEk5RC8ik-KC_mUcGxtrrL5Tr1we}-uMZ1vm!sw{g}ytpP_$1
zLrhiVBB7F=-=U9;2q540I<@_7@A%(b&#iSc!$X~J=0n7KG}30pL!FhoS<W{&5GgbK
z%q{YI@60MBIYHX?3vB8+6t6)WSQOZWyxSZ%u82**6dy^roHu*HKZmPvz*u{en(N$s
zVB&LnHyrvEr{4IhxhEqfoK4#Gq9cL*7v9bxK=}h}J4Exy5<zT1)mqJuu-IN^0L2)W
z0I`Yx`&5}dtVMzNV8fG)yUD41MU^N~mSy`Hkj+z4i>?;G522BgRJvJRu0{t|Cu3U*
zew=+&FGOmK5?7~^$2G%IC*KY^X##My{O_7QQbcAH9273jYH`6jPkYnu_sk?UBTpiu
zK}Vw7Sr^lquXx_s#9}`SbYs*<Q`z*H_krq?&IslywuTs#)c8)YvTjcq+jm=|XE;bZ
zD?M+3<-l;6YN?)?<iusSnN($FFuYY&UEPX~GSnaq;fh!VqVS@g|Jh<zwOar9{=SV{
zd9%mIGPW37S_$6&GG}AFAP71UR^Q5Y@oW`7P*NaL2O@THTZ|xsKH0^U1h(Je@ZSjf
z5{kupbduEe*J4STSY_$1m0eUon&uKb#M;_tw(rg5xU3zEYrxBx*QGjn>X(;yn@pX!
zi3GP<Sqb4}7qOJ*zvwbM3Ph`|Z9Zl<-I*Cs8d`7kta~vt*5}H0?0Mx6`;RjXfrQ%B
ztbOFK@0_VuirhwR^|LPcYCZ2@$291I3|k|bx*S<k#JLwYixCwNTKj8e1Lxn~h}U)L
zzucWm*gH7jpEL-GdU{eoKsuq<p%SX9RoN-O3B>7L8+tigRs+`Gp~$90=r(B2FBSIh
zTO1jth<`dFLzxqY>9XMCF)?7*M@mrVD<)U>C6S4gBUpZMk!xM~WX3Ov-A`>@vzL7l
zYuI%zwscHNnzF<X7beALeSI$f4RYtBOyPO#u5Fz`lQ7Acu-4Nvws&*6(k6;t>+onH
zEm#t~@%0yG=_d$x73$244ukAk(9RXpdTI+NS878ad!1W$?qMupu`JtQ<iqPf3Q;Bv
zzY<9#E(uQCkT!mx9!YjSsY}Gud9QS{4w5}AFiG=R@chh;1*TGrHdQif7V3~uxfyjt
z78I;$Z=Jo&{kHR0Hbvg~cq`1!PtHb-mIj(n5@sa%f0i>6kvzaj^*DBTiUbDpjg<D_
zX<vhHI=CDE%v!lP;Zx9zEC^z0wEv;`JfPGbV0WJQRx%!ce%vF=-8BjoJgRk7=k9$~
z=sCojh|SE^j@;s6pYscz6}4C82FDv?K*mklzH3{fjg)VX5kX#GFRs!K>>W;I94e(n
z)>W$@u6`U4br`hps+FXMl#GHfe6&RWVaLVkaE{cn7B*+k@1@bR*WZ|l2GbkyXAYGv
z@zG@Xani;`Prc5X!VP=g8JkpKCTsAkUCc0hLGvj3PDipqkV)YPOr94<dFYURyFuhi
zU(BJB+Isp$+qQrD5mBE`MA6kGx|uvUX+Xs8Dxdf9!yL{lu|q<kxb}Kj#NQKY;C~kf
zH*2R5TKDsG>M3^n<{o^oc;d?oGR8?>2?S2{1YqAnwr0M}rcfOD`FQOoih5aI>q2QY
zFn#$C9=O>DN#RdD?8PrIc?~0jgd~f{t3&v`z;NTE`HXkXkd?LlK8W{p<XB!H4s;jv
z;?>!$tg$9uoE|Zh=W8DPVRndFesYg?%&RhnRiXHAEU#Pn7bh+upj5-cp(5M3Yrq9p
zkKD8dkdB(@WQ}wA$EqK^BQ7V&+SQ#NQG!k;lJJ{JsX+BJ-7L^EO6I}lkg1*&6Iag8
zX)2(uu&oc2P+{ArsY_7B@Yi>|@?^BFN`7Cwm}$pj2RP?WnIPQkA{ePRoRS7(EL6s<
zyf+WXTIrp_@M_a|LyJO5wjWqZWc!Io(7m4(7Q!Q=aa(`w&fRCgAG_7-pLKijrEZ?u
zYHzu&Y!|U>r`)Anf&SX|aV!5_W^Y-?s%MsC`?t`0wl);yj&E+Nv|+HfVMgx*LH=sK
zLZ#`~eYoEkp@&+xk6}Dn6~z=8=}VCka(8==hdr~7it$Vn_<^a2ddDyeav{WW{KKM*
zExg@T*|9*Q#&{T3vhA-Dnq976>-S*UcHl2wUNO<YDt&bVVlwB!M|t^pzk}+d9Fs^E
zB84EFeklLs;hx->Prq;zIzLRrL1K{F7z-Kv^d0Ru>nNT%cGnKOd^>dMN%Eu<`cOVZ
z)^LvI^XIVd&**O?M3@UUSDEu#(X^t)DdkSnaa^e}njbn65>YFG8_)ml7)9SoD?GE5
zPsEd?F%^PZ*Pku73TM9B62g6v>KvII$X(U4JV)wPzfiCuH&c6TyaZ)&(Jiz8DJ|r3
zyODm={!NQht-}>nj>n@Algc+21i*=X$xW)g>f@tqnq5Q3xQnLeIu$Ecmv5;`e(+gc
z1g5Ty&K~Gn^!@Ibf0~hmhs<U<4%|V@<)eciO>H%(pI=j%GKgtq>^JF~#A%Em-SW%>
z@J(s$MPDj|ZwEZ9m?tFwlagSQGo$alMP<n(oZ9Z{AeyhC!>7XK>HbxC4&;QB_6pJ>
zjgdJND$#-WrYtySf|xbtYEoYmGo)9bs4<7CuYysim~>tn6`jBXG5Ss4$f9qu@uy_P
zgzlr`%~CkJd9-1K6j7_B6o@^`FE+R<M?cgIcb}~n#plxLZ`G=bC%Cg*$|u4e7vytN
zou8`)0>4__sIWhpFAIOVs*GPB{F$JEP3+Q;NNjlopDk_QIFH+i;TWVhkNBvnqaxyh
z5;R%a{q5d<jy)i}k0CIi+)l*Twq-H3T~7y@`~6n_NpkOLb7)~MvVdNK3CbZbI##nE
zhjy4J<$wY?;3eP`X9qyf0pI%bdGJDuL3OK{>-TKJzrw3)jQE;jQe2xm65nV-<R2VY
zoKyW*$<4lQo^no2B1rR(^(pTVC#))j<{5HG)3Qk`AK#Z8Hxu`;-rLz7nR;O4kCxOI
z`jhNlQ*~`Parj0O<81`xVq?i5tP{zCK~}O~LHG)7Or?ut?DZuGv~Xvs*y$Z~YZpcb
zw=v(?h$@2{uS9D+q6#@sGA51_G^P}{WBW?YBI<%SPUjFlQlrE_Ji*@Y2&nU0*Olbr
zE=Rz|o_7AZ%^+cPZL<XArwX`#16$IuI!!I{a524-#LvF%1?<!zuM0pYN6!cqhqX}W
z4-G}?hYZaAi3S<}ynKpS?V8x4?=ArTwOiY#Lo|2o;RbYb?L<_zqQ5uln!X@-g-E-;
z?+d7Hn6iqpcx#haMgTFnz}G2jEWP9FxZf{Wor>UVcMZ1)i4+m+W<jjGRGh&;4IXy6
zZtJ18FR2aCi5u?>Cbdm`yL9Hz{ST<+`+5<a{h5`jxl1`OwcA2kbuELuIr&mcy@#Nm
z)`o!}z@He>mQM~^zdFBe-nRo7c-j4@;Qpr!|Gy>Q-f-dK1JGul3Jb_4as4)Z0LtVR
Jl4j%@^M4C==)wR1

diff --git a/res/drawable-hdpi/speak_now_level0.png b/res/drawable-hdpi/speak_now_level0.png
index 5c5ca309d05e05143d6a151f24fc708670705bc1..a681da606b634b33c3ce5be7096c5ec42afca4ba 100755
GIT binary patch
delta 1457
zcmV;i1y1_p3+M}wNq>q-L_t(|+U%YEPa8)Nh6iIefk22!N<u^mxIsxp15y;J|NoDT
z)JRG5QA$2rN+6UH2w;k_-5q&Ou~6@B_qf}SyZ4nwNZ7vFyT`jbyWX80>G%5tg`*lC
z0f0dO1_2m=d839{DOE24oEyr%RW_;Y(z)0FRrW>Mj<Ua%b$>z!HWFx9Kc=ju?55%8
zww1kA)&?+pO*n&^yFhc^Q??=CdH`0OzEQTK>}pQeJ5csa*(reKuPe${m0iyHx+lt>
zDmy}ym~UXQQUENHYp#S8Rr(HWMA@<g8AS##%i;^bE~q=orY-oH7GD5%0gWn~x9D$P
zd;(ZTeP_9EX@7`M0L$2S%{lNp=X+n~E3j!tkz2!3pIJI!*DC5eSYT5X^&Kp*v5NW*
z7FfNazJmoeT2bFYkHa7U1271{AOHg}2*4l!1271{AOHg}2*4l!1271{AOHg}2*4l!
z1271{AONep>K6U*X7Vl#HiL(rLXLO1Ov-)n{hXBr7=PawZ<JdYs?D6-<P{APorEY(
z<njZ3-Ce_}Bi<|fVB?Eebd$*Yty<^&@Qpr@Z)j+ml(IL@J;Nw>NYH&)bR%&!uN5G$
z7R7J)YuShiigds!6_VDeCnZR6nW3havCMq0V<7`eQxeRs!*X>qmYK-HcH5exZ))T_
z&i}DPV1LIM%4_Y5RwOW;RCkwR{_irC(2-$ThjkV*u&xHQ@tFVbIRv(6SXPt!^}Y{F
zYue&M`+pn-9zF4GQr1XTaxl6E)=X$lcN_rQNvI{wl+PZP0oXyx>%3z>ZnotQ2f*Td
z)+s%^z<wEk?Q8g-iFu84^=?~)wJkpXPcs_Ns(%!~xS2RfdC%>H*Vf5SV&#tbiqmY$
z=TFMgB$7rgxth>FaC+C5RP3Z`UwoV<^j&Gq;U`<ofDgb}iwUpoDqAbCd~4z(OW8^Z
z>`<e9zn0Q8ZYq0`bEw~wYi_1A*J-(@_BDd5pn$P9G~RQUk|$5Orv8%CEXa{uE2;K#
zS%1FQxYl1b!&qCuK52By96B$jl!>Fb$I^^t2}U~d*~bYHVf0+MEDa6tHX~W9Y0&wX
z+7(T>FEj!To;klxgVQ0VDSjrsE3+5d@;7b1FG>tOqfyphZ4dBm=dE9rhn%J@WxpBr
zSrhbitwmHD`-b5**R1=>ZfU%i1C^(?M}PLVf$@);KapMnuFuMzlf9E0_~eNnNiV@A
z*V>;o#+bqOVZ#H=-!<RM5AKoFoT4=$zI3yZuDgKcqJ~AfpAyEO55GCed{6oR-o$~<
z0+}7YvnkCrRS8&4`m?6NXU+uLMh@e#nm}40v!#A}(r@*u1}yq^Kg`hNacKTgqJJ~f
z30IzC;=|!)$vkT}2QN>^;-XRCfRQ{ju4!41nCeJy!oRz<rC;d`UHh^OfXAhO%9>jJ
zKx&rr6aIWSj%rlKXHD``+zdV=w=2240u~Kcc_HS!XR!DO%{S!HUI5<?eB;@Wd!)BQ
zsYvl*r#yw_-THqYPw3-d<gP*3pMSSFY=7-KxCjZ@@L-l_%dcDVw=2!xA$hD2&cK|I
zG1D!|e`bcqQ(H2&JEQ;<(kZhwi6omcmdd*Epe<v#JsA>oDIkS<@HR<cvS`rPao_Y#
z0*YW2@*d~t*m_-k2_07Gz$z&K1271{AOHg}2*4l!3tm1S(8)6y{44QfLVr2O4X$^S
z;<vq?$-w%v?}KY!r>5@EV5Z)73&4}XJY)YSnnZo^0+}U8WvhwrSpYM8V6L^~>6h8N
zLQQ$nuj*_<2QbfqpgMr1>lkGT3m9*Z+x4IvyW}?CRZvkPr<ZLz^xu{;U>s&3UJblJ
zgB4Q~mVELe9NwYH%Luvv1}c@dNrV6lz#ssF01Ut&0E3M5p8x{@<Vh{qgJsiv00000
LNkvXXu0mjfp2)>6

delta 1453
zcmajfX*?4Q0LO91NG-9Dq3u)TibQ*yl_(>5a+@=jIhQj>SehBeLz2mTw7KtjvJt}w
zks>n3m^-&lt%P}=p3n1n-ah{q-`D?Fzg6H8FwGR3U}|J&8^PKvU<XRT!M(G5J<w|2
z2BGXP!)3?G6-sHnuS`aPfZuYF<e8oF$d!kZ$DgMGuE?E!Qt=s2wlsVvrh>p_IH@>1
z`baELP!wk8tWD;yC-p79EW2zL7O;1==wAmn?}t*I&XGoj&wBCVtN_L!@IN}NJK11~
zD?Sy%72m4A<w!ORoy@bolQVmmTEtwoj(%I$Ei<^mG#(9);(jEvbg904$%-+oYFbpz
zL6N<T-EJ(StIBz+f`v33Z><S;+Hw<w@Vcr~Q374DP%F%1D|a1j9nra#Ys)ME;;B~E
z7BFIeUqP5p<@%6x7I=gWJwtJi!)h^8h1UFRFfk0haf9y01fiM`|3}$lT6`NWBF4Wb
zt2OXwqH_`FaBMN%Hs*iV!8i?|P>QVjAB_LE3fALN&M&sC{=_@kLu>$R*GlGCkRu7F
zm$L8dV<{{M)s!0CKL#*`f}tNg`%maQzFkCXGiP8O%7-`bbo7HMrY+{mk{NhFK2<fA
z$(?&CziB%mTDb7z7BVTa_bG7-#XI0!DJa&dtqAaYwq)Tto1>@Rd}}Jdx;-vt@&gt0
zXH^n!&C3RJhZ_fW6z<*1XG8(o*nIv>KI$G;mcQZL?NBTm$5wkPK4=8ca%KP{E_xzi
z$NY(5nTz9ce7nUjF#hrPJKf<)Gy(bXyxwi=+(aSO^R)p4JyjnQ163qex6%J+Na_K&
z<q)Yh)MZe2=Hpwh{91m>EM&0X*;+(}z!ja>?`Ud<WqBTOYxpV3gphE@=>^Ar1QsML
zZ&X}-;$HK>ydE)(heLd!+n2`9oO@4<`TnD!G<1tbw**Sp^HY2Yt3YX*$E$njSwM3~
z{b;Z1`F9jlobIhdNca9U4re0qnyHT4T=cwCk>j8gs0o?}B*8QkD8SUV6Bt#{;?-yl
zE|kW-Bs*@i?Bt$w^t;X&4n@MkG&of(2fNS?6lxbjST<;SK7&f1ZKHxmn|g&=uBTkS
z-lXoHG+Uo+;l(>g4h*;Lm2v8t&s(IX$54+AJEwBnF;gsf(<m3wx(@0gz1-If-rdHh
zb7@8s!Q_;%jUr3TO!4@9Nw=E~l;UbNwI0DWDH|2Em%;~$u4zKBL-2%xAl1k4D4ZCS
zlDnK!Qpd0?8A`+y$p~)IPX}iz&H9Y67KSJE<$_z@+z3emb_rEwT^b}fU-FKPCkIOJ
z<1MN$%RO*Qwulc<vOk=ieN>vWCn8;5WJasC1+hrs273hMlw8T{h~w(30{sc}9rQ>e
zruQabwKzd}{t-5+xufUXCxWL3LL#OU0s%FpGE3t|ILW?87-8n@(f}va)$Og3$ufZ-
z=pa3>HaksZ`$M$-8!9{+u6$!rM*`{YBJSeBM9>Pg)q-j^WhxgE0{0c7HY@w~U+4Hx
z9OLsU*N;W7wq87gGa1%fP4~FG1GDSTt_rM7oJm+2#cCOuOBOeNlJX{_rP8~g*%d>D
z8GiVY8HO)O@xZKKKYh?%17<zd7|H-B-~|K~ctUyr;`Y^ryp;jKY1G{9lvDb}eiusX
z$4P+BI#bT%`!Za{Yvbw4KssA(+kqaSyW(-ARLLSNcX3)?#UMY!94Y=QKL2WqUF!9c
zy$o4R=qk^o3pZ={P0@U{TF74%Qcy7>KgII^wEGYQ=Iq_vqN?bdS*!K6@{CyZO@Dse
z&K*ig=;t-BM8+P|f#j<Q^rLk*dJDaFlPt}*_?EpCl*HJJ2hqV)aacxA-|ZAbdJpBn
zPE;R&m$V_#j6B-Y-Wd+2$||_X!jZqS^2;Zr0|78k{skG~hLUJQp1)@bH#e%gij4gW
D1rW~R

diff --git a/res/drawable-hdpi/speak_now_level1.png b/res/drawable-hdpi/speak_now_level1.png
index 4d5f7d6bb912fdd4f3c39cdcd7271975a0e96060..0dbec69a7a063ac9c34eddebd793795720c52de3 100755
GIT binary patch
delta 2166
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

delta 1533
zcmV<Z1p@k~5wi@CNPh*@Nkl<Zc-rip-)kL36vt0&V{?r^+L~f3vF$Cj6kD~ZB^rOA
z7SXnfg$nA6_)iFe;F}=$?7NDf4}yjku~2_dl#&(&e>7Da+e$8tHBm~8F}B9*Iqtb|
zNt>OS+@0B(?e`0ZeYksfcIUHm=FE?s>1sBc1f`=ZkOcq+0e=_-U;qXI7zALcYiUKE
zqsCTe>u2lJ7qL%&n_z3|ag6OW+ia>2+Ld_2c{$r4+a|~V9cMetHU(heB%tnOTe8Ui
z&#?`&9RV=E>So)?wxOWwonSk__78#%4=)(ot^#3+Zf1K7QKCOLSod(<je2bWD^RQ0
z?(%s3?V1LF6@R3A)g}6LxAy~BF_Jdb`T*&yWm^GYovR)&t&ITIxz+_tYb}6vuImG)
z1(#TWY86eZlE9V)PHzc-K>!9|5P(4d24Khn0D}Mw0x$rB01N^!0D}Mw0x$rB01N^!
z0D}Mw0x$rB01N^!0D}Mw>P#Wm>5vcR<WrtClzmu!hJWoO+uw=iolGH@Z>?`+yTCTi
zHcHu=Ajt!hhkJsug-=?#mF*nc2YO6NvOdTjJ+`aCw$JBF7|JCM&V$wd;JeB1r?5Ue
z#qLYMB7H`$AGe1BmbX%kd<eceAz-U1|Ks&dsRI+YYx?G@FCk#2d#(AbYC-_(v8)po
z(!Y@bvw!(Qb6Lv3uCzF(H|Mttfq|HoFuJ<xz|I#?3a0}Cn<?N0JfAYKX^XbWb%x)6
z4+w0s!+UM|e8ECRiKYc5muq8sA&mtDmX}typ}r;G9RZ<${b|v*>CgH72j4viZKdNx
z&hPyeZN`}@0Q=SAoV+FVWaZHB1Kj6#26tw&?0?^HRRA_&an5FgTl|8uRYZMBqS0Z4
zJKSt>o$)FF`^n-Q$&jsv;N>%q_xP!ybZs@fP%VvC0oas9^d%ZFWXiW}UwgQ}uh>Qm
zFVlc!ggI3OU}VUU_V(DIMM*eX;C;!p4jIlFB)cA)W4<#nB(P(ay%yUH5o4=9`-nPQ
ze}7&g*Zq1eGDL>kEbG7#-<cSCRc%>Sbh~9^`yGqsK(}6R3*~oj%?I_3x<S(mB-ebF
z?7E|lTEI^Zn7EbaE#1p6Z10i%^5jwyWUWK#Ex(5Cs<w8~A8dcIopOlcq{sa!vK#u5
zlKut-*m0tab?a|qd)T4ZVTi)7DKD^|WPiKK^88P<)OuGLlW-)`YgnEu8MfE5L>B1<
z_Bz07=rd7Ofk}}*NcMehGHK@-3bRD{DotyRLu30Oh3Pgc%_X)ZGpHVSIA7f2VGS0F
zzG>+nyo2o?avLq)@4KNK6EM;Y8gTrNG)_OKY+I=!w4Uuga-XI!tS=B<PQXMvD1V#s
z=BjaR_l#-;=%SjI@LL?*-~4*`<1#WU24Lcj9wobu)rBOb?PqNYi0hoVMBTJhL-cjj
z*`@_DYH%QAy%ifU*G9FiX4|5^q7<ZYoC+{f7bPw-ww0~t)CG=|eIqe$_|~t{V^1Xa
zGpo^HBZixab%#FbyL*5<&!V-^kAIZ)<WI+vF|lu{D7_62v8@c8uFTSsVVtqpG9-mP
zFr_}bow5x|dp)NmJ^5c!Hb^=bV`ikbX=z;plMMw1CIaT91{9}a&wy071@2LJGDlE`
zQEt%E*K1LN#LiMS>~c;aC9@HC>KkvjOL{DxHk>n*LMh5q@>|=#K(GFPe1DBz>~cB3
zCH^0Pm7&+^?Q5rLCbxU5muiPl!XnXWYV>LoU_nh1y_@=TV%Y}(g8&QyFaU!947ylJ
z^mK4z_d!1FqWo>=rHiU=xRgvI$Qvq=FFoJq#`F;YTRg0n`0!ldWM5%uZvmJ)th@Q}
zW(i5l1kpVVZ8Ww#iM<ZnQFc<g@>R?u2s+%gqQtaU0+_odOHBJLfVpdk!ml+YlEKXn
z0nAZc=^y8V3}A(vUm>H<FLT;w5G5`?THK;RfbV)mT<|`I744W=m8J+>7DCq)fI$ET
j0T_Tm00v#G{{$ES=5IE7YcV+400000NkvXXu0mjf4>8$!

diff --git a/res/drawable-hdpi/speak_now_level2.png b/res/drawable-hdpi/speak_now_level2.png
index be5a7d37aea56566098edd2fe31319aab7e92513..45cbff2b7f63cf0ceb36f4d4578b564fe0c659c7 100755
GIT binary patch
delta 3089
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

delta 1634
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

diff --git a/res/drawable-hdpi/speak_now_level3.png b/res/drawable-hdpi/speak_now_level3.png
index 82968f4768864ac8bb93f9fd6289a2d683a60e0e..abda8f683c4670ca983559d46e509da6021953d5 100755
GIT binary patch
delta 3610
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

delta 1583
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

diff --git a/res/drawable-hdpi/speak_now_level4.png b/res/drawable-hdpi/speak_now_level4.png
index e8ce7bd7f5cf45881e3d49d7307f1597ffc4f754..18356351a5f0ba664357ec1606e1391faf9a517d 100755
GIT binary patch
delta 3588
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
KMNUMnLSTZb#K_$M

delta 1582
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

diff --git a/res/drawable-hdpi/speak_now_level5.png b/res/drawable-hdpi/speak_now_level5.png
index 77d0b8e9bb4780599c142095b4c48b44d4c9e496..7d4fd5f20848b753e27d67bd4db7852265cf7432 100755
GIT binary patch
delta 3633
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
DrDoqL

delta 1653
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

diff --git a/res/drawable-hdpi/speak_now_level6.png b/res/drawable-hdpi/speak_now_level6.png
new file mode 100755
index 0000000000000000000000000000000000000000..e06990faaaa7490ee52b428d70fd7a09cdaa63be
GIT binary patch
literal 4006
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
M07*qoM6N<$f?VNiKL7v#

literal 0
HcmV?d00001

diff --git a/res/drawable-hdpi/sym_keyboard_feedback_mic.png b/res/drawable-hdpi/sym_keyboard_feedback_mic.png
new file mode 100644
index 0000000000000000000000000000000000000000..cb86a5598a7a9213a0755ea1670f6e27d25e9528
GIT binary patch
literal 681
zcmV;a0#^NrP)<h;3K|Lk000e1NJLTq001xm002Y?1^@s6$Fa6h0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!OG!jQRCwC#S?h6wFbsxX|JU7sPEa~Q
z8G#WzLN+L!fDz~h=>~KI=mg0I$p*yknV!!l1GYp-uF{<@4{S>xmSjmzhha!=neLJs
zCkDU(7ytv<mhQ0&q-pAVBoyb0d&OtpAoMw;7r-!}bglTHm$vw%xKW&u%O?a-8byZ*
z*3acN0w`t_cUe*aNU=7kd_WkJ5dqV*PrN8TV&zjrAsMLr=qqm&QHWv(IumU|N$<iV
zT0Q{)%mPnJ{_&O%vW!y+2EYIq00UqE41fVJfE9~+m2GBL1@(c=9?50Rl#9ZtbM^Pk
z88aZb2$2QxoC)PlwIxjPz6M3fitz!l5&#h+D+a&=P#VV4m$L&d^;iIq6BW+y&q(Fn
zdC#7@Io^qlb3x52VLdM*9k{gRLvlzOTZ;C8@XBdy)q%?I?H6c5r#q&j0st+38h62>
zW})((?VM(f12Aq!)>`zK(H>~Y>=J)}RR3QAR_xn7K?$Jp2-$gDt2A>)E<GVpde*JU
zo4cNE9z1V#3CW3_5^Dg+C+xZnXi{aK!0;QLR%@?Myfr(zNWfgiv|!HB>(%cE7J#t%
z5HPm+vkMLb;*{Vr(cq9tdP8G;qD3nH)0*G<ib+NQ>Bhq48m^e^=%O9<)#OJ4NZ!89
zXYZWE@$v})*wg}9YwAlTxhuf{uDPwUfGXp-$xM0J0_Ea6vLsEgA+$oC1I?ykR7D^t
z+JwHqbW0yNBj@*M14f!q9+<GXd4In7Nz7rC0WbgtzyKHk1NhGXE&>byBKXKIo|8N<
P00000NkvXXu0mjf%Rwia

literal 0
HcmV?d00001

diff --git a/res/drawable-hdpi/sym_keyboard_mic.png b/res/drawable-hdpi/sym_keyboard_mic.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a0a68a96cdb53b36df9610654eca6e3ecd452b4
GIT binary patch
literal 1440
zcmV;R1z-A!P)<h;3K|Lk000e1NJLTq001Na001)x1^@s6|I@0w0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%LP<nHRCwC#SzAbKRT!SV=jJ6(x8u>&
zLnh&gtPDI3MUoPDdYH^aC^V>t;83AO=PB_iA3P62R1^BpO9du`caaduDAZ(ByauAj
zi4eyl<2g>|T%6nLUx$Ak{x&mv_SO+3T<|e7Yp=D}xBvZLzO_bTj2X^SlMQFAofA4I
z^uHryQg%p^q-TDj!Mbt@O+BV#JcLAGL@UdLNK65CA`59CBO?(rz=AO0HBKN52q7YX
zD3W5SCM3x4IaWX>ffcWD0ztqbzy}BbjtHrgTgZruX8|4tJjy>?TU)QjVlm_L^0Iq$
zbkqfXcL8_sAsCX<W+m=W6iLWr0CE5&fa;Epj<5Fj_wO>&TrSrwyWQRl*DC-|B5A8y
zME_@f9fY_w9|RQf#adcgZn6Z8lPoDIc?ZT_1r*?GHKv*ncixMDX8^D5?CfkamDbbK
z^COIV1+DauntRaoWt~aXjOKqJH#av=ZE$&cc^O(JjYMHeGquP&7F<NNfs@NP&W!U;
zg^<WWCLMXsND}F()G|rOJXw+1Q%*=a#&}(G&VIF5v4(U^D;W~JHl~M=MBcynG~;+#
zrw@rBFq4`VBc+5TBczNbBO)DhkXZ*IBgtLqc<(4t0Z}c4#FGhWVa0K2cvFj78Hn=+
ztXKnMNbZQplb9B#rU@{!rlzJ~VPT=Uy}jMWGc*#@Lx_*h8XO#aV|se}T~rF`2`wF`
zmdTj%9|K&OnVI>V*QVXw-6dYb0F8hfEJ<5mU;h)vH38lP*hN2lF9ke-D!`)TU`kRZ
ztR9bto7NDCL`-NQixyqu_xpqR)e3Ut61kLtA}($@kyS+cJyL6HYg}j<^78VY#+z|s
z(WRxOH8nyL6BB>neJoW~RabalI2`to+NN2cNw_et=FbCO73S{h>iQmjf52ZwMMcHU
z05p}?bp!Ar;QhI|x!-yJ=H{joe!mQO3Z;xitNe&kvA(*x`Wx?TXlSsD$ef&<yj@*g
z{pHlu)S{RK!pz&-+xts#aq-tUS8i-<EG#Q4dx2jc8yowX+&2<0$|R*I!+n_v9h>Xs
zOLcX1&-M5Bf5R`#&dxe*Hd{CGBO}o}G{;CqMMaqqS<N{)Ir)2gdw*qTXJ3c@U4RGh
zH~LbPa!6z$v7O<&hQon@fm<UZBj2I$vN@g3w_&jiBqhfAaRE-q0Df~(kO_rC{<gNZ
zFQEG$+>rzmStyZ&6{Uh}=*#F!*H%_meieS=^?L6(9F8A=*r#yqW57oom6esB4Gj(b
z6buIaVr+MJw*#(K0(fBLqV?~qNUfS$D85Gkg#a!|uMH0mf2(xj?d@&%#>R$AxdS;k
zIPf$zHGP6)o(1FsE}%2ZdPTm3PmzvEtPm|#Ra;woeQ|Mdl3IZ_ZoTpG@&3}%(zjsz
zOSo++K(TLChP|F$hai=Kq#nm7<)K^8L%P1c-T@Zc;Y1+v7I-><{`UZ{175@s&qp$8
z@e-n*T?fO638CZq&@p{ti`>`OciZRl-OI{ux7!P(_R(Pj=)i}>;ls%eAhgH`p<g0M
z?1)tCc##rSj1`qVs^v69tFB?>lf@xPTbK}KaptCEZ!e=WazD5{KR@5WG_=mn&N>Y9
zEKDO(DtE5;=R-D6`lO%^4!5?p4)mU=B`O_>qD`p33z#&s@V5x%FgmYrelI$8fcRX>
zj`V26`S5p;NL+e?c7!AX#GzAuU=<@z$nd+LoHI(~T#>4UupUBMUzu`mC97<cnd0!1
uB@6eHyfQ{|&8al${O_rALMLqh3NQen$);g*?h9rB0000<MNUMnLSTXk{+>Gk

literal 0
HcmV?d00001

diff --git a/res/drawable-hdpi/voice_background.9.png b/res/drawable-hdpi/voice_ime_background.9.png
similarity index 100%
rename from res/drawable-hdpi/voice_background.9.png
rename to res/drawable-hdpi/voice_ime_background.9.png
diff --git a/res/drawable-mdpi/ic_mic_dialog.png b/res/drawable-mdpi/ic_mic_dialog.png
new file mode 100644
index 0000000000000000000000000000000000000000..77613ca05c3686518c0879d325adb0111ead893d
GIT binary patch
literal 3312
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

literal 0
HcmV?d00001

diff --git a/res/drawable-mdpi/ic_suggest_strip_microphone.png b/res/drawable-mdpi/ic_suggest_strip_microphone.png
new file mode 100644
index 0000000000000000000000000000000000000000..18f314a61a15f05cb20aad5dd8ad317eb3b4c70e
GIT binary patch
literal 398
zcmV;90df9`P)<h;3K|Lk000e1NJLTq000*N001Tk1^@s6FAM;v0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzFiAu~RCwBA{Qv(y1FZlP0}a8b;iHBV
z4_Js%)Y#Z)3Z!Czm=}nj0`Zdi`uZD$^f403L_mX`fYc;3;m<&vNXP<Wf+Y)!7%vWS
zk`33uA<jFR6i0d{0;X$F>hK5Rjl^UWXg&aCvS~o|p9#6#37Q+riF9Br5+*uWq@eUu
z9P%(%nxgUX8V(BzX=s_!iNo;4K=}Y9{%NAh7NDk`Aj6>+B|=>ni{!$^P#>*@6=uNj
zb|<z}?1UCppvYYV#M6PA6Ok+rfXc&)fEtoYMW_KSXu?mSK0*dHK#Mn!T;xK-JPRq(
z7|_DF6JK&=B&JaWv_uLim^MJu^fRjDP^dw$r1p#$gNX?iScKwA=fU_aqNHr$rO4$-
s;Vq3t>M5b%VH|Dcjv77!3<n4>0Ihj){}VRAmjD0&07*qoM6N<$f?DXJ6aWAK

literal 0
HcmV?d00001

diff --git a/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png b/res/drawable-mdpi/ic_suggest_strip_microphone_swipe.png
new file mode 100644
index 0000000000000000000000000000000000000000..ff629b6744095c35ecc715ed6a91ff90c7b28e8d
GIT binary patch
literal 309
zcmeAS@N?(olHy`uVBq!ia0vp^DnP8p!3HGPoUoh>q$EpRBT9nv(@M${i&7aJQ}UBi
z6+Ckj(^G>|6H_V+Po~-c6<zmqaSW-rmGtNTfBVA;Og=o#JUvz!R~#4fNtIq$(d;H`
z@=C#G!N!e&%pH~N!5o&1AN3Y2PGS$9(&)58=EaJ+4l)KaE=@2I*v=qpD&OH-sF~!F
zXXx~}n%ASawstRH$Qv#nx!DqSg-j1j1j3oW+8q{mk_woAfq910<>{Js>~|R+EiWk&
z&}g~SpjaZ6KINjq?R3VKIy!ta+ujLCBrHr`#Mb(!WP!8UgJ2ha_S&|#6G=%Tmv1@#
zZm2N4U^u_?>H&*efif_cE(m1rwd&Z#pm2aeaGzVJwa(-ZKrb?Qy85}Sb4q9e0D>xU
A>Hq)$

literal 0
HcmV?d00001

diff --git a/res/drawable-mdpi/list_selector_background_pressed.9.png b/res/drawable-mdpi/list_selector_background_pressed.9.png
new file mode 100644
index 0000000000000000000000000000000000000000..02b4e9a536fedd342ecef1d0153ef97a3fe69452
GIT binary patch
literal 11006
zcmds-yNg{_7{&J;lNmE+EFwbC#@gD>#>j+ZP=kmFVk1_TiYWvOL937^Vkd&>ECl}p
zOItxi{3C3{CK%&f_c~|)-0Oa`&*R>?8HhWav%bgr9_yTWgqgYZ`i*M``_JsBln#!r
zAHI?C1znHt=KGHyKl^)z-S=L(c9@p>clU>Hzs!*fA6$R?qm-U_O4lNN_4VZ(+`D=7
z+SR?^E?!D6UjF6h&tFaHxpZ`R<<0lcFK#}6``5*Cxy-DGdlrjDHzdzmJlshsb%MV8
zaIxIUqZZp3w{DLuJWsuo<9xk!C#7?GVh0!Uo6Od^$2NF=2mm)|(Ul+!T%*r}e^UDE
zL0`}bdio%xC$p&C^E0}zxX^7%iQ!M73&0k-J<;R--zoihuP1eaB<9k^{7I-!(bi!}
zM1bOY&iz)ORxB>=KEgcK=yC6U4R(U`W+Y~RuO|MpSU#c%#IPM@&pB~fM5q=!Vxun~
zU7estz7Mgma3^2*%3=$3BKFbg`;Z{T)e|wt)`}VnVGavoVHZNoQJwJVDu2#lX>nOx
zwb;J6_K=S-&*d<uEr<nOjN9bZCE9dWeC%i;IM~8y6GMphz*a7taX~EG5<`xqA~J|L
zK1&dH0g532KIlTcmVCjJf<)GZ2$1*?s-bc^VDGKoJ=YSm%3k#l1*#Vhs4#~Gi5#z%
zI5mQYE#xTY#}`n}MTtjDaV|c@$b)d@m$NEJgiS6rqpmdWd~8SYbPy)LWp|`<qed>a
zkgL!H!-ABhU=G4}ls$CR6CvV6-|Lj)z!P$j%UA`G6zaG?$EL<n_BIYXsTaHGVPIRn
z3i82`=>Cw+Fh}os8k>cq2!F$+e-+ePl;y}ppEv^}o<;<<h+sCp&t`7sR6#Uwq=;q|
z5(i@*-+M)y#fV2=agSkZrtE=J1+iR26)L7fuJ`KQ<Ib&&VT(n@h>Ow-4#+&mGC|*2
z#t%&$y%Dy$IA^@;NiKaNuGzPLLo7luO<9UONZgTJMCZ88({}Vcw)#bmVqDJ4c6~#U
zAfjTNXv2?j@jXU;L^vRI^0}yq9O7P6V)b*#Np5>H8hD-<Jdk+g%GVRu5tpYgpSWxt
z^1XM`CvI5ZkOjA5y0F-AEEl<J`tt;_0J!FmQ_-0TPBh!$hkz5jM<zY*4Lve)@>jXD
z`0?ynK96~Ch_622S#HQoaANj6K@&}y>9GaIa?NJ*gVW!KG~B<!L|?O5P(05Q7pHZ|
z3$dLSW6^hRvFjUZHT4G3h9Bc<?6JnsE(8apPCgg4kwe^TO00iFv4DoW8Ts+)ds7-a
z$9qODJ{*v^BRNnx*<5f-zP=$65ozQ|Ge^}qC-#Yc<a#f+*X&zAhrEf~t*6eLV@dIK
z;P&45of@&27b`ptpIF3FTLr~t@+tB~-KHkSq7N^kFR2{!K#xURe&bX@G;w4x#dPp{
z@AP;2I{N%pTvH<lUQSg(zMdDj2rG2@#y0&NeRi}p$YYJcRge=AL5xEA+dTAhWaboV
z59gG<s-Q?f)U8i$U&+7R`&54mz+kwg$qI<0T2AzdJI22F!l_GroMU~5#rXgVh~Wzr
zLrk=lCnsAc_P`fLo7fa~jr-fGAjP~GzvuS9bkc(Hf~UCZU4;ChL(Wn5I#=jDEJ(l3
z(6?YP6t1{hz{RkjNG?vk=iDbQ9J;iNav(M8Q_e|2N<ajML@BR@TVfDG5B2rqacp6<
ziMa@3-mlo>f?SAfmUmQhe3p@qT?RG5IkNGwTj;_XP1}M*q&Y(Te}Kv%g5`xe_`NrM
zXO5%n=(`YdjqbyOMD{|2Aw)TBab1x7xrZ5!(U$MmNbhk$Dx?w1J1Q52;ExPlNvVfU
z3z-e}%+dR_Aj)a#f|Nr5=rL-C5E05_J2G>qz7d}<h+>8yAR;{C_z_v0IDSO(GjV-E
xG;R%^5<zW5dd2t#e)rdn|CgVn>gSDrymS20H+O#eLeJvp>W#ziUw-$qe*spuA{hVx

literal 0
HcmV?d00001

diff --git a/res/drawable-mdpi/sym_keyboard_feedback_mic.png b/res/drawable-mdpi/sym_keyboard_feedback_mic.png
new file mode 100644
index 0000000000000000000000000000000000000000..247d5b3a9cec75d14aac825139c52ab6207f1c23
GIT binary patch
literal 483
zcmV<90UZ8`P)<h;3K|Lk000e1NJLTq001BW001or1^@s6&*W(;0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzg-Jv~RCwC#Sc`4KFc8HR19*dG1aDAx
z14ifw=>%nybc3(~$^@kozy`2^xvLC1os@7dA&M&5(vuLxm*@LF<5EhiCD+Sp;Z+C}
z0x$vRoF{AvM?%VI31JiiE<-D5dBP8G>%j+N@6RSkpc!~M<4mY#A&^g>45$$TNDf$I
z{I+xz_|gXofkNQ_6UYOnCd4VmO?G<PZYx@AmA{L|R=gjwV{OH<n^oY!FNhsW4%{{#
zj08IIS-Sp&5a{%9A$Re~z740}<@n3tb)o$yBnN_uYlR9Dr5zer570Ua1Fg~pO%@;b
z#AA1hXLQ2GF$6ZsNMjT(L6aM;h*TNfPFf8-zeOdQ8@d~EBgrq-YKRl<H)l3i$!qqQ
zR|)w}_79U(v50vB!1)uNElOkd#v@hCVeqraa*<@UsuK3l2DLScfFQEBl-V<7`7CP<
zj@Q^TXafCq@A<uLcgo!msDv|;gh&XiW7#7k90|cE;mdII=^i#88P@VISs_peEKT4l
ZzyPt@yNtTZqGA95002ovPDHLkV1k9B$?yOG

literal 0
HcmV?d00001

diff --git a/res/drawable-mdpi/sym_keyboard_mic.png b/res/drawable-mdpi/sym_keyboard_mic.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7580954932deb94136d936fd3fe5f1b1a02fb8c
GIT binary patch
literal 859
zcmV-h1El<kP)<h;3K|Lk000e1NJLTq000;O001Hg1^@s6MV1*e0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!{YgYYRCwC#R!wLVK@`qrlg9K<t!YJx
z7?eV!3Js{JkOo1D7a?fCoA;z@g?LFRUP?TQ$BL~z=*9LD3QD1Zwls&H+EP$SLlTII
z(n6v&)-=^!zb9`Y#Qh0{97G>{yq%qy_sz`vnGs}JHZ@YrrUuJ@0z<J>Hv~b@8Yk31
z0%V4&D8XZ?V-X@?16lw(@45_pWBo&q$Wq4<lF?4!NH7>Y>u@;QM@B~CXy<@D@D<oG
z>1{=UiZqd7kH>Q@nM|f+mhX_Ep`j@HP6BOwY^rvR2wH*O>FMd0a*YrP`Yr>9)PhB^
zX%t1YgS~FI`$TQW9!Mk->BDC;`)OBUYGx8usZ=U9?iY4TAn1*eB+1PE!atJ9yj60T
zm9<?jR}dwNk6L)#4kw<ZM?gl~S+}y*@`1>Ca1huAHaYROwT_6|ZP94-B38FHI5^nH
zBzjJEWHOm2*=+VHXMB^94{TPe_3-Zxo6SiRwzjs)Y6PpRs~b@J>~^~og>pY1m8eHR
z=`1ZSF49C(e}DgZ^2gZN*qd78D=RDS=jP_teLkP7tE<b2U3}pAKlN&nnYZc1ganlX
zuh)AY?VAGw1Eb5!%kL72M0#p!>NWn|2JV39EtQT?C=^D!o08n97E$WEQ919@#9S`-
zF%SqmWP=KB0pW#(g(Vs@KR^Ep?F+m((TIQ|%K@C8n3#B^6t;LgzBD{M{0zj8$H&KC
z6bgkR^`+D41gh;-jCb+s1tS81FBl5FGqjUbDz#QyO^d~1VP<9~hB23b;~Z_~ddsy!
z(#bXdip%A?ryPmj?;pj#8^Af>C>s~me5;kE#8v@HOjLr?OZj~MGj+ydu}@HRAAI5D
zD*q8ZbzGS;@5C}YJA1uUDjn<T>7jErO-@ewIyyQ|A%dQV!{H6RYFf{Y)-7uY^5p^h
z%Bp48=+dXcwTUe4g+9O`EL7E<bv_<R^Fpa!xyrjp<l55ATC6(09X4L(Z&~eKWJIuQ
lQGIwd;wk_4UzxuI7yuE|)2}0edxQW0002ovPDHLkV1n}Dj;{a!

literal 0
HcmV?d00001

diff --git a/res/drawable/cancel.png b/res/drawable/cancel.png
new file mode 100644
index 0000000000000000000000000000000000000000..081532bec57494366c9fde7a6b33154c3ac0555b
GIT binary patch
literal 1259
zcmV<H1Qh#;P)<h;3K|Lk000e1NJLTq00BGz001or0ssI2yqZAU0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$jY&j7RCwC#n@uQmUmVAoCJnZRtPCr!
zE5;*gyp%$ol_VDOR+5rZ#)MhPj)e_{lu`&AVd34%>uMOg8LYhQbV**HZ}-$~nrp_>
zzn<pYf8WnyntSfO=jxpMneXr18PQ)~UmqVIx3{-Zgb=w&PEIzNOlGgwJ3l}F`ufTd
zAw+U47E4o8lX+`v>*eKz!$FArJU>5gZf=?%A0IzIKRFzP7y=Z<W~^x`Eg?n$wwgaw
zI2MFZT0+P_llJ}nont|WA%L(<T0)E_Ez*|K5@MwC_+5o#K?uuZLdd^KT7FMUi1DNa
z91B8>0;MIyNWfM~O9-VU|1VrF*Uin%+}s?8LKbO1RX7&%5EmC$QBmP=I1&;PqSXJ!
zy1cwxSy{QhzK+P>laY}Tr9S`Q)G%quH>9Mb3=9mw+tbt2gM$OKK;68&JVj9=J59Vv
zB$Af%Ar<ZI?J#y?VnP@z&yB*Hgh@-jp}4phNxQtfyuZI6s&cm5?Fe4H!6pjkrKKg*
z&tmW3;2>0gczCF+tP}@qY-}L0gDw$x`t0niXt!FeH8nMO#e1BB6PdJ>mi$a^ZZ2N;
z_Vz-}2$XJYY`nO*@Or%v402+@+1J-6_GV^g;?-uep$C`@KYMz5Mn*<XPEN!D9UUEL
zyt=xAmMJRYLO8|kc0WBm;ll#m;u6?3K0Z!q<%H5ogb2X<`}<G_K-bRBPAyuYSyfdP
z1cQf~w@#;1Y_6@X&CJX=9FF7TV{B$+Wx-hZ9AqOv#-gj<-d@o&{(#!rS_q8Gu{@SB
zY5DY69^e&<+wjw&C`zEikTy0pRy)P-_xpT4?MQ6mgFx&RF}}FC7}S4!d^}2S7_Rk<
zZXs=Ydb-Es(GKHHA_@E%qg<SypJ!)hho26Jou8kNbQQh@#UKJR@N{fym902MALF7O
z-ikL`w}B-wZxWWr<cA_z$fl>cxw*Q!8g65miW<12q$D*pHE6-9pUv=l1&~=Qh5;&S
zESvx4L=u7WnDZeIPz6bg(A(YJ)$c_B3S-@Fx3+@S$6zRF15-DUySqD45-%()guhof
zL6S&o`XbVBbaVu@T3TAHR;zxm&1MrNwALcNq0u%2OIdx3cpOz)S{l?Xq(#i?+rxBA
zA`8o7iGV-T)6-pDU8AF;J3BjY7>$XEiHP5^u`!Rw1EtH#%HS>D{89-@+HX@=ydEAN
z*45SF69JpB6uFJl(Jgl2qAr)q>2xCD(X-gKy1MH3`?;p&nwI>)_VzZ^ZEbD+ts)wI
zKA)JQsi~>9wzi?6A-spf-QC@jlaqg09xIB{-{0S*qOD^!pNEHs(Q`pTfp*29A5QWn
zk*7S4ZfIx-^Ti;EAUQcXLQZ|VsA>OOw+Pa-w6t$~K&mGtCBfKGPr^vVLD>~uUtdpY
z2{DkgERP8>Sb0oo2{9OymJp*QZ4@6262kJB5JG7QAzafEV$7s9aTEw)(h@?rrX_@E
z(#FKZP+CHaf(aBA6>%U4F$#r+h0%!F_4W0$v$MCiH;xD)(qge#>~?#3dHEj!1^}BS
V?WS+$cKrYV002ovPDHLkV1my|Rbl`D

literal 0
HcmV?d00001

diff --git a/res/drawable/caution.png b/res/drawable/caution.png
new file mode 100644
index 0000000000000000000000000000000000000000..eaef534254f1b5feef517949b559f5653b81fcba
GIT binary patch
literal 1100
zcmV-S1he~zP)<h;3K|Lk000e1NJLTq002k;002k`1^@s6RqeA!00009a7bBm000XU
z000XU0RWnu7ytkOAY({UO#lFGm;eBCjsO7S#Q*?=;{X79^#B0W*#H1E7ytko<{(Ko
z!T<mR(n&-?RCwC#o6Tz!F&KxRq;A{&(xtGMDzZWsY%dk*sh3{7=pU>XFTM0)1qJb-
zAeG807Nkh4=!)^sjMQ}}lbs}!Y<FJhp_@$d&TpQ1^YxBUN>N+BiCUmqpjx0>pjx0g
z6i5hBnG;H>bzmE4>z~enmqLh9g+8PykWy*~7~~Wm2_X&_Rv@L+0N5$0b|{26S~!7}
zQVrk{&?u-n1|AC`#xVqv5#!&`LL79R;X(yzrBoYuU@1^W(NiJB`9i#61%a6u0XrFi
zG(8VXUj8H$MJdIg%}Cd#AA=m}2})5a1Z^hLMtTH!q9+(d(Sx*7Y8P1d)Z9o2ad2e>
zQcCrKy`19Tz#Cu${M5g7fIGlVL$murh?A=#&>qmw5$8GZKIhVVz(!8li4bCc?t`?Z
zr=L@NY!C<F6>yeQ*4J$ZwJJujEkoIdf@^;PpG&r#zCZ=^a4F`P?7N{XI7KodJ=Rl^
z3i_yCAPahIZr-L&P>Mnlv~5wR<*Cm0TnVJNQhOFv+ZJ^?7Ik{M&$%JUcD;0?pnL^b
zjk!jXf#_*lR__$}u&PC}v33ZGWJG#w2x$V>Vy^UMM0zrTRvZI#P>N(kdb0kTjzK&q
zMbaZZ!;&{-x~5yEJ?%?60_j7*vNPI_XMzB>v`@(pWP1oW&90Y>PbTwr*eE^G<Kj#+
z$B!1U?DEijP$VPMlRfR#oH>wmY<Cz{AP@AQDQS8b;)75mBh!<u)|(~QV8JPpk?Apw
zRvk}mJ5l69(3S^!O!FOI0=Y~<$_b<o0e$A|bf%1K%O2YwYM(13$oHbKHQ`IsBb`n@
z%aZi?-d1Q#1nOphb>g55MKS?;&|4ZU&qKTy-(>>yOdIOEfdrbFBAEa^(}wzXz<xG^
z2&9zi1)?XjzV@d@@m{qnMLlb@ZIc%a2?##ziw@Y`!2SG}_~4Y?QINheul7&+jH^JQ
z=~2K(;G6z`P5)I!QE7oHpyvnh4EQt=8}AZ6d*d%fF8M)QfysF>Ar4$5R=oy}0t-}l
zZ?a(I>IZ(cPBG^Qz0+a^8##*-A7n&&0KRI9^6czVT#7=Gj7Sd!;$-EazZo@BWFn}F
zPmqdc%q`3Zi{7?F$_Ui2z_GQ0er_|{*}TgverACh6*#s8+-LgP*nsLjq-&VA8Dd*k
z&$Ev8sJ5h^=&cl{+bIYH7bmD2DXvFMuh@vivC+({c`kAc_bQ4-F>MU&>(_g>wV0kC
z>|SA!#=wCP;>2aKnjH|XW0$!)4|b|wtGC(r_%jPsTP;v6P%Tg`P%TjM_GbVQLzTy8
S@WfmI0000<MNUMnLSTZWeCb;N

literal 0
HcmV?d00001

diff --git a/res/drawable/dialog_top_dark_bottom_medium.9.png b/res/drawable/dialog_top_dark_bottom_medium.9.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf7ecaf1ea64435bad70e7513b4e1c3d5a19a21a
GIT binary patch
literal 1574
zcmV+>2HE+EP)<h;3K|Lk000e1NJLTq001-q003$T1^@s6^Zasb0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%$Vo&&RCwC#oXt<`Mi9VvZ6_`%G<l>d
zNG%_Ns2q?uJVcM2+CQbIs?baS0j@nk)l>fndT&o$5xpP|v?1c7PvX!}D9}7R{^)MH
z&YLW=Yv(nNdD5;laz31$`FUn`*N%2*9LFTjMkyUo!1U2v^+6z}JoE3!c-l}`o3l6>
zVCWF<=?DyurT*e!ARP@1W+*&T&39>l7yx#RC8!wm87qM@f@BdH7K4&uWB{FzG%zP6
zPcX5-(Lz2~fsquDNO~P1pT~$NwH{J=#L6ftFro;tSTa0|5X4h)TFA*)-3CV6h^XLX
zC=5oH5D_Z%5h(`=Fl<8z4q9U3GN~|`WKv~PXY$d~($f6#@$on9cKava_g}>$YP>Jr
zC-0l<;JSp)s<5FVY$^#G2QFNXMFL7ZAj8y{e8^;WZEbDI^Ss~VoEz7{b#a|ScMXBE
z0aTBrH?fLgTh134QoSp(u&^+3dV2b^>$=M)Cnw#5g9GpI@X)`$zK%vQi_Xr@S{oZ1
z<;~4acXf5O#GuYrR#v{axVY%BuLCAsDHJ1l(2#*(4mbd&C(UN_>*eL;Z#m4~-rmF2
z)m50s@?dUm&fePEn&ePtXJ_9v8jbG-Ocy`}QttJDEX4>Xdx^u9>-G9){Dl4e{Z3vm
zyz#!d4*pu`EQ1SdO9RiqNa|>YYYV_|50xvG$_hWJ)oKNKFX9p%LT4En4WX_5iPljJ
z*%k)G8c$F%s+`faM2FB>Muu_=fc0CJkn01H;#wID)!LA=QYKYff-0(&kQ}1e^2*Yz
z6l5<s1p+w=?>t#6S}8D=G#3@=A#9mNv*Zv_gq>X=kgW(eGHedXVOM0xsl1aZhlt{~
zp{Rzf<VltsBAWZ5qC?J7+##n93Mwzr0)eQ;J41z>++mR+M^kLnh8)p6-6_gLY0oJ#
z<q&xWFuG|)2}GZX(f<dQl7jOhw`4Ow2FL&zpf^DBKWxTB2FL&ncPGgIm1b=yu$`S9
z;~@iNfDDiUGC&5%02v?yWPl8i0Wv@a$N(8217v^<kO4A42FL&zAOmE843GgbKnBPF
z86a_#w<f=9t#7}Tb^>_+9E>Ju4zRM47Yr3=jU+4O$MCbLK%j`|OBN`Bu$l%D(qR!E
zlI=jD(sBrHLJtcB3W>T5!B8Qm+xkE5kc%{4(uN#X8lbmT`SJ1bPkxf?y1CC^i4LJN
zAcK3qBbBGDlwon8zCpX)zTjV0DwW)~uO&K!PI*JSa#~S&2rJmoZM9m*{G^$gnF-c%
z+wsNw<~sOmp|eY#?$F1;`sD}Ez28jU6T)j4y#E1fmzS46R;$%d9v&XLH#axl-QAt<
zd0sTCFk^j}r>Cdg$;rtQ>-&%S`S~yZW{pQ5lYf}J7UB!gfpC<8V6}^+NCXF(5KxtR
zy<TfJn?KZQwU6@*x!c>@SB*yFD;9FM0)$IPz<A_MDT00(0$x}G0wuLaWG_8|nwpxb
z?(Xh>zP`Txa&d9-Q|7oAqkv$J`0M=q{I{c{qhGhTw|}|6zrRz!$ll=+V?grGVi_t4
zzeFa4xI)U{cMf^F5fJ8Q0Isqx4E2QJ9RLEu48q8H)dO;XBC4271A=c=PK@#uFm?)1
zsDVlVItq_q!*=iJNFy9Ylv<)AiY!GEgFFNV+vbc-2N0?Y0A2$?UkWef1nZ<stQ3KP
zK#37a&e<T;Y=UnWO$-UaMG1iieBd!(@=lO8u{xS{9IPgRc?Vuy=oM_wwrZg%7bXf2
zj|D(N-5jLy5O%u|Ad_xlfT{`;w#_+KEU!WZSODIK;M`0e!YYEr(kfd8ly@m9_+6}9
z`Zy`Kx{>1Q!U1F4#lEz+5Ln1zRrjFM=TMGK`Dnn&cps0|(22<S3+AOh-_V5|CF-hs
z<1A^Yd(M#wNC$?6WS&JQv%LTBLs5mz8B&?-sk|R=W$JsNwCURvZXMTF(YGn``mX>3
Y0I&?vnCT{+761SM07*qoM6N<$f~r*2p#T5?

literal 0
HcmV?d00001

diff --git a/res/drawable/ic_dialog_alert_large.png b/res/drawable/ic_dialog_alert_large.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d4a164a78de6e70dfafc70c7e5820601ac6db8d
GIT binary patch
literal 4089
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

literal 0
HcmV?d00001

diff --git a/res/drawable/ic_dialog_voice_input.png b/res/drawable/ic_dialog_voice_input.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2891413227855950e6113ec64319a4b8e49c468
GIT binary patch
literal 1040
zcmV+r1n>KaP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#vPnciRCwB~S4%H*K^UG^gCLv;LV`3Q
zV&`;aM=fj!T5(zG`33%h?<e>LW$6+<AyyWxjl`<8khmtr!d)71kIVNw=R1}9IGs6o
zlj)q!yz@TKyfgF8JD#_<H=!a=Pft3k5K1RX&_OMMvWj9B78a&d?0RGb031Ozj-m^9
zLIRT@GW9J2cXxMwpU)S~Gh0<jJU>4hB_$<kWdfKrT}^OJ{ElQ$40ywo60lt!m085B
z#KpyhRoB+m3V2I}i1GiDd>{a~hhQisvvPBDBQ`cRG63g{G8hwSYirZW%F2WS@i3Od
z{6ygF?98ueT2jUB>+9>Ohlhu*?(S~7R;;Y7XvM|F@%Hw1m5rK#1Zrw(tUck)wgOyf
z%`sR2Je&om@SAPyQxMI@67K}AuC5|3c6$PVpLVp}mQb`2v@!n?C@n1==TfK^Cvjtg
zm==NU?QI<m`cJ{XK|&|CucD$Nq#BO105Wh@A+{Gkoo*tEjDQ;<whx1Xze&I)iJ<TG
z^;N31v$JE>EiEll0<@Q_FB7lIhC#?RPEJk?eisxJI2vOgb*RfRDz?3fN5<^w>6yB}
zzZVFjj=_q3)S)iN{2GDk>S`;*o}Qkjd3-J}FF%D`wy}>o{Le8;1Q<SLN|lwBV>Ehj
za4^jq5U!46oSqY&b+)mOI&9+@nO$OgQmItDp`k%`5;C{9w*ly-mzI`djg5^VTqdHZ
zsK`pY9v>fdTxR0%@X+k*>kA(p9r>{Y(u)mx2_IOm*4Nj|2xwT}7y!Bmu(-H5ftilw
zq-k{fbbo*U1avfj$1p?b#YSw8X_`7Di9xD)Ubw2ND(zs<k1D2;Kf<E|-Va#$z}nhc
zvbnk0P14D%W*W<ouyYBfa04h2RRddFTd9tYj)2$R-IFStF{eaO;yD2*X16JgCl*f4
zpAQ+)^73*VX;n~`+u<H3d+U2}aL~hgVPU~C(%Ra}-7n20k<KN0dwaY1{~Zk(jj_AC
zn}iWfau=8Y4(GOIiEM6e(i5S4<AK5K$@nrUou8lQ@rq$T<g>wqa?+u1+<rZMDSLZ+
z+%Mswp&`>TEuWj4i@=RhlE@eL-N?(!iv^D5GlqwUr=$-PkO(2jM4OtLwDR)uAAw(A
zUyJ?y{S1N?!Q~H=tjx~N@=Qk&(}Q(&bwV*td^qRF$H(IQ{G3PC7#SH+f12gW%*>4S
zI0XTnJDeVI@(O3m!jl35*5h<^bo6_V(=Uj)dY%JV>3RNFfB^s~l&09uu{kUN0000<
KMNUMnLSTXrr0A6Z

literal 0
HcmV?d00001

diff --git a/res/drawable/ic_dialog_wave_0_0.png b/res/drawable/ic_dialog_wave_0_0.png
new file mode 100644
index 0000000000000000000000000000000000000000..9c3c28f37b79a696820fd971b3c660a94e9b31ef
GIT binary patch
literal 8471
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
FV1l7w^|1f|

literal 0
HcmV?d00001

diff --git a/res/drawable/ic_dialog_wave_1_3.png b/res/drawable/ic_dialog_wave_1_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..d33bd0d9b534cb7107c8a770b57891349157ec59
GIT binary patch
literal 9017
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

literal 0
HcmV?d00001

diff --git a/res/drawable/ic_dialog_wave_2_3.png b/res/drawable/ic_dialog_wave_2_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..5094a6e6cb600b90562c1d638255e1fe9a5bba21
GIT binary patch
literal 9614
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
Ef(3&1-2eap

literal 0
HcmV?d00001

diff --git a/res/drawable/ic_dialog_wave_3_3.png b/res/drawable/ic_dialog_wave_3_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..69917564d785326f846563c46a09074d809f6004
GIT binary patch
literal 10089
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
LNkvXXu0mjfjKUS#

literal 0
HcmV?d00001

diff --git a/res/drawable/ic_dialog_wave_4_3.png b/res/drawable/ic_dialog_wave_4_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..af5a84c31a40b52848a7ebfd210d3ef2db3bd74e
GIT binary patch
literal 10514
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
U6Do96)&Kwi07*qoM6N<$g0@KcX8-^I

literal 0
HcmV?d00001

diff --git a/res/drawable/mic_slash.png b/res/drawable/mic_slash.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b0fb5803a1afb80f5c02d58545d5c94e20144ca
GIT binary patch
literal 3098
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

literal 0
HcmV?d00001

diff --git a/res/drawable/ok_cancel.png b/res/drawable/ok_cancel.png
new file mode 100644
index 0000000000000000000000000000000000000000..0601d3231778e967cd376e048aa0f515a75ca1d0
GIT binary patch
literal 8453
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

literal 0
HcmV?d00001

diff --git a/res/drawable/speak_now_level0.png b/res/drawable/speak_now_level0.png
new file mode 100644
index 0000000000000000000000000000000000000000..abc84546625390f4d40e47b341519a8bac3782e9
GIT binary patch
literal 3263
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

literal 0
HcmV?d00001

diff --git a/res/drawable/speak_now_level1.png b/res/drawable/speak_now_level1.png
new file mode 100644
index 0000000000000000000000000000000000000000..67cb235bf22327b93e6c95e29bb611a8a72cc95f
GIT binary patch
literal 3572
zcmV<Q4GZ##P)<h;3K|Lk000e1NJLTq002k;002k`1ONa4|Kxkj00009a7bBm000XU
z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+<Lqi~Na&Km7Y-Iodc-oy)XH-+^7Crag
z^g>IBfRsybQWXdwQbLP>6p<z>Aqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uh<iVD~V
z<RPMtgQJLw%KPDaqifc@_vX$1wbwr9tn;0-&j-K=43<bUQ8j=JsX`tR;Dg7+#^K~H
zK!FM*Z~zbpvt%K2{UZSY_<lS*D<Z%Lz5oGu(+dayz)hRLFdT>f59&ghTmgWD0l;*T
zI7<kC6aYYajzXpYKt=(8otP$50H6c_V9R4-;{Z@C0AMG7=F<Rxo%or10RUT+Ar%3j
zkpLhQWr#!oXgdI`&sK^>09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p
z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-<?i
z0%4j!F2Z@488U%158(66005wo6%pWr^Zj_v4zAA5HjcIqUoGmt2LB>rV&neh&#Q1i
z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_<lS*MWK+n+1cgf
z<k(8YLR(?VSAG6x!e78w{cQPuJpA|d;J)G{fihizM+Erb!p!tcr5w+a34~(Y=8s4G
zw+sLL9n&JjNn*KJDiq^U5^;`1nvC-@r6P$!k}1U{(*I=Q-z@tBKHoI}uxdU5dyy@u
zU1J0GOD7Ombim^G008p4Z^6_k2m^p<gW=D2|L;HjN1!DDfM!XOaR2~bL?kX$%CkSm
z2mk;?pn)o|K^yeJ7%adB9Ki+L!3+FgHiSYX#KJ-lLJDMn9CBbOtb#%)hRv`YDqt_v
zKpix|QD}yfa1JiQRk#j4a1Z)n2%f<xynzV>LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW
zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifq<Ex{*7`05XF7hP+2Hl!3BQJ=6@fL%FCo
z8iYoo3(#bAF`ADSpqtQgv>H8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X
zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ<AYmRsNLWl*PS{AOARHt#5!wki2?K;t
z!Y3k=s7tgax)J%r7-BLphge7~Bi0g+6E6^Zh(p9TBoc{3GAFr^0!gu?RMHaCM$&Fl
zBk3%un>0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4
z<uv66WtcKSRim0x-Ke2d5jBrmLam{;Qm;{ms1r1GnmNsb7D-E`t)i9F8fX`2_i3-_
zbh;7Ul^#x)&{xvS=|||7=mYe33=M`AgU5(xC>fg=2N-7=cNnjjOr{yriy6mMFgG#l
znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U
zt5vF<Q0r40Q)j6=sE4X&sBct1q<&fbi3VB2Ov6t@q*0);U*o*SAPZv|vv@2aYYnT0
zb%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KOarm5cP6_8Ir<e17iry6O
zDdH&`rZh~sF=bq9s+O0QSgS~@QL9Jmy*94xr=6y~MY~!1fet~(N+(<=M`w@D1)b+p
z*;C!83a1uLJv#NSE~;y#8=<>IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya?
z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y
zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB
zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt
z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a<fJbF^|4I#xQ~n$Dc=
zKYhjYmgz5NSkDm8*fZm{6U!;YX`NG>(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C
z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB
zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe
zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0
z?2xS?_ve_-k<Mujg;0Lz*3buG=3$G&ehepthlN*$KaOySSQ^nWmo<0M+(UEUMEXRQ
zMBbZcF;6+KElM>iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$
z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4
z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu
zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu
z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E
ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw
zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX
z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i&
z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01
z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R
z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw
zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD
zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3|
zawq-H%e&ckC+@AhPrP6BK<z=<L*0kfKU@CX*zeqbYQT4(^U>T#_XdT7&;F71j}Joy
zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z
zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot<a{81DF0~rvGr5Xr~8u`lav1h
z1DNytV>2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F}
z0009YNkl<ZXx{DGy-wRu6u|M2I8lrf>L{co3aM(OC?9GD+$xeK;=w7OVJRTd3Zb?u
zLpvabR_d!%eT{a7nUS5XJOX0)cK|s~ViVi3ol3ROMlAB<-0OSKJtjfo--<*Gia|35
z$+XciFfh<*BhL~fqCQZpp(4%(lru9k8alb?L82q)o+L&MQXk>m4_u@mc>>44@H@Tz
zftoHr%_u>-3y>Zq$Z!>rfn=8;IR?d`7!-qIPz;JeF(?N87oZXv25rmX&pRlGib03c
z^dQ+%v<p5#g5^*kPYY6PzQ8NUdcP7RsALX+J5bIX^pHS`&ts4h7N}<aRCB@6%)4tr
zf~@K8*nWjm4EP<JVfPIho-cygjF}7)&1cMRUQMwMS<mrR*Et&Gr|Rvz@2%4@m>0s(
zK#WGm%;oTWYX-AY8@4%eCRsVvp-)P|>}8r`|4<og%;-bU(QqG93u<#MJO2F%1gf-A
z(NSqr9r<iHhvndQd+iaDQ;c%7Aj=PVY?kCEE*Bkt#faNFMX{MHf@5yR=av$Dfu`DY
z5tXriv}l7dXopcTIz8qZDhdh;s>2@VZqE5AVTFn9a{Cs#5N1tX^T?@%U*yZKijVuj
zl%qLyBq%?idaSd_Hhp&Kv&{x?=sjS{zJBu*ucu11=(58e?>XiJ#~kvO9lEsK>{(&F
zz)K?Wf?dAwjqiNrGku;jPjXgo6a@-2_{kjrcl_Z8bqd~|svtobp7EOB46a|i;whPE
zK}phNk;t=1gDuW2pmR2<vq&C^ENMT3=k4}61Vjo{SfRlxJw9<^0bTHs9;-B1p+W%>
zfw?e2NkmH2(b!^-BThIQ0iAKe5qoT*QKy9HHA~(=X$sWY=aO3<zizo?pE?E7VS=($
z(73|gb%jQSY?z>V6xMNnt)nm>HfX~GXd`S;mSxtscFDPBjpcBMEJKkNr`)*U+;B>Z
zqSs~88z_au5-qy)IpC0YwsFV-eY&(*LLwFJ!k9*)NR=8*UOGmT8dZu&q{Cep6U>n!
ugNQ_)1)kW(0(m4vGNin6;(z&?9Df07pYwN8dI^sJ0000<MNUMnLSTY;Vxidp

literal 0
HcmV?d00001

diff --git a/res/drawable/speak_now_level2.png b/res/drawable/speak_now_level2.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e07f26c693c34611b03de9f7e23bc75f3cb95c3
GIT binary patch
literal 3974
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

literal 0
HcmV?d00001

diff --git a/res/drawable/speak_now_level3.png b/res/drawable/speak_now_level3.png
new file mode 100644
index 0000000000000000000000000000000000000000..31991daee2c84fcb96637102c55e1ab082949776
GIT binary patch
literal 4270
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
Qd;kCd07*qoM6N<$f{8E~%m4rY

literal 0
HcmV?d00001

diff --git a/res/drawable/speak_now_level4.png b/res/drawable/speak_now_level4.png
new file mode 100644
index 0000000000000000000000000000000000000000..7363ca892516d9c03e96b02e08b3dcbc4b1f3c66
GIT binary patch
literal 4241
zcmV;C5N_{@P)<h;3K|Lk000e1NJLTq002k;002k`1ONa4|Kxkj00009a7bBm000XU
z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+<Lqi~Na&Km7Y-Iodc-oy)XH-+^7Crag
z^g>IBfRsybQWXdwQbLP>6p<z>Aqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uh<iVD~V
z<RPMtgQJLw%KPDaqifc@_vX$1wbwr9tn;0-&j-K=43<bUQ8j=JsX`tR;Dg7+#^K~H
zK!FM*Z~zbpvt%K2{UZSY_<lS*D<Z%Lz5oGu(+dayz)hRLFdT>f59&ghTmgWD0l;*T
zI7<kC6aYYajzXpYKt=(8otP$50H6c_V9R4-;{Z@C0AMG7=F<Rxo%or10RUT+Ar%3j
zkpLhQWr#!oXgdI`&sK^>09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p
z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-<?i
z0%4j!F2Z@488U%158(66005wo6%pWr^Zj_v4zAA5HjcIqUoGmt2LB>rV&neh&#Q1i
z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_<lS*MWK+n+1cgf
z<k(8YLR(?VSAG6x!e78w{cQPuJpA|d;J)G{fihizM+Erb!p!tcr5w+a34~(Y=8s4G
zw+sLL9n&JjNn*KJDiq^U5^;`1nvC-@r6P$!k}1U{(*I=Q-z@tBKHoI}uxdU5dyy@u
zU1J0GOD7Ombim^G008p4Z^6_k2m^p<gW=D2|L;HjN1!DDfM!XOaR2~bL?kX$%CkSm
z2mk;?pn)o|K^yeJ7%adB9Ki+L!3+FgHiSYX#KJ-lLJDMn9CBbOtb#%)hRv`YDqt_v
zKpix|QD}yfa1JiQRk#j4a1Z)n2%f<xynzV>LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW
zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifq<Ex{*7`05XF7hP+2Hl!3BQJ=6@fL%FCo
z8iYoo3(#bAF`ADSpqtQgv>H8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X
zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ<AYmRsNLWl*PS{AOARHt#5!wki2?K;t
z!Y3k=s7tgax)J%r7-BLphge7~Bi0g+6E6^Zh(p9TBoc{3GAFr^0!gu?RMHaCM$&Fl
zBk3%un>0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4
z<uv66WtcKSRim0x-Ke2d5jBrmLam{;Qm;{ms1r1GnmNsb7D-E`t)i9F8fX`2_i3-_
zbh;7Ul^#x)&{xvS=|||7=mYe33=M`AgU5(xC>fg=2N-7=cNnjjOr{yriy6mMFgG#l
znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U
zt5vF<Q0r40Q)j6=sE4X&sBct1q<&fbi3VB2Ov6t@q*0);U*o*SAPZv|vv@2aYYnT0
zb%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KOarm5cP6_8Ir<e17iry6O
zDdH&`rZh~sF=bq9s+O0QSgS~@QL9Jmy*94xr=6y~MY~!1fet~(N+(<=M`w@D1)b+p
z*;C!83a1uLJv#NSE~;y#8=<>IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya?
z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y
zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB
zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt
z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a<fJbF^|4I#xQ~n$Dc=
zKYhjYmgz5NSkDm8*fZm{6U!;YX`NG>(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C
z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB
zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe
zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0
z?2xS?_ve_-k<Mujg;0Lz*3buG=3$G&ehepthlN*$KaOySSQ^nWmo<0M+(UEUMEXRQ
zMBbZcF;6+KElM>iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$
z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4
z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu
zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu
z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E
ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw
zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX
z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i&
z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01
z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R
z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw
zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD
zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3|
zawq-H%e&ckC+@AhPrP6BK<z=<L*0kfKU@CX*zeqbYQT4(^U>T#_XdT7&;F71j}Joy
zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z
zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot<a{81DF0~rvGr5Xr~8u`lav1h
z1DNytV>2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F}
z000HNNkl<ZXx{DGPi$1z6~}S#zjzoM+cCDmGX#O^+B5bHcnoH+u@j7AjEzySU1*Xb
zY#FIi(y&1xQllt|$SP!!LMwGul0D0;XjCP{D-uPKsL}<C2+14Fre2~fK3zDCW(M=-
z%`}ECe9!Ja>Avqf_q=z0=iIl+rvES7v;njM^pt@br3@P}V#KhN#-|Ask@*QF*D@kc
z2dM66&lK9Qx+e>?S%o@B9dq1-Nhf}?NfVAcX3PtsHa{7l%_`NX^MYAtyyC2L=FFQn
z=bW=%amH_)G9;o}#rgwPs`ae21%GhSTi*7L_q^|Y?|H}D-g40ezjsbTgJ()dDix?k
zlVACrzxuoH{NRBHegr>y;DH}}=O6y&k51dALG^kAZL!mU6~)Fw|I{y5`Wshj1Z~x6
zO1N>{uWc<gxJv`7@T|SAgarCfT2rY}RBA|Xv)`XW0)1@1Z7SCns71ePA%U*x*RsAq
zRazY^0qCGsRU1GXKpQ|CKpQ|CKu-~9RYBK^s8y{}bs0d_IcwCYET)fw)lZFjt>Six
zX%<zhtwf+UwW79(*(I)3y_#T!6y%*64W6^lun~iL?9iyaM4)z!+VvPTV#q$vX;2g7
zr6B)A#U1n)|Hi*ulGbi#i9kEW>~+aK-1lew;-W!53JTyRNtbhE`>alTWL*sjbXC?K
zon}4!dG4~Lrl3F%DtOxT`#eu0XLLH~<IocJpiUVd=FEMrUz?ipfMSMxnX}lZ1|{|9
zcrAEb)-P$$r#W+98WJlPDDHW;au)l_Q9UwFhXgt;qsLKS<;>mkym+}l?FAnC#)P!J
zra}~oteCP_+JtWkJk(wuP_;H$pX4mIY*t3MBW{NPy6uQ=8MBsiW<QbD7F1vdl|0Qd
zKFGVt1p|@}xD*2Dk^_<kT*#aKKt^*=X%t*GC(Pu$vfMN-rN>xNAKf;lN6NUHc@_VR
zL~wZ>+*sIc%$>ZrI4dim&s^R{6pm$c`XpqX&5O4?#_YDG++0>;yR7SZx4LP{J_%V1
zk40LxAS+>?sXYI1UDo!XkPZf_)F^2>?-?JuVpK{()=R#~+tAhPUwBDYLdvKsdDmA=
zOKJ=*u7kx#MBK0&1<(J6BT~Bb8nNIrcP)8n$z7jWFrrtNlq23K@Zk-^;v&HUq?jOU
z(ru>TyR+<qQN6k(WegfM;e-jJ24y65={4#?0nUmU-NAV*j6jQs8F(bWFZ;+z1JV)_
zy7fru(Jdh%ZNNz%JrZG84Tu%<PjLxbr9p@BycDt;D~nz?>99U&J-YQs>vPzo*DXF0
zTelq3p`o~-E#Abdu}#V;OKbEI7rpCcCyhI1+(|EccMTZsIwfUWurv!R@+(B_(C7SP
zUh@@87A;z|^q3sCY(bwLB4OHl;reD#asAG(;ickZ$$1CFMZ@*d!u4LO)QQ_~+SeuG
zd~I5vxH?tg`mtf#!BwJmNE>%8l=xWP%xlJ_?GO!%6TVQ~tjZQGIt-X`qbSsh8)gjX
z&|*t?oYE@S3eRW|({0$a>+Y<Hwc?KJrVZ;BEB(Bq)J}eth$e9fS;x)0lBWjlxMJRM
zSqX7XBBl7I-1D+ks0M9144bo<1GH$)unuh+%7H2WL~*s|Z`A2T0niDZ8pG7^zZ_77
zYPF*3wdyui05qjrt9ntjPvQXYzcCcEN0(kl%@+X8JE~WgJz`HHhAKp~=yb@qX|H<C
zn*~5`dd;h*jXR`MOSp7VK2WtLoo0NyMglENyx*G9sj1X6#nOOk#T@c|$S?Kx4vDE<
zPoOP!d$EK}_F}Ob<Cg#$D*<S1y@6`Q9d<7y&OL|4*LTZmG)ubZeh8fVE=p<+uEPHJ
zBhIMpl7>v0b;fVkv@>Q+8j`d<tSl@4!&oh<*-jl2dLC;D9d>FKRlVNHbv27cMAh4>
nVNKhrUR0#KjJEO1S26n!gZo0^_ADzf00000NkvXXu0mjfO#}Xl

literal 0
HcmV?d00001

diff --git a/res/drawable/speak_now_level5.png b/res/drawable/speak_now_level5.png
new file mode 100644
index 0000000000000000000000000000000000000000..9034908f475a4006dad1bb7841a8818a5857947b
GIT binary patch
literal 4252
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

literal 0
HcmV?d00001

diff --git a/res/drawable/speak_now_level6.png b/res/drawable/speak_now_level6.png
new file mode 100644
index 0000000000000000000000000000000000000000..3eaa9bdad585b60c4a177a01fe574b28bb6c8ac1
GIT binary patch
literal 2201
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
b@9FkGl_8N?n0pY+00000NkvXXu0mjfoMRX$

literal 0
HcmV?d00001

diff --git a/res/drawable/voice_ime_background.9.png b/res/drawable/voice_ime_background.9.png
new file mode 100644
index 0000000000000000000000000000000000000000..67802492aa3799dd0cdae8de0ac60ad7c8c3b639
GIT binary patch
literal 20661
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

literal 0
HcmV?d00001

diff --git a/res/drawable/voice_swipe_hint.png b/res/drawable/voice_swipe_hint.png
new file mode 100644
index 0000000000000000000000000000000000000000..bb88732510de9ee07ce4b8ad22c41b43b3d57424
GIT binary patch
literal 3111
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
B^}_%F

literal 0
HcmV?d00001

diff --git a/res/drawable/working.png b/res/drawable/working.png
new file mode 100644
index 0000000000000000000000000000000000000000..6246a6d1cbcf1afabfa9af3dac348ab72100cd54
GIT binary patch
literal 33111
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%0DI`JCSpKHWaCd8|O
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
Hu0mjfS#WwD

literal 0
HcmV?d00001

diff --git a/res/layout/recognition_status.xml b/res/layout/recognition_status.xml
new file mode 100644
index 0000000000..ea23824a16
--- /dev/null
+++ b/res/layout/recognition_status.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* 
+**
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
+**
+**     http://www.apache.org/licenses/LICENSE-2.0 
+**
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
+** limitations under the License.
+*/
+--> 
+
+
+<LinearLayout 
+      xmlns:android="http://schemas.android.com/apk/res/android"
+      android:orientation="vertical"
+      android:layout_height="wrap_content"
+      android:layout_width="wrap_content"
+      android:background="@android:color/black"
+      android:paddingBottom="0dip"
+      android:paddingLeft="0dip"
+      android:paddingRight="0dip"
+>
+
+    <LinearLayout 
+       xmlns:android="http://schemas.android.com/apk/res/android"
+       android:id="@+id/main_image"
+       android:orientation="vertical"
+       android:background="@drawable/voice_ime_background"
+                 android:scaleType="fitXY"
+                 android:layout_width="match_parent"
+                 android:layout_height="180dip"
+                 android:paddingBottom="2dip"
+                 android:paddingTop="2dip"
+    >
+
+    <TextView android:id="@+id/text"
+        android:text="@string/voice_initializing"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:layout_marginTop="15dip"
+        android:textSize="28sp"
+        android:textColor="#ffffff"
+        android:layout_gravity="center_horizontal"
+    />
+
+    <ImageView android:id="@+id/image"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:layout_marginTop="20dip"
+        android:layout_gravity="center_horizontal"
+        android:src="@drawable/mic_slash"
+    />
+
+    <ProgressBar android:id="@+id/progress"
+        android:layout_height="60dip"
+        android:layout_width="60dip"
+        android:layout_marginTop="20dip"
+        android:layout_gravity="center_horizontal"
+        android:visibility="gone"
+        android:indeterminate="true"
+    />
+
+
+
+    </LinearLayout>
+
+    <LinearLayout android:id="@+id/button"
+        android:orientation="vertical"
+        android:background="@drawable/ok_cancel"
+        android:scaleType="fitXY"
+        android:layout_width="match_parent"
+        android:layout_height="42dip"
+        android:paddingLeft="1dip"
+        android:paddingRight="1dip"
+    >
+
+    <TextView android:id="@+id/button_text"
+        android:text="@string/cancel"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:layout_marginTop="7dip"
+        android:textSize="19sp"
+        android:textColor="#ffffff"
+        android:layout_gravity="center_horizontal"
+    />
+    </LinearLayout>
+
+</LinearLayout>
+
diff --git a/res/layout/voice_punctuation_hint.xml b/res/layout/voice_punctuation_hint.xml
new file mode 100644
index 0000000000..629a7f2b53
--- /dev/null
+++ b/res/layout/voice_punctuation_hint.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* 
+**
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
+**
+**     http://www.apache.org/licenses/LICENSE-2.0 
+**
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
+** limitations under the License.
+*/
+--> 
+
+<LinearLayout 
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@drawable/keyboard_suggest_strip">
+
+    <!-- TODO: Use dark mic icon. -->
+    <ImageView android:id="@+id/image"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:paddingLeft="8dip"
+            android:paddingRight="8dip"
+            android:layout_gravity="center_horizontal"
+            android:src="@drawable/ic_suggest_strip_microphone"
+    />
+
+    <TextView android:id="@+id/text"
+            android:text="@string/voice_punctuation_hint"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:paddingTop="2dip"
+            android:paddingRight="3dip"
+            android:textSize="13sp"
+            android:textColor="#888888"
+            android:layout_gravity="center_horizontal"
+    />
+
+</LinearLayout>
diff --git a/res/layout/voice_swipe_hint.xml b/res/layout/voice_swipe_hint.xml
new file mode 100644
index 0000000000..4e8859a71e
--- /dev/null
+++ b/res/layout/voice_swipe_hint.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* 
+**
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
+**
+**     http://www.apache.org/licenses/LICENSE-2.0 
+**
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
+** limitations under the License.
+*/
+--> 
+
+<LinearLayout 
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@drawable/keyboard_suggest_strip"
+        android:gravity="center_horizontal"
+        android:paddingTop="2dip">
+
+    <TextView android:id="@+id/text"
+            android:text="@string/voice_swipe_hint"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:paddingTop="10dip"
+            android:paddingRight="6dip"
+            android:textSize="13sp"
+            android:textColor="#888888"
+            android:layout_gravity="center_horizontal"
+    />
+
+    <ImageView
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:src="@drawable/ic_suggest_strip_microphone"
+    />
+    
+    <ImageView
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:src="@drawable/ic_suggest_strip_microphone_swipe"
+    />
+    
+
+</LinearLayout>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 078e3001e9..75bdda1524 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Základní"</item>
     <item msgid="4894328801530136615">"Pokročilé"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Uloženo"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"áàâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"éěèêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ňñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"čç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Podržením klávesy zobrazíte diakritiku (ž, á atd.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Stisknutím klávesy Zpět ↶ můžete klávesnici kdykoli zavřít"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Přístup k číslům a symbolům"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"Alt"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Hlasový vstup"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Pro váš jazyk aktuálně není hlasový vstup podporován, ale funguje v angličtině."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Hlasový vstup je experimentální funkce, která využívá síťové rozpoznávání řeči společnosti Google."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Chcete-li vypnout hlasový vstup, přejděte do nastavení klávesnice."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Chcete-li použít hlasový vstup, stiskněte tlačítko mikrofonu nebo přejeďte prstem přes klávesnici na obrazovce."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Mluvte"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Probíhá zpracování"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Chyba. Zkuste to prosím znovu."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Připojení se nezdařilo."</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Chyba, řeč je příliš dlouhá."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Problém se zvukem"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Chyba serveru"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Nebyla detekována žádná řeč."</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Nebyly nalezeny žádné shody"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Hlasové vyhledávání není nainstalováno"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Nápověda:"</b>" Chcete-li aktivovat hlasový vstup, přejeďte prstem přes klávesnici."</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Nápověda:"</b>" Příště zkuste vyslovit interpunkci, například „tečka“, „čárka“ nebo „otazník“."</string>
+    <string name="cancel" msgid="6830980399865683324">"Zrušit"</string>
+    <string name="ok" msgid="7898366843681727667">"OK"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Hlasový vstup"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Po hlasovém vstupu automaticky odeslat"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Při vyhledávání nebo přechodu na další pole automaticky stisknout Enter."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Otevřete klávesnici"\n</b></font><font size="3">\n</font>"Dotkněte se jakéhokoli textového pole."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Zavřete klávesnici"\n</b></font><font size="3">\n</font>"Stiskněte klávesu Zpět."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Přidržením klávesy zobrazte možnosti"\n</b></font><font size="3">\n</font>"Použijte interpunkční znaménka a diakritiku."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".eu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Metoda zadávání dat"</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index acefb020b2..70ba54729f 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Grundlæggende"</item>
     <item msgid="4894328801530136615">"Avanceret"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: Gemt"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Hold en tast nede for at se accenter (ø, ö osv.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Tryk på tilbagetasten ↶ for når som helst at lukke for tastaturet"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"FÃ¥ adgang til tal og symboler"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Stemmeinput"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Stemmeinput understøttes i øjeblikket ikke for dit sprog, men fungerer på engelsk."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Stemme-input er en funktion på forsøgsbasis, som bruger Googles netværksstemmegenkendelse."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Slå stemmeinput fra i indstillingerne for tastaturet."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"For at bruge stemme-input skal du trykke på knappen mikrofon eller lade glide fingeren hen over skærmtastaturet."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Tal nu"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Arbejder"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Fejl. Prøv igen."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Kunne ikke oprette forbindelse"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Fejl. For meget tale."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Lydproblem"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Serverfejl"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Der høres ingen tale"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Der blev ikke fundet nogen matches"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Stemmesøgning er ikke installeret"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Tip:"</b>" Glid hen over tastaturet for at tale"</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Tip:"</b>" Næste gang kan du forsøge at sige tegnsætning, f.eks. \"punktum\", \"komma\" eller \"spørgsmålstegn\"."</string>
+    <string name="cancel" msgid="6830980399865683324">"Annuller"</string>
+    <string name="ok" msgid="7898366843681727667">"OK"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Stemmeinput"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Send automatisk efter stemme"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Tryk automatisk på enter, når du søger eller går til det næste felt."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Åbn tastaturet"\n</b></font><font size="3">\n</font>"Tryk på et hvilket som helst tekstfelt."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Luk tastaturet"\n</b></font><font size="3">\n</font>"Tryk på Tilbagetasten."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tryk på og hold en tast nede for valgmuligheder"\n</b></font><font size="3">\n</font>"Få adgang til tegnsætning og accenter."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Inputmetode"</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index c4e7c9d589..1d821899e9 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Standard"</item>
     <item msgid="4894328801530136615">"Erweitert"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Gespeichert"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"ä"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Zur Anzeige von Umlauten (ä, ö usw.) Taste gedrückt halten"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Zum Schließen der Tastatur ↶ drücken"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Auf Zahlen und Symbole zugreifen"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Spracheingabe"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Spracheingaben werden derzeit nicht für Ihre Sprache unterstützt, funktionieren jedoch in Englisch."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Die Spracheingabe ist eine Funktion im Versuchsstadium, die die vernetzte Spracherkennung von Google verwendet."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Wenn Sie die Spracheingabe deaktivieren möchten, rufen Sie die Tastatureinstellungen auf."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Um die Spracheingabe zu verwenden, drücken Sie den Mikrofonknopf oder ziehen Sie Ihren Finger über die Bildschirmtastatur."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Jetzt sprechen"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Vorgang läuft"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Fehler. Versuchen Sie es erneut.."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Keine Verbindung"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Fehler – Text zu lang"</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Audio-Problem"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Serverfehler"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Keine Sprache zu hören"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Keine Ãœbereinstimmungen gefunden"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Sprach-Suche nicht installiert"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Hinweis:"</b>" Ziehen Sie zum Sprechen den Finger über die Tastatur."</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Hinweis:"</b>" Versuchen Sie beim nächsten Mal, Satzzeichen wie \"Punkt\", \"Komma\" oder \"Fragezeichen\" per Sprachbefehl einzugeben."</string>
+    <string name="cancel" msgid="6830980399865683324">"Abbrechen"</string>
+    <string name="ok" msgid="7898366843681727667">"OK"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Spracheingabe"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Nach Sprachaufnahme automatisch senden"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Drücken Sie auf die Eingabetaste, wenn Sie einen Suchvorgang durchführen oder zum nächsten Feld wechseln."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Tastatur öffnen"\n</b></font><font size="3">\n</font>"Berühren Sie ein beliebiges Textfeld."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Tastatur schließen"\n</b></font><font size="3">\n</font>"Drücken Sie die Taste \"Zurück\"."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Eine Taste für Optionen berühren und gedrückt halten"\n</b></font><font size="3">\n</font>"Greifen Sie auf Satzzeichen und Akzente zu."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Eingabemethode"</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 4609290322..acbe2945b9 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Βασική"</item>
     <item msgid="4894328801530136615">"Σύνθετη"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Αποθηκεύτηκε"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Κρατήστε πατημένο ένα πλήκτρο για να δείτε τους τονισμένους χαρακτήρες (ø, ö, κ.τ.λ.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Πατήστε το πλήκτρο Πίσω ↶ για να κλείσετε το πληκτρολόγιο ανά πάσα στιγμή"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Πρόσβαση σε αριθμούς και σύμβολα"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ΑΒΓ"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Φωνητική είσοδος"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Η φωνητική είσοδος δεν υποστηρίζεται αυτή τη στιγμή για τη γλώσσα σας, ωστόσο λειτουργεί στα Αγγλικά."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Οι φωνητικές εντολές είναι μια πειραματική λειτουργία, η οποία χρησιμοποιεί τη δικτυακή αναγνώριση ομιλίας της Google."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Για να απενεργοποιήσετε τη φωνητική είσοδο, μεταβείτε στις ρυθμίσεις πληκτρολογίου."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Για να χρησιμοποιήσετε τις φωνητικές εντολές, πιέστε το κουμπί μικροφώνου ή σύρετε το δάχτυλό σας κατά μήκος του πληκτρολογίου της οθόνης."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Μιλήστε τώρα"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Σε λειτουργία"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Σφάλμα. Δοκιμάστε ξανά."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Δεν ήταν δυνατή η σύνδεση"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Σφάλμα, πολλές λέξεις."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Πρόβλημα ήχου"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Σφάλμα διακομιστή"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Δεν ακούγεται ομιλία"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Δεν βρέθηκε καμία αντιστοίχιση"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Η Αναζήτηση με φωνή δεν εγκαταστάθηκε"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Υπόδειξη:"</b>" Σύρετε κατά μήκος του πληκτρολογίου για να μιλήσετε"</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Υπόδειξη:"</b>" Την επόμενη φορά, προσπαθήστε να προφέρετε σημεία στίξης, όπως \"τελεία\", \"κόμμα\" ή \"ερωτηματικό\"."</string>
+    <string name="cancel" msgid="6830980399865683324">"Ακύρωση"</string>
+    <string name="ok" msgid="7898366843681727667">"ΟΚ"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Φωνητική είσοδος"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Αυτόματη υποβολή μετά από ήχο"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Πατήστε enter αυτόματα κατά την αναζήτηση ή τη μετάβαση στο επόμενο πεδίο."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Ανοίξτε το πληκτρολόγιο"\n</b></font><font size="3">\n</font>"Αγγίξτε οποιοδήποτε πεδίο κειμένου."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Κλείστε το πληκτρολόγιο"\n</b></font><font size="3">\n</font>"Πατήστε το πλήκτρο Πίσω."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Αγγίξτε και κρατήστε ένα πλήκτρο για ορισμό επιλογών"\n</b></font><font size="3">\n</font>"Πρόσβαση στα σημεία στίξης και τονισμού."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Μέθοδος εισόδου"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index cb2f38399a..8a8ded8f91 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Básico"</item>
     <item msgid="4894328801530136615">"Avanzado"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: guardada"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Mantén una tecla presionada para ver los acentos (ø, ö, etc.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Pulsa la tecla hacia atrás ↶ para cerrar el teclado en cualquier momento"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Acceder a números y símbolos"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Entrada por voz"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"La entrada por voz no está admitida en tu idioma, pero sí funciona en inglés."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"La entrada por voz es una característica experimental que utiliza la red de reconocimiento de voz de Google."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Para desactivar la entrada por voz, ve a configuración del teclado."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Para realizar entrada por voz, presiona el botón del micrófono o desliza tus dedos por el teclado en pantalla."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Habla ahora"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Procesando"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Error. Vuelve a intentarlo."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"No se pudo establecer la conexión."</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Error, demasiado discurso."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Problema de audio"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Error del servidor"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"No se oyó la voz"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"No se encontraron coincidencias"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Búsqueda por voz no instalada"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Sugerencia:"</b>" Deslizar en el teclado para hablar"</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Sugerencia:"</b>" La próxima vez intenta decir la puntuación como \"punto\", \"coma\" o \"signo de pregunta\"."</string>
+    <string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
+    <string name="ok" msgid="7898366843681727667">"Aceptar"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Entrada por voz"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Enviar automáticamente después del audio"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Presionar automáticamente Ingresar al buscar o ir al campo siguiente."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Abrir el teclado"\n</b></font><font size="3">\n</font>"Tocar cualquier campo de texto."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Cerrar el teclado"\n</b></font><font size="3">\n</font>"Presionar la tecla Atrás."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tocar &amp; y mantener presionada una tecla para las opciones"\n</b></font><font size="3">\n</font>"Acceder a puntuación y acentos."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Método de entrada"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 0b96bea767..4977cbac50 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Básico"</item>
     <item msgid="4894328801530136615">"Avanzado"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Guardada"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"á"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"é"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Mantén pulsada una tecla para ver los caracteres acentuados (ø, ö, etc.)."</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Pulsa la tecla \"Atrás\" ↶ para cerrar el teclado en cualquier momento."</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Acceso a números y símbolos"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Introducción de voz"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Actualmente la introducción de voz no está disponible en tu idioma, pero se puede utilizar en inglés."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"La introducción de voz es una función en fase experimental que utiliza la tecnología de reconocimiento de voz en red de Google."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Para desactivar la función de introducción de voz, accede a la configuración del teclado."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Para utilizar la función de introducción de voz, pulsa el botón de micrófono o desliza el dedo por el teclado en pantalla."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Hablar ahora"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Trabajando"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Se ha producido un error. Inténtalo de nuevo."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"No se ha podido establecer conexión."</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Se ha producido un error debido a un exceso de introducción de datos de voz."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Problema de audio"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Error del servidor"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Ninguna conversación escuchada"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"No se ha encontrado ninguna coincidencia."</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"La búsqueda por voz no está instalada."</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Sugerencia:"</b>" muévete por el teclado para hablar."</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Sugerencia:"</b>" la próxima vez, prueba a indicar signos de puntuación como, por ejemplo, \"punto\", \"coma\" o \"signo de interrogación\"."</string>
+    <string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
+    <string name="ok" msgid="7898366843681727667">"Aceptar"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Introducción de voz"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Enviar automáticamente después de la introducción de voz"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Pulsar Intro automáticamente al buscar o al pasar al siguiente campo"</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Abrir el teclado"\n</b></font><font size="3">\n</font>"Pulsa cualquier campo de texto."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Cerrar el teclado"\n</b></font><font size="3">\n</font>"Pulsa la tecla \"Atrás\"."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Mantén pulsada una tecla para acceder a las opciones."\n</b></font><font size="3">\n</font>"Accede a los signos de puntuación y a los acentos."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Método de introducción de texto"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 0bb70218c2..f4834da135 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Simple"</item>
     <item msgid="4894328801530136615">"Avancé"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : enregistré"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Maintenir une touche enfoncée pour afficher les accents (à, é, etc.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Appuyez sur la touche Retour ↶ pour fermer le clavier à tout moment."</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Accéder aux chiffres et symboles"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Saisie vocale"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"La saisie vocale n\'est pas encore prise en charge pour votre langue, mais elle fonctionne en anglais."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"La saisie vocale est une fonctionnalité expérimentale qui fait appel à la reconnaissance vocale en réseau de Google."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Pour désactiver la saisie vocale, accédez aux paramètres du clavier."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Pour utiliser la saisie vocale, appuyez sur la touche du microphone ou faites glisser votre doigt sur le clavier à l\'écran."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Parlez maintenant"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Traitement en cours"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Erreur. Veuillez réessayer."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Connexion impossible"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Erreur, discours trop long."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Problème audio"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Erreur serveur"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Aucune requête vocale détectée"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Aucune correspondance n\'a été trouvée."</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Recherche vocale non installée"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Astuce :"</b>" Faites glisser votre doigt sur le clavier pour parler."</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Astuce :"</b>" La prochaine fois, essayez de prononcer la ponctuation, en énonçant des termes tels que \"point\", \"virgule\" ou \"point d\'interrogation\"."</string>
+    <string name="cancel" msgid="6830980399865683324">"Annuler"</string>
+    <string name="ok" msgid="7898366843681727667">"OK"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Saisie vocale"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Envoi automatique après la saisie vocale"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Appuyez automatiquement sur Entrée pour effectuer une recherche ou accéder au champ suivant."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Ouvrir le clavier"\n</b></font><font size="3">\n</font>"Appuyez sur un champ de texte."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Fermer le clavier"\n</b></font><font size="3">\n</font>"Appuyez sur la touche Retour."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Appuyer sur une touche de manière prolongée pour accéder aux options"\n</b></font><font size="3">\n</font>"Accédez aux signes de ponctuation et aux accents."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Mode de saisie"</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 5e3b0e3e14..94478ce88e 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Base"</item>
     <item msgid="4894328801530136615">"Avanzate"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : parola salvata"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àá"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èé"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Tieni premuto un tasto per vedere le lettere con segni diacritici (ø, ö etc.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Premi il tasto Indietro ↶ per chiudere la tastiera"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Accedi a numeri e simboli"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Comandi vocali"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"I comandi vocali non sono attualmente supportati per la tua lingua ma funzionano in inglese."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"I comandi vocali sono una funzione sperimentale che utilizza il riconoscimento vocale in rete di Google."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Per disattivare i comandi vocali, vai alle impostazioni della tastiera."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Per utilizzare i comandi vocali, premi il pulsante del microfono o fai scorrere il dito sulla tastiera sullo schermo."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Parla ora"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Elaborazione in corso"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Errore. Riprova più tardi."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Impossibile connettersi."</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Errore: conversazione troppo lunga."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Problema audio"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Errore del server"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Nessuna frase vocale rilevata"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Nessuna corrispondenza trovata"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Ricerca vocale non installata"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Suggerimento."</b>" Fai scorrere il dito sulla tastiera per parlare"</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Suggerimento."</b>" La prossima volta, prova a pronunciare termini relativi alla punteggiatura come \"punto\", \"virgola\" o \"punto di domanda\"."</string>
+    <string name="cancel" msgid="6830980399865683324">"Annulla"</string>
+    <string name="ok" msgid="7898366843681727667">"OK"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Comandi vocali"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Invia automaticamente dopo comando vocale"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Premi automaticamente \"Invio\" durante una ricerca o un passaggio al campo successivo."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Apertura tastiera"\n</b></font><font size="3">\n</font>"Tocca qualsiasi campo di testo."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Chiusura tastiera"\n</b></font><font size="3">\n</font>"Premi il tasto Indietro."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tocca e tieni premuto un tasto per le opzioni"\n</b></font><font size="3">\n</font>"Accesso a punteggiatura e accenti."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Metodo inserimento"</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 133d64f2f7..3f29eb96b5 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"基本"</item>
     <item msgid="4894328801530136615">"高度"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>:保存しました"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"キー長押しでアクセント文字を表示(ø、öなど)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"戻るキーでキーボードを閉じます"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"数字と記号"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"音声入力"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"音声入力は現在英語には対応していますが、日本語には対応していません。"</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"音声入力はGoogleのネットワーク音声認識技術を利用した試験段階の機能です。"</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"音声入力をOFFにするには、キーボードの設定を開きます。"</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"音声入力するには、マイクボタンを押すか画面キーボードをスワイプしてください。"</string>
+    <string name="voice_listening" msgid="467518160751321844">"お話しください"</string>
+    <string name="voice_working" msgid="6666937792815731889">"処理中"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"エラーです。もう一度お試しください。"</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"接続できませんでした"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"音声が長すぎてエラーになりました。"</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"オーディオエラー"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"サーバーエラー"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"音声が聞き取れません"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"該当なし"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Voice Searchはインストールされていません"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"ヒント:"</b>" 音声入力するにはキーボードをスワイプします"</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"ヒント:"</b>" 次回は句読点として「period」、「comma」、「question mark」などの音声入力を試してみてください。"</string>
+    <string name="cancel" msgid="6830980399865683324">"キャンセル"</string>
+    <string name="ok" msgid="7898366843681727667">"OK"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"音声入力"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"入力後に自動送信する"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"検索または次のフィールドに進む際、Enterキーが自動的に押されます。"</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"キーボードを開く"\n</b></font><font size="3">\n</font>"テキストフィールドをタップします。"</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"キーボードを閉じる"\n</b></font><font size="3">\n</font>"[戻る]キーを押します。"</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"キーを長押しして選択する"\n</b></font><font size="3">\n</font>"句読点キーとアクセント文字を表示します。"</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"入力方法"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index fe0da17679..1d9e0bd306 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"기본"</item>
     <item msgid="4894328801530136615">"고급"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : 저장됨"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"키를 길게 누르면 악센트(ø, ö 등)가 표시됩니다."</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"키보드를 닫으려면 언제든지 뒤로 키(↶)를 누르세요."</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"숫자 및 기호 액세스"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"음성 입력"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"음성 입력은 현재 자국어로 지원되지 않으며 영어로 작동됩니다."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"음성 입력은 Google의 네트워크화된 음성 인식을 사용하는 실험적 기능입니다."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"음성 입력을 사용하지 않으려면 키보드 설정으로 이동하세요."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"음성 입력을 사용하려면 마이크 버튼을 누르거나 터치 키보드 위로 손가락을 미끄러지듯 움직이세요."</string>
+    <string name="voice_listening" msgid="467518160751321844">"지금 시작하세요."</string>
+    <string name="voice_working" msgid="6666937792815731889">"인식 중"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"오류가 발생했습니다. 다시 시도해 보세요."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"연결할 수 없습니다."</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"음성을 너무 많이 입력했습니다."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"오디오 문제"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"서버 오류"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"음성이 인식되지 않았습니다."</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"일치하는 항목 없음"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"음성 검색이 설치되지 않았습니다."</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"도움말:"</b>" 키보드를 스와이프하고 말하세요."</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"도움말:"</b>" 다음 번에는 \'마침표\', \'쉼표\', \'물음표\'와 같은 구두점을 말해 보세요."</string>
+    <string name="cancel" msgid="6830980399865683324">"취소"</string>
+    <string name="ok" msgid="7898366843681727667">"확인"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"음성 입력"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"음성을 입력한 다음 자동 제출"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"검색하거나 다음 입력란으로 이동할 때 자동으로 Enter 키를 누릅니다."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"키보드 열기"\n</b></font><font size="3">\n</font>"아무 텍스트 입력란이나 터치하세요."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"키보드 닫기"\n</b></font><font size="3">\n</font>"\'뒤로\' 키를 누르세요."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"키를 길게 터치하여 옵션 보기"\n</b></font><font size="3">\n</font>"문장 부호 및 악센트 기호에 액세스하세요."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"입력 방법"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 28e84a504c..971bc14456 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Grunnleggende"</item>
     <item msgid="4894328801530136615">"Avansert"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: Lagret"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"åæáàâãä"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"éèêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Hold en tast nede for å se aksenterte tegn (ø, ö, osv.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Trykk tilbakeknappen, ↶, for å lukke tastaturet"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"FÃ¥ tilgang til tall og symboler"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Stemmedata"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Stemmedata håndteres foreløpig ikke på ditt språk, men fungerer på engelsk."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Talekommandoer er en eksperimentell funksjon som bruker Googles nettverksbaserte talegjenkjenning."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Gå til innstillinger for tastatur for å slå av stemmedata."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Du bruker talekommandoer ved å trykke på mikrofonknappen eller skyve fingeren over tastaturet på skjermen."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Snakk nå"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Arbeider"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Feil. Prøv på nytt."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Kunne ikke koble til"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Feil – for mye tale"</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Lydproblem"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Tjenerfeil"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Ingen tale høres"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Ingen treff"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Talesøk ikke installert"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021">"Hint:"<b>" Sveip over tastaturet for å snakke"</b></string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Hint:"</b>" Neste gang kan du prøve å tale inn tegnsettingen ved for eksempel å si «punktum», «komma» eller «spørsmålstegn»."</string>
+    <string name="cancel" msgid="6830980399865683324">"Avbryt"</string>
+    <string name="ok" msgid="7898366843681727667">"OK"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Stemmedata"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Send inn automatisk etter tale"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Trykk Enter automatisk ved søk eller flytting til neste felt."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Åpne tastaturet"\n</b></font><font size="3">\n</font>"Trykk på et tekstfelt."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Lukke tastaturet"\n</b></font><font size="3">\n</font>"Trykk på tilbaketasten."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Trykk og hold nede en tast for flere valg"\n</b></font><font size="3">\n</font>"FÃ¥ tilgang til skilletegn og aksenter."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".info"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Inndatametode"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 085d50ac91..beeb0af115 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Basis"</item>
     <item msgid="4894328801530136615">"Geavanceerd"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Opgeslagen"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Houd een toets ingedrukt om diakritische tekens weer te geven (ø, ö, enzovoort)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Druk op elk gewenst moment op de toets Terug ↶ om het toetsenbord te sluiten"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Toegang tot cijfers en symbolen"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"Alt"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Spraakinvoer"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Spraakinvoer wordt momenteel niet ondersteund in uw taal, maar is wel beschikbaar in het Engels."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Spraakinvoer is een experimentele functie met de spraakherkenning van het Google-netwerk."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Als u spraakinvoer wilt uitschakelen, gaat u naar de toetsenbordinstellingen."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Als u spraakinvoer gebruikt, drukt u op de microfoonknop of schuift u uw vinger over het schermtoetsenbord."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Nu spreken"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Wordt uitgevoerd"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Fout. Probeer het opnieuw."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Kan geen verbinding maken"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Fout, te lange spraakinvoer."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Audioprobleem"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Serverfout"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Geen spraak te horen"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Geen resultaten gevonden"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Voice Search is niet geïnstalleerd"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Hint:"</b>" schuif over het toetsenbord om te spreken"</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Hint:"</b>" spreek de volgende keer interpunctie uit, zoals \'period\' (punt), \'comma\' (komma) of \'question mark\' (vraagteken)."</string>
+    <string name="cancel" msgid="6830980399865683324">"Annuleren"</string>
+    <string name="ok" msgid="7898366843681727667">"OK"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Spraakinvoer"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Automatisch verzenden na spraak"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Drukt automatisch op Enter tijdens het zoeken of wanneer u naar het volgende veld wilt gaan."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Het toetsenbord openen"\n</b></font><font size="3">\n</font>"Raak een tekstveld aan."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Het toetsenbord sluiten"\n</b></font><font size="3">\n</font>"Druk op de terugtoets."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Een toets blijven aanraken voor opties"\n</b></font><font size="3">\n</font>"Toegang tot interpunctie en diakritische tekens."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Invoermethode"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index e3bac3d4c3..2da0207837 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Podstawowy"</item>
     <item msgid="4894328801530136615">"Zaawansowany"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Zapisano"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"Ä…"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"Ä™"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"Å„"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ć"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Przytrzymaj klawisz, aby wyświetlić znaki akcentowane (ą, ó itp.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Naciśnij klawisz cofania ↶, aby zamknąć klawiaturę w dowolnym momencie"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Przejdź do cyfr i symboli"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Wprowadzanie głosowe"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Wprowadzanie głosowe obecnie nie jest obsługiwane w Twoim języku, ale działa w języku angielskim."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Wprowadzanie głosowe to funkcja eksperymentalna wykorzystująca funkcję firmy Google umożliwiającą rozpoznawanie mowy przy użyciu sieci."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Aby wyłączyć wprowadzanie głosowe, przejdź do ustawień klawiatury."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Aby skorzystać z wprowadzania głosowego, naciśnij przycisk mikrofonu lub przesuń palcem po klawiaturze ekranowej."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Mów teraz"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Działa"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Błąd. Spróbuj ponownie."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Nie można nawiązać połączenia"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Błąd, zbyt długa wypowiedź."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Problem z dźwiękiem"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"BÅ‚Ä…d serwera"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Nie wykryto mowy"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Nie znaleziono żadnych wyników"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Wyszukiwanie głosowe nie jest zainstalowane"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Wskazówka:"</b>" przesuń palcem po klawiaturze, aby mówić."</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Wskazówka:"</b>" następnym razem spróbuj wypowiadać nazwy znaków interpunkcyjnych: „kropka”, „przecinek” lub „pytajnik”."</string>
+    <string name="cancel" msgid="6830980399865683324">"Anuluj"</string>
+    <string name="ok" msgid="7898366843681727667">"OK"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Wprowadzanie głosowe"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Automatyczne przesyłanie uruchamiane głosem"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Podczas wyszukiwania lub przechodzenia do następnego pola automatycznie naciśnij klawisz Enter."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Otwórz klawiaturę"\n</b></font><font size="3">\n</font>"Dotknij dowolnego pola tekstowego."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Zamknij klawiaturę"\n</b></font><font size="3">\n</font>"Naciśnij klawisz Wróć."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Dotknij klawisza i przytrzymaj go, aby wyświetlić opcje"\n</b></font><font size="3">\n</font>"Dostęp do znaków przestankowych i akcentowanych."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Metoda wprowadzania"</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 9ad88f3f6e..ec397b66f3 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Básico"</item>
     <item msgid="4894328801530136615">"Avançados"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: Guardada"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Mantenha uma tecla premida para ver os acentos (ø, ö, etc.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Prima a tecla de retrocesso ↶ para fechar o teclado a qualquer momento"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Aceder a números e símbolos"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Entrada de voz"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Actualmente, a entrada de voz não é suportada para o seu idioma, mas funciona em inglês."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"A entrada de voz é uma funcionalidade experimental que utiliza o reconhecimento de voz em rede da Google."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Para desactivar a entrada de voz, aceda às definições do teclado."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Para utilizar a entrada de voz, prima o botão do microfone ou deslize o dedo no teclado do ecrã."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Falar agora"</string>
+    <string name="voice_working" msgid="6666937792815731889">"A executar"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Erro. Tente novamente."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Não foi possível ligar"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Erro, discurso demasiado longo."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Problema de áudio"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Erro no servidor"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Nenhuma voz ouvida"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Não foram encontradas correspondências"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Pesquisa de voz não instalada"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Sugestão:"</b>" Deslize no teclado para falar"</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Sugestão:"</b>" Da próxima vez, experimente dizer a pontuação como \"ponto final\", \"vírgula\" ou \"ponto de interrogação\"."</string>
+    <string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
+    <string name="ok" msgid="7898366843681727667">"OK"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Entrada de voz"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Enviar automaticamente depois da voz"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Premir automaticamente ENTER ao pesquisar ou avançar para o campo seguinte."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Abra o teclado"\n</b></font><font size="3">\n</font>"Toque em qualquer campo de texto."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Feche o teclado"\n</b></font><font size="3">\n</font>"Prima a tecla \"Anterior\"."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Mantenha premida uma tecla para as opções"\n</b></font><font size="3">\n</font>"Aceder a pontuação e acentos."</string>
@@ -93,6 +110,7 @@
     <string name="popular_domain_2" msgid="3036812463748402878">".org"</string>
     <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string>
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
+    <string name="inputMethod" msgid="1653630062304567879">"Método de entrada"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 895a1be012..64042b30b1 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Básico"</item>
     <item msgid="4894328801530136615">"Avançado"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Salvo"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Segure uma tecla pressionada para ver os acentos (ø, ö, etc.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Apertar a tecla voltar ↶ para fechar o teclado, em qualquer ponto"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Acessar números e símbolos"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Entrada de voz"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"A entrada de voz não é suportada no momento para o seu idioma, mas funciona em inglês."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"A entrada de voz é um recurso experimental que usa o reconhecimento de fala de rede do Google."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Para desativar a entrada de voz, vá para as configurações do teclado."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Para usar a entrada de voz, pressione o botão com o microfone ou deslize o dedo sobre o teclado na tela."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Fale agora"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Trabalhando"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Erro. Tente novamente."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Não foi possível conectar"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Erro, fala muito longa."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Problema com o áudio"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Erro do servidor"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Nenhuma fala ouvida"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Não há resultados compatíveis"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"A pesquisa por voz não está instalada"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Dica:"</b>" Deslize sobre o teclado para falar"</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Dica:"</b>" Da próxima vez, tente falar o nome da pontuação como \"ponto\", \"vírgula\" ou \"ponto de interrogação\"."</string>
+    <string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
+    <string name="ok" msgid="7898366843681727667">"OK"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Entrada de voz"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Enviar automaticamente depois de falar"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Pressione Enter automaticamente ao pesquisar ou ir para o próximo campo."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Abra o teclado"\n</b></font><font size="3">\n</font>"Toque em qualquer campo de texto."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Feche o teclado"\n</b></font><font size="3">\n</font>"Pressione a tecla Voltar."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Toque e mantenha pressionada uma tecla para ver as opções"\n</b></font><font size="3">\n</font>"Acesse a pontuação e os acentos."</string>
@@ -93,6 +110,7 @@
     <string name="popular_domain_2" msgid="3036812463748402878">".org"</string>
     <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string>
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
+    <string name="inputMethod" msgid="1653630062304567879">"Método de entrada"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 7443114a38..6e81f7d03f 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Основной"</item>
     <item msgid="4894328801530136615">"Расширенный"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : сохранено"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Удерживайте клавишу, чтобы увидеть варианты с диакритическими знаками (ø, ö и т.д.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Нажмите клавишу \"Назад\" ↶, чтобы закрыть клавиатуру в любой момент"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Открыть цифры и символы"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"АБВ"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Голосовой ввод"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"В настоящее время функция голосового ввода не поддерживает ваш язык, но вы можете пользоваться ей на английском."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Голосовой ввод – экспериментальная функция на основе технологии сетевого распознавания речи от Google."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Функция голосового ввода отключается в настройках клавиатуры."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Чтобы использовать голосовой ввод, нажмите кнопку микрофона или проведите пальцем по экранной клавиатуре."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Говорите"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Выполняется обработка"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Ошибка. Повторите попытку."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Ошибка подключения"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Слишком длинная фраза"</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Неполадка со звуком"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Ошибка сервера"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Речи не слышно"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Соответствий не найдено"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Голосовой поиск не установлен"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Совет"</b>". Проведите пальцем по клавиатуре для голосового ввода."</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Совет"</b>". В следующий раз проговаривайте знаки препинания, например \"точка\", \"запятая\", \"вопросительный знак\"."</string>
+    <string name="cancel" msgid="6830980399865683324">"Отмена"</string>
+    <string name="ok" msgid="7898366843681727667">"ОК"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Голосовой ввод"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Автоматически отправлять по окончании голосового ввода"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Автоматически нажимать \"Ввод\" при поиске или переходе к следующему полю."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Откройте клавиатуру"\n</b></font><font size="3">\n</font>"Нажмите на любое текстовое поле."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Закрытие клавиатуры"\n</b></font><font size="3">\n</font>"Нажмите клавишу \"Назад\"."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Нажмите и удерживайте клавишу для вызова параметров"\n</b></font><font size="3">\n</font>"Доступ к пунктуационным и диакритическим знакам."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Способ ввода"</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index b56a71806c..8027eb3f7d 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Grundinställningar"</item>
     <item msgid="4894328801530136615">"Avancerade"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: sparat"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Håll nere en tangent om du vill visa accenter (ø, ö, etc.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Tryck på Tillbaka ↶ om du vill stänga tangentbordet"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"För siffror och symboler"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Röstindata"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Röstindata stöds inte på ditt språk än, men tjänsten fungerar på engelska."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Röstinmatning är en funktion på experimentstadiet som använder Googles nätverks taligenkänning."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Om du vill stänga av röstindata öppnar du inställningarna för tangentbordet."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Om du vill använda röstinmatning trycker du på mikrofonknappen eller drar fingret över tangentbordet på skärmen."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Tala nu"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Fungerar"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Fel. Försök igen."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Det gick inte att ansluta"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Fel, för mycket tal."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Ljudproblem"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Serverfel"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Hörde inget tal"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Inga träffar hittades"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Voice Search är inte installerat"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Tips!"</b>" Dra över tangentbordet om du vill tala"</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Tips!"</b>" Nästa gång testar du att säga skiljetecknen, som \"punkt\", \"komma\" eller \"frågetecken\"."</string>
+    <string name="cancel" msgid="6830980399865683324">"Avbryt"</string>
+    <string name="ok" msgid="7898366843681727667">"OK"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Röstindata"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Skicka automatiskt efter röst"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Tryck automatiskt på retur vid sökning eller när du fortsätter till nästa fält."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Öppna tangentbordet"\n</b></font><font size="3">\n</font>"Tryck på ett textfält."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Stäng tangentbordet"\n</b></font><font size="3">\n</font>"Tryck på Tillbaka."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tryck länge på en tangent om du vill se alternativ"\n</b></font><font size="3">\n</font>"Använda skiljetecken och accenter."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Indatametod"</string>
 </resources>
diff --git a/res/values-tr/donottranslate.xml b/res/values-tr/donottranslate.xml
index f206e4c438..2154c16bb0 100644
--- a/res/values-tr/donottranslate.xml
+++ b/res/values-tr/donottranslate.xml
@@ -20,4 +20,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <!-- Accented characters related to "g" -->
     <string name="alternates_for_g">ÄŸ</string>
-</resources>
+</resources>
\ No newline at end of file
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 6f17f69c4f..069abeb144 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"Temel"</item>
     <item msgid="4894328801530136615">"GeliÅŸmiÅŸ"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Kaydedildi"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"Vurguları görmek için bir tuşu basılı tutun (ø, ö, v.b.)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"Klavyeyi herhangi bir anda kapatmak için geri tuşuna ↶ basın"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"Sayılara ve simgelere erişin"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"Ses giriÅŸi"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Ses girişi, şu anda sizin diliniz için desteklenmiyor ama İngilizce dilinde kullanılabilir."</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"Ses girişi, Google\'ın ağ bağlantılı ses tanıma işlevini kullanan deneysel bir özelliktir."</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"Ses girişini kapatmak için klavye ayarlarına gidin."</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"Ses girişini kullanmak için mikrofon düğmesine basın veya parmağınızı dokunmatik klavye üzerinde kaydırın."</string>
+    <string name="voice_listening" msgid="467518160751321844">"Åžimdi konuÅŸun"</string>
+    <string name="voice_working" msgid="6666937792815731889">"Çalışıyor"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"Hata. Lütfen tekrar deneyin."</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"Bağlanamadı"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"Hata, çok uzun konuşma."</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"Ses sorunu"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"Sunucu hatası"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"Konuşma duyulmadı"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"Eşleşme bulunamadı"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"Sesle arama yüklenmedi"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"İpucu:"</b>" Konuşmak için parmağınızı klavye üzerinde kaydırın"</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"İpucu:"</b>" Sonraki sefer, \"nokta\", \"virgül\" veya \"soru işareti\" gibi noktalama işaretlerini telaffuz etmeyi deneyin."</string>
+    <string name="cancel" msgid="6830980399865683324">"Ä°ptal"</string>
+    <string name="ok" msgid="7898366843681727667">"Tamam"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"Ses giriÅŸi"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"Sesten sonra otomatik gönder"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"Arama yaparken veya bir sonraki alana giderken enter tuşuna otomatik olarak basın."</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Klavyeyi açın"\n</b></font><font size="3">\n</font>"Herhangi bir metin alanına dokunun."</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Klavyeyi kapatın"\n</b></font><font size="3">\n</font>"Geri tuşuna basın."</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Seçenekler için bir tuşa dokunun ve basılı tutun"\n</b></font><font size="3">\n</font>"Noktalama ve vurgulama işaretlerine erişin."</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"Giriş yöntemi"</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index f1c0418058..034f32739a 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"基本模式"</item>
     <item msgid="4894328801530136615">"高级模式"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>:已保存"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -84,6 +78,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"语音输入"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"语音输入功能当前还不支持您的语言,您只能输入英语语音。"</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"语音输入是一项试验性的功能,它采用了 Google 的网络语音识别功能。"</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"要关闭语音输入功能,请转至键盘设置。"</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"要使用语音输入,请按麦克风按钮或者在屏幕键盘上滑动手指。"</string>
+    <string name="voice_listening" msgid="467518160751321844">"请开始说话"</string>
+    <string name="voice_working" msgid="6666937792815731889">"正在处理"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"出错,请重试。"</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"无法连接"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"出错,语音过长。"</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"音频问题"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"服务器出错"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"未听到语音"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"未找到匹配项"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"未安装语音搜索"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"提示:"</b>"在键盘上滑动手指可激活语音功能"</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"提示:"</b>"稍后,请尝试使用语音输入标点符号,如“句号”、“逗号”或“问号”。"</string>
+    <string name="cancel" msgid="6830980399865683324">"取消"</string>
+    <string name="ok" msgid="7898366843681727667">"确定"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"语音输入"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"语音结束后自动提交"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"搜索或转到下一字段时自动按 Enter。"</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"打开键盘"\n</b></font><font size="3">\n</font>"轻触任意文本字段。"</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"关闭键盘"\n</b></font><font size="3">\n</font>"按“返回”键。"</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"按住某个键可开启其他字符选项"\n</b></font><font size="3">\n</font>"访问标点和重音符号。"</string>
@@ -95,4 +113,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"输入法"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 550a735dfb..9603c6b803 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -47,12 +47,6 @@
     <item msgid="1669461741568287396">"基本模式"</item>
     <item msgid="4894328801530136615">"進階模式"</item>
   </string-array>
-    <string name="prediction_none" msgid="2472795101338047944">"0"</string>
-    <string name="prediction_basic" msgid="8407291081834155558">"1"</string>
-    <string name="prediction_full" msgid="3765102052052510268">"2"</string>
-    <!-- no translation found for prediction_modes_values:0 (579944677836100459) -->
-    <!-- no translation found for prediction_modes_values:1 (7214414132844804570) -->
-    <!-- no translation found for prediction_modes_values:2 (6678546276084314171) -->
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>:已儲存"</string>
     <string name="alternates_for_a" msgid="2566516493365324765">"àáâãäåæ"</string>
     <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string>
@@ -63,7 +57,6 @@
     <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string>
     <string name="alternates_for_c" msgid="151699780720639892">"ç"</string>
     <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string>
-    <string name="key_i" msgid="6483655742552255124">"i"</string>
     <string name="tip_long_press" msgid="6101270866284343344">"按住按鍵可查看重音符號 (ø、ö 等)"</string>
     <string name="tip_dismiss" msgid="7585579046862204381">"隨時可以透過按後退鍵 ↶ 關閉鍵盤"</string>
     <string name="tip_access_symbols" msgid="6344098517525531652">"使用數字和符號"</string>
@@ -84,6 +77,30 @@
     <string name="label_phone_key" msgid="4275497665515080551">"123"</string>
     <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string>
     <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string>
+    <string name="voice_warning_title" msgid="4419354150908395008">"語音輸入"</string>
+    <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"語音輸入目前不支援您的語言,但是可以辨識英文。"</string>
+    <string name="voice_warning_may_not_understand" msgid="4611518823070986445">"語音輸入這項實驗功能運用了 Google 的網路語音辨識系統。"</string>
+    <string name="voice_warning_how_to_turn_off" msgid="5652369578498701761">"請前往鍵盤設定來關閉語音輸入。"</string>
+    <string name="voice_hint_dialog_message" msgid="6892342981545727994">"如要使用語音輸入,按下 [麥克風] 按鈕,或將手指滑過螢幕小鍵盤即可。"</string>
+    <string name="voice_listening" msgid="467518160751321844">"請說話"</string>
+    <string name="voice_working" msgid="6666937792815731889">"辨識中"</string>
+    <!-- no translation found for voice_initializing (661962047129906646) -->
+    <skip />
+    <string name="voice_error" msgid="5140896300312186162">"發生錯誤,請再試一次。"</string>
+    <string name="voice_network_error" msgid="6649556447401862563">"無法連線"</string>
+    <string name="voice_too_much_speech" msgid="5746973620134227376">"錯誤:語音內容過長。"</string>
+    <string name="voice_audio_error" msgid="5072707727016414454">"音訊問題"</string>
+    <string name="voice_server_error" msgid="7807129913977261644">"伺服器錯誤"</string>
+    <string name="voice_speech_timeout" msgid="8461817525075498795">"沒有聽到任何聲音"</string>
+    <string name="voice_no_match" msgid="4285117547030179174">"找不到相符的項目"</string>
+    <string name="voice_not_installed" msgid="5552450909753842415">"未安裝語音搜尋"</string>
+    <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"提示:"</b>"滑過鍵盤即可說話"</string>
+    <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"提示:"</b>"下次可嘗試說出標點符號,例如「句號」、「逗號」或「問號」。"</string>
+    <string name="cancel" msgid="6830980399865683324">"取消"</string>
+    <string name="ok" msgid="7898366843681727667">"確定"</string>
+    <string name="enable_voice" msgid="8299503298530853956">"語音輸入"</string>
+    <string name="auto_submit" msgid="9151008027068358518">"說話後自動提交"</string>
+    <string name="auto_submit_summary" msgid="4961875269610384226">"搜尋或前往下一個欄位時自動按下輸入。"</string>
     <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"開啟鍵盤"\n</b></font><font size="3">\n</font>"輕觸任何文字欄位。"</string>
     <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"關閉鍵盤"\n</b></font><font size="3">\n</font>"按下 Back 鍵。"</string>
     <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>\n"輕觸並按住按鍵開啟選項"</b></font><font size="3">\n</font>"輸入標點與輕重音。"</string>
@@ -95,4 +112,5 @@
     <string name="popular_domain_4" msgid="35359437471311470">".edu"</string>
     <!-- no translation found for language_selection_title (530749890984542339) -->
     <skip />
+    <string name="inputMethod" msgid="7854532062009028116">"輸入方式"</string>
 </resources>
diff --git a/res/values/bools.xml b/res/values/bools.xml
index 3a951b2719..ebe2f04e52 100644
--- a/res/values/bools.xml
+++ b/res/values/bools.xml
@@ -23,4 +23,6 @@
     <!-- Whether this input method should be used as the default for a locale. Override it
          for latin languages. -->
     <bool name="im_is_default">false</bool>
+    <!-- Whether or not voice input is enabled by default. -->
+    <bool name="voice_input_default">true</bool>
 </resources>
diff --git a/res/values/donottranslate.xml b/res/values/donottranslate.xml
index c6941949ed..d9649f3b19 100644
--- a/res/values/donottranslate.xml
+++ b/res/values/donottranslate.xml
@@ -32,6 +32,4 @@
     <string name="alternates_for_z"></string>
     <!-- Accented characters related to "l" -->
     <string name="alternates_for_l"></string>
-    <!-- Accented characters related to "g" -->
-    <string name="alternates_for_g"></string>
 </resources>
diff --git a/res/values/keycodes.xml b/res/values/keycodes.xml
index e46e4bc369..8156c0e079 100644
--- a/res/values/keycodes.xml
+++ b/res/values/keycodes.xml
@@ -20,5 +20,5 @@
 
 <resources>
     <!-- Keycode for F1 (function) key. This one switches between language switch & comma/.com -->
-    <integer name="key_f1">-102</integer>
+    <integer name="key_f1">-103</integer>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3b3965e09f..90cd6d4291 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -93,13 +93,13 @@
     </string-array>
     
     <!-- Don't translate -->
-    <string name="prediction_none" >0</string>
+    <string name="prediction_none" translatable="false">0</string>
     <!-- Don't translate -->
-    <string name="prediction_basic">1</string>
+    <string name="prediction_basic" translatable="false">1</string>
     <!-- Don't translate -->
-    <string name="prediction_full" >2</string>
+    <string name="prediction_full"  translatable="false">2</string>
 
-    <string-array name="prediction_modes_values">
+    <string-array name="prediction_modes_values" translatable="false">
         <item>@string/prediction_none</item>
         <item>@string/prediction_basic</item>
         <item>@string/prediction_full</item>
@@ -125,13 +125,7 @@
     <string name="alternates_for_c">ç</string>
     <!-- Accented forms of "y" -->
     <string name="alternates_for_y">ýÿ</string>
-
-    <!-- Label to display on the lower "i" key.
-         Usually you don't need to modify this value, but if your locale requires some variant
-         for this character (e.g. \\u131 "Latin Small Letter Dotoless i"), please modify this
-         value. -->
-    <string name="key_i">i</string>
- 
+    
     <!-- Tip to long press on keys -->
     <string name="tip_long_press">Hold a key down to see accents (ø, ö, etc.)</string>
     <!-- Tip to dismiss keyboard -->
@@ -185,6 +179,85 @@
     <!-- Label for ALT modifier key.  Must be short to fit on key! -->
     <string name="label_alt_key">ALT</string>
 
+    <!-- Voice related labels -->
+
+    <!-- Title of the warning dialog that shows when a user initiates voice input for
+         the first time. -->
+    <string name="voice_warning_title">Voice input</string>
+    
+    <!-- Message that gets put at the top of the warning dialog if the user is attempting to use
+         voice input in a currently unsupported locale. Voice input will work for such a user,
+         but it will only recognize them in English. -->
+    <string name="voice_warning_locale_not_supported">Voice input is not currently supported for your language, but does work in English.</string>
+    
+    <!-- Message of the warning dialog that shows when a user initiates voice input for
+         the first time, or turns it on in settings. -->
+    <string name="voice_warning_may_not_understand">Voice input is an experimental feature using Google\'s networked speech recognition.</string>
+    
+    <!-- An additional part of the warning dialog for voice input that only shows when the user
+         actually initiates voice input, rather than just turning it on in settings. -->
+    <string name="voice_warning_how_to_turn_off">To turn off voice input, go to keyboard settings.</string>
+    
+    <!-- Message to show when user clicks the swiping hint (which says
+        "Swipe across keyboard to speak"). Also shown when enabling settings. -->
+    <string name="voice_hint_dialog_message">To use voice input, press the microphone button or slide your finger across the on-screen keyboard.</string>
+    
+    <!-- Short message to tell the user the system is ready for them to speak. -->
+    <string name="voice_listening">Speak now</string>
+
+    <!-- Short message shown after the user finishes speaking. -->
+    <string name="voice_working">Working</string>
+
+    <!-- Short message shown before the user should speak. -->
+    <string name="voice_initializing"></string>
+
+    <!-- Short message shown when a generic error occurs. -->
+    <string name="voice_error">Error. Please try again.</string>
+
+    <!-- Short message shown for a network error. -->
+    <string name="voice_network_error">Couldn\'t connect</string>
+    
+    <!-- Short message shown for a network error where the utterance was really long,
+         in which case we should suggest that the user speak less. -->
+    <string name="voice_too_much_speech">Error, too much speech.</string>
+
+    <!-- Short message shown for an audio error. -->
+    <string name="voice_audio_error">Audio problem</string>
+
+    <!-- Short message shown for an error with the voice server. -->
+    <string name="voice_server_error">Server error</string>
+
+    <!-- Short message shown when no speech is heard. -->
+    <string name="voice_speech_timeout">No speech heard</string>
+
+    <!-- Short message shown when the server couldn't parse any speech. -->
+    <string name="voice_no_match">No matches found</string>
+
+    <!-- Short message shown when the user initiates voice and voice
+	search is not installed. -->
+    <string name="voice_not_installed">Voice search not installed</string>
+
+    <!-- Short hint shown in candidate view to explain voice input. -->
+    <string name="voice_swipe_hint"><b>Hint:</b> Swipe across keyboard to speak</string>
+
+    <!-- Short hint shown in candidate view to explain that user can speak punctuation. -->
+    <string name="voice_punctuation_hint"><b>Hint:</b> Next time, try speaking punctuation like \"period\", \"comma\", or \"question mark\".</string>
+
+    <!-- Label on button to stop recognition. Must be short to fit on button. -->
+    <string name="cancel">Cancel</string>
+
+    <!-- Label on button when an error occurs -->
+    <string name="ok">OK</string>
+
+    <!-- Preferences item for enabling speech input -->
+    <string name="enable_voice">Voice input</string>
+
+    <!-- Press the "enter" key after the user speaks. Option on settings.-->
+    <string name="auto_submit">Auto submit after voice</string>
+
+    <!-- Press the "enter" key after the user speaks. Summary of option in settings.-->
+    <string name="auto_submit_summary">Automatically press enter when searching or going to the next field.</string>
+
     <!-- IME Tutorial screen (ROMAN) --><skip />
     <!-- appears above image showing the user to click on a TextView to show the IME -->
     <string name="open_the_keyboard"><font size="17"><b>Open the keyboard\n</b></font><font size="3">\n</font>Touch any text field.</string>
@@ -197,7 +270,7 @@
 
     <!-- appears above image showing how to access keyboard settings -->
     <string name="keyboard_settings"><font size="17"><b>Keyboard settings\n</b></font><font size="3">\n</font>Touch \u0026 hold the <b>\?123\</b> key.</string>
-    
+
     <!-- popular web domains for the locale - most popular, displayed on the keyboard -->
     <string name="popular_domain_0">".com"</string>
     <!-- popular web domains for the locale - item 1, displayed in the popup -->
@@ -208,6 +281,9 @@
     <string name="popular_domain_3">".gov"</string>
     <!-- popular web domains for the locale - item 4, displayed in the popup -->
     <string name="popular_domain_4">".edu"</string>
+
+    <!-- Menu item for launching Input method switcher -->
+    <string name="inputMethod">Input method</string>
     
     <!-- Title for input language selection screen -->
     <string name="language_selection_title">Select input languages</string>
diff --git a/res/xml-de/kbd_qwerty.xml b/res/xml-de/kbd_qwerty.xml
index 2da609ca82..3fb8f52262 100755
--- a/res/xml-de/kbd_qwerty.xml
+++ b/res/xml-de/kbd_qwerty.xml
@@ -165,4 +165,81 @@
                 android:keyWidth="20%p" android:keyEdgeFlags="right"/>
 
     </Row>
+
+    <Row android:keyboardMode="@+id/mode_normal_voice" android:rowEdgeFlags="bottom">
+        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" 
+                android:popupKeyboard="@xml/kbd_popup_template"
+                android:popupCharacters="_"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic" 
+                android:iconPreview="@drawable/sym_keyboard_feedback_mic"
+                android:keyWidth="10%p"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" 
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:keyWidth="40%p" android:isRepeatable="true"/>
+        <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" 
+                android:keyWidth="10%p"/>
+        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" 
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+    </Row>
+
+    <Row android:keyboardMode="@+id/mode_url_voice" android:rowEdgeFlags="bottom">
+        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+                android:popupKeyboard="@xml/kbd_popup_template"
+                android:popupCharacters="_"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:keyLabel="@string/popular_domain_0"
+                android:keyOutputText="@string/popular_domain_0"
+                android:popupKeyboard="@xml/popup_domains"
+                android:keyWidth="15%p"/>
+        <Key android:keyLabel="/" android:keyWidth="15%p"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:keyWidth="15%p" android:isRepeatable="true"/>
+        <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
+                android:keyWidth="15%p"/>
+        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+    </Row>
+
+    <Row android:keyboardMode="@+id/mode_email_voice" android:rowEdgeFlags="bottom">
+        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+                android:popupKeyboard="@xml/kbd_popup_template"
+                android:popupCharacters="_"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:keyLabel="\@" android:keyWidth="15%p"/>
+        <Key android:keyLabel="@string/popular_domain_0"
+                android:keyOutputText="@string/popular_domain_0"
+                android:popupKeyboard="@xml/popup_domains"
+                android:keyWidth="15%p"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:keyWidth="15%p" android:isRepeatable="true"/>
+        <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
+                android:keyWidth="15%p"/>
+        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+    </Row>
+
+    <Row android:keyboardMode="@+id/mode_im_voice" android:rowEdgeFlags="bottom">
+        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+                android:popupKeyboard="@xml/kbd_popup_template"
+                android:popupCharacters="_"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic" 
+                android:iconPreview="@drawable/sym_keyboard_feedback_mic"
+                android:keyWidth="10%p"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:keyWidth="40%p" android:isRepeatable="true"/>
+        <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" 
+                android:keyWidth="10%p"/>
+        <Key android:keyLabel=":-)" android:keyOutputText=":-) "
+                android:popupKeyboard="@xml/popup_smileys"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+    </Row>
+
 </Keyboard>
diff --git a/res/xml-fr/kbd_qwerty.xml b/res/xml-fr/kbd_qwerty.xml
index 7c1b24bada..fef260d1da 100644
--- a/res/xml-fr/kbd_qwerty.xml
+++ b/res/xml-fr/kbd_qwerty.xml
@@ -166,5 +166,81 @@
                 android:popupKeyboard="@xml/popup_smileys"
                 android:keyWidth="20%p" android:keyEdgeFlags="right"/>
     </Row>
+
+    <Row android:keyboardMode="@+id/mode_normal_voice" android:rowEdgeFlags="bottom">
+        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" 
+                android:popupKeyboard="@xml/kbd_popup_template"
+                android:popupCharacters="_"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic" 
+                android:iconPreview="@drawable/sym_keyboard_feedback_mic"
+                android:keyWidth="10%p"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" 
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:keyWidth="40%p" android:isRepeatable="true"/>
+        <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" 
+                android:keyWidth="10%p"/>
+        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" 
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+    </Row>
+
+    <Row android:keyboardMode="@+id/mode_url_voice" android:rowEdgeFlags="bottom">
+        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+                android:popupKeyboard="@xml/kbd_popup_template"
+                android:popupCharacters="_"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:keyLabel="@string/popular_domain_0"
+                android:keyOutputText="@string/popular_domain_0"
+                android:popupKeyboard="@xml/popup_domains"
+                android:keyWidth="15%p"/>
+        <Key android:keyLabel="/" android:keyWidth="15%p"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:keyWidth="15%p" android:isRepeatable="true"/>
+        <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
+                android:keyWidth="15%p"/>
+        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+    </Row>
+
+    <Row android:keyboardMode="@+id/mode_email_voice" android:rowEdgeFlags="bottom">
+        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+                android:popupKeyboard="@xml/kbd_popup_template"
+                android:popupCharacters="_"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:keyLabel="\@" android:keyWidth="15%p"/>
+        <Key android:keyLabel="@string/popular_domain_0"
+                android:keyOutputText="@string/popular_domain_0"
+                android:popupKeyboard="@xml/popup_domains"
+                android:keyWidth="15%p"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:keyWidth="15%p" android:isRepeatable="true"/>
+        <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
+                android:keyWidth="15%p"/>
+        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+    </Row>
+
+    <Row android:keyboardMode="@+id/mode_im_voice" android:rowEdgeFlags="bottom">
+        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+                android:popupKeyboard="@xml/kbd_popup_template"
+                android:popupCharacters="_"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic" 
+                android:iconPreview="@drawable/sym_keyboard_feedback_mic"
+                android:keyWidth="10%p"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:keyWidth="40%p" android:isRepeatable="true"/>
+        <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" 
+                android:keyWidth="10%p"/>
+        <Key android:keyLabel=":-)" android:keyOutputText=":-) "
+                android:popupKeyboard="@xml/popup_smileys"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+    </Row>
 </Keyboard>
-    
\ No newline at end of file
+    
diff --git a/res/xml/kbd_qwerty.xml b/res/xml/kbd_qwerty.xml
index d914f46d28..552e7e5440 100755
--- a/res/xml/kbd_qwerty.xml
+++ b/res/xml/kbd_qwerty.xml
@@ -46,7 +46,7 @@
                 android:popupKeyboard="@xml/kbd_popup_template"
                 android:popupCharacters="@string/alternates_for_u"
         />
-        <Key android:keyLabel="@string/key_i"
+        <Key android:codes="105" android:keyLabel="i"
                 android:popupKeyboard="@xml/kbd_popup_template"
                 android:popupCharacters="@string/alternates_for_i"
         />
@@ -70,14 +70,11 @@
                 android:popupKeyboard="@xml/kbd_popup_template"
                 android:popupCharacters="@string/alternates_for_d"/>
         <Key android:codes="102" android:keyLabel="f"/>
-        <Key android:codes="103" android:keyLabel="g"
-                android:popupKeyboard="@xml/kbd_popup_template"
-                android:popupCharacters="@string/alternates_for_g"/>
-        />
+        <Key android:codes="103" android:keyLabel="g"/>
         <Key android:codes="104" android:keyLabel="h"/>
         <Key android:codes="106" android:keyLabel="j"/>
         <Key android:codes="107" android:keyLabel="k"/>
-        <Key android:codes="108" android:keyLabel="l" 
+        <Key android:codes="108" android:keyLabel="l"
                 android:popupKeyboard="@xml/kbd_popup_template"
                 android:popupCharacters="@string/alternates_for_l"
                 android:keyEdgeFlags="right"/>
@@ -126,6 +123,24 @@
                 android:keyWidth="20%p" android:keyEdgeFlags="right"/>
     </Row>
 
+    <Row android:keyboardMode="@+id/mode_normal_voice" android:rowEdgeFlags="bottom">
+        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" 
+                android:popupKeyboard="@xml/kbd_popup_template"
+                android:popupCharacters="_"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic" 
+                android:iconPreview="@drawable/sym_keyboard_feedback_mic"
+                android:keyWidth="10%p"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" 
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:keyWidth="40%p" android:isRepeatable="true"/>
+        <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" 
+                android:keyWidth="10%p"/>
+        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" 
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+    </Row>
+
     <Row android:keyboardMode="@+id/mode_url" android:rowEdgeFlags="bottom">
         <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
                 android:popupKeyboard="@xml/kbd_popup_template"
@@ -148,6 +163,26 @@
                 android:keyWidth="20%p" android:keyEdgeFlags="right"/>
     </Row>
 
+    <Row android:keyboardMode="@+id/mode_url_voice" android:rowEdgeFlags="bottom">
+        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+                android:popupKeyboard="@xml/kbd_popup_template"
+                android:popupCharacters="_"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:keyLabel="@string/popular_domain_0"
+                android:keyOutputText="@string/popular_domain_0"
+                android:popupKeyboard="@xml/popup_domains"
+                android:keyWidth="15%p"/>
+        <Key android:keyLabel="/" android:keyWidth="15%p"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:keyWidth="15%p" android:isRepeatable="true"/>
+        <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
+                android:keyWidth="15%p"/>
+        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+    </Row>
+
     <Row android:keyboardMode="@+id/mode_email" android:rowEdgeFlags="bottom">
         <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
                 android:popupKeyboard="@xml/kbd_popup_template"
@@ -170,6 +205,26 @@
                 android:keyWidth="20%p" android:keyEdgeFlags="right"/>
     </Row>
 
+    <Row android:keyboardMode="@+id/mode_email_voice" android:rowEdgeFlags="bottom">
+        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+                android:popupKeyboard="@xml/kbd_popup_template"
+                android:popupCharacters="_"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:keyLabel="\@" android:keyWidth="15%p"/>
+        <Key android:keyLabel="@string/popular_domain_0"
+                android:keyOutputText="@string/popular_domain_0"
+                android:popupKeyboard="@xml/popup_domains"
+                android:keyWidth="15%p"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:keyWidth="15%p" android:isRepeatable="true"/>
+        <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
+                android:keyWidth="15%p"/>
+        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+                android:iconPreview="@drawable/sym_keyboard_feedback_return"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+    </Row>
+
     <Row android:keyboardMode="@+id/mode_im" android:rowEdgeFlags="bottom">
         <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
                 android:popupKeyboard="@xml/kbd_popup_template"
@@ -186,5 +241,23 @@
                 android:popupKeyboard="@xml/popup_smileys"
                 android:keyWidth="20%p" android:keyEdgeFlags="right"/>
     </Row>
+
+    <Row android:keyboardMode="@+id/mode_im_voice" android:rowEdgeFlags="bottom">
+        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
+                android:popupKeyboard="@xml/kbd_popup_template"
+                android:popupCharacters="_"
+                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
+        <Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic" 
+                android:iconPreview="@drawable/sym_keyboard_feedback_mic"
+                android:keyWidth="10%p"/>
+        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
+                android:iconPreview="@drawable/sym_keyboard_feedback_space"
+                android:keyWidth="40%p" android:isRepeatable="true"/>
+        <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" 
+                android:keyWidth="10%p"/>
+        <Key android:keyLabel=":-)" android:keyOutputText=":-) "
+                android:popupKeyboard="@xml/popup_smileys"
+                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
+    </Row>
 </Keyboard>
 
diff --git a/res/xml/method.xml b/res/xml/method.xml
index e5654e96d7..4a807947b9 100644
--- a/res/xml/method.xml
+++ b/res/xml/method.xml
@@ -21,6 +21,6 @@
 <!-- for the Input Method Manager. -->
 
 <input-method xmlns:android="http://schemas.android.com/apk/res/android"
-        android:settingsActivity="com.android.inputmethod.latin.LatinIMESettings"
-        android:isDefault="@bool/im_is_default"
+        android:settingsActivity="com.google.android.voicesearch.LatinIMEWithVoiceSettings"
+	android:isDefault="true"
 />
diff --git a/res/xml/prefs.xml b/res/xml/prefs.xml
index d5075c53a9..74a2bcb208 100644
--- a/res/xml/prefs.xml
+++ b/res/xml/prefs.xml
@@ -37,6 +37,12 @@
             android:defaultValue="true"
             />
 
+    <CheckBoxPreference
+            android:key="enable_voice_input"
+            android:title="@string/enable_voice"
+            android:persistent="false"
+            android:defaultValue="@bool/voice_input_default"
+            />
     <PreferenceScreen
             android:title="@string/language_selection_title">
         <intent
diff --git a/src/com/android/inputmethod/latin/CandidateView.java b/src/com/android/inputmethod/latin/CandidateView.java
index f397363c3a..a31714eafb 100755
--- a/src/com/android/inputmethod/latin/CandidateView.java
+++ b/src/com/android/inputmethod/latin/CandidateView.java
@@ -113,7 +113,7 @@ public class CandidateView extends View {
     public CandidateView(Context context, AttributeSet attrs) {
         super(context, attrs);
         mSelectionHighlight = context.getResources().getDrawable(
-                com.android.internal.R.drawable.list_selector_background_pressed);
+                R.drawable.list_selector_background_pressed);
 
         LayoutInflater inflate =
             (LayoutInflater) context
diff --git a/src/com/android/inputmethod/latin/Hints.java b/src/com/android/inputmethod/latin/Hints.java
new file mode 100644
index 0000000000..109d3f08ec
--- /dev/null
+++ b/src/com/android/inputmethod/latin/Hints.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright (C) 2009 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import com.android.inputmethod.voice.GoogleSettingsUtil;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.view.inputmethod.InputConnection;
+
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Logic to determine when to display hints on usage to the user.
+ */
+public class Hints {
+    public interface Display {
+        public void showHint(int viewResource);
+    }
+
+    private static final String TAG = "Hints";
+    private static final String PREF_VOICE_HINT_NUM_UNIQUE_DAYS_SHOWN =
+            "voice_hint_num_unique_days_shown";
+    private static final String PREF_VOICE_HINT_LAST_TIME_SHOWN =
+            "voice_hint_last_time_shown";
+    private static final String PREF_VOICE_INPUT_LAST_TIME_USED =
+            "voice_input_last_time_used";
+    private static final String PREF_VOICE_PUNCTUATION_HINT_VIEW_COUNT =
+            "voice_punctuation_hint_view_count";
+    private static final int DEFAULT_SWIPE_HINT_MAX_DAYS_TO_SHOW = 7;
+    private static final int DEFAULT_PUNCTUATION_HINT_MAX_DISPLAYS = 7;
+
+    private Context mContext;
+    private Display mDisplay;
+    private boolean mVoiceResultContainedPunctuation;
+    private int mSwipeHintMaxDaysToShow;
+    private int mPunctuationHintMaxDisplays;
+
+    // Only show punctuation hint if voice result did not contain punctuation.
+    static final Map<CharSequence, String> SPEAKABLE_PUNCTUATION
+            = new HashMap<CharSequence, String>();
+    static {
+        SPEAKABLE_PUNCTUATION.put(",", "comma");
+        SPEAKABLE_PUNCTUATION.put(".", "period");
+        SPEAKABLE_PUNCTUATION.put("?", "question mark");
+    }
+
+    public Hints(Context context, Display display) {
+        mContext = context;
+        mDisplay = display;
+        
+        ContentResolver cr = mContext.getContentResolver();
+        mSwipeHintMaxDaysToShow = GoogleSettingsUtil.getGservicesInt(
+                cr,
+                GoogleSettingsUtil.LATIN_IME_VOICE_INPUT_SWIPE_HINT_MAX_DAYS,
+                DEFAULT_SWIPE_HINT_MAX_DAYS_TO_SHOW);
+        mPunctuationHintMaxDisplays = GoogleSettingsUtil.getGservicesInt(
+                cr,
+                GoogleSettingsUtil.LATIN_IME_VOICE_INPUT_PUNCTUATION_HINT_MAX_DISPLAYS,
+                DEFAULT_PUNCTUATION_HINT_MAX_DISPLAYS);
+    }
+
+    public boolean showSwipeHintIfNecessary(boolean fieldRecommended) {
+        if (fieldRecommended && shouldShowSwipeHint()) {
+            showHint(R.layout.voice_swipe_hint);
+            return true;
+        }
+
+        return false;
+    }
+
+    public boolean showPunctuationHintIfNecessary(InputConnection ic) {
+        if (!mVoiceResultContainedPunctuation
+                && ic != null
+                && getAndIncrementPref(PREF_VOICE_PUNCTUATION_HINT_VIEW_COUNT)
+                        < mPunctuationHintMaxDisplays) {
+            CharSequence charBeforeCursor = ic.getTextBeforeCursor(1, 0);
+            if (SPEAKABLE_PUNCTUATION.containsKey(charBeforeCursor)) {
+                showHint(R.layout.voice_punctuation_hint);
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    public void registerVoiceResult(String text) {
+        // Update the current time as the last time voice input was used.
+        SharedPreferences.Editor editor =
+                PreferenceManager.getDefaultSharedPreferences(mContext).edit();
+        editor.putLong(PREF_VOICE_INPUT_LAST_TIME_USED, System.currentTimeMillis());
+        editor.commit();
+        
+        mVoiceResultContainedPunctuation = false;
+        for (CharSequence s : SPEAKABLE_PUNCTUATION.keySet()) {
+            if (text.indexOf(s.toString()) >= 0) {
+                mVoiceResultContainedPunctuation = true;
+                break;
+            }
+        }
+    }
+    
+    private boolean shouldShowSwipeHint() {
+        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mContext);
+
+        int numUniqueDaysShown = sp.getInt(PREF_VOICE_HINT_NUM_UNIQUE_DAYS_SHOWN, 0);
+        
+        // If we've already shown the hint for enough days, we'll return false.
+        if (numUniqueDaysShown < mSwipeHintMaxDaysToShow) {    
+
+            long lastTimeVoiceWasUsed = sp.getLong(PREF_VOICE_INPUT_LAST_TIME_USED, 0);
+            
+            // If the user has used voice today, we'll return false. (We don't show the hint on
+            // any day that the user has already used voice.)
+            if (!isFromToday(lastTimeVoiceWasUsed)) {                
+                return true;
+            }
+        }
+        
+        return false;
+    }
+    
+    /**
+     * Determines whether the provided time is from some time today (i.e., this day, month,
+     * and year).
+     */
+    private boolean isFromToday(long timeInMillis) {
+        if (timeInMillis == 0) return false;
+        
+        Calendar today = Calendar.getInstance();
+        today.setTimeInMillis(System.currentTimeMillis());
+        
+        Calendar timestamp = Calendar.getInstance();
+        timestamp.setTimeInMillis(timeInMillis);
+        
+        return (today.get(Calendar.YEAR) == timestamp.get(Calendar.YEAR) &&
+                today.get(Calendar.DAY_OF_MONTH) == timestamp.get(Calendar.DAY_OF_MONTH) &&
+                today.get(Calendar.MONTH) == timestamp.get(Calendar.MONTH));
+    }
+
+    private void showHint(int hintViewResource) {
+        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mContext);
+        
+        int numUniqueDaysShown = sp.getInt(PREF_VOICE_HINT_NUM_UNIQUE_DAYS_SHOWN, 0);
+        long lastTimeHintWasShown = sp.getLong(PREF_VOICE_HINT_LAST_TIME_SHOWN, 0);
+
+        // If this is the first time the hint is being shown today, increase the saved values
+        // to represent that. We don't need to increase the last time the hint was shown unless
+        // it is a different day from the current value.
+        if (!isFromToday(lastTimeHintWasShown)) {
+            SharedPreferences.Editor editor = sp.edit();
+            editor.putInt(PREF_VOICE_HINT_NUM_UNIQUE_DAYS_SHOWN, numUniqueDaysShown + 1);
+            editor.putLong(PREF_VOICE_HINT_LAST_TIME_SHOWN, System.currentTimeMillis());
+            editor.commit();
+        }
+
+        if (mDisplay != null) {
+            mDisplay.showHint(hintViewResource);
+        }
+    }
+    
+    private int getAndIncrementPref(String pref) {
+        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mContext);
+        int value = sp.getInt(pref, 0);
+        SharedPreferences.Editor editor = sp.edit();
+        editor.putInt(pref, value + 1);
+        editor.commit();
+        return value;
+    }
+}
diff --git a/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/src/com/android/inputmethod/latin/KeyboardSwitcher.java
index 03b008e341..aa52c03810 100644
--- a/src/com/android/inputmethod/latin/KeyboardSwitcher.java
+++ b/src/com/android/inputmethod/latin/KeyboardSwitcher.java
@@ -48,6 +48,13 @@ public class KeyboardSwitcher {
     private static final int SYMBOLS_MODE_STATE_SYMBOL = 2;
 
     LatinKeyboardView mInputView;
+    private static final int[] ALPHABET_MODES = {
+        KEYBOARDMODE_NORMAL,
+        KEYBOARDMODE_URL,
+        KEYBOARDMODE_EMAIL,
+        KEYBOARDMODE_IM};
+
+    //LatinIME mContext;
     Context mContext;
     InputMethodService mInputMethodService;
     
@@ -56,11 +63,17 @@ public class KeyboardSwitcher {
 
     private KeyboardId mCurrentId;
     private Map<KeyboardId, LatinKeyboard> mKeyboards;
-    
-    private int mMode;
+
+    /**
+     * Maps keyboard mode to the equivalent mode with voice.
+     */
+    private Map<Integer, Integer> mModeToVoice;
+
+    private int mMode; /** One of the MODE_XXX values */
     private int mImeOptions;
     private int mTextMode = MODE_TEXT_QWERTY;
     private boolean mIsSymbols;
+    private boolean mHasVoice;
     private boolean mPreferSymbols;
     private int mSymbolsModeState = SYMBOLS_MODE_STATE_NONE;
 
@@ -73,6 +86,11 @@ public class KeyboardSwitcher {
         mKeyboards = new HashMap<KeyboardId, LatinKeyboard>();
         mSymbolsId = new KeyboardId(R.xml.kbd_symbols);
         mSymbolsShiftedId = new KeyboardId(R.xml.kbd_symbols_shift);
+        mModeToVoice = new HashMap<Integer, Integer>();
+        mModeToVoice.put(R.id.mode_normal, R.id.mode_normal_voice);
+        mModeToVoice.put(R.id.mode_url, R.id.mode_url_voice);
+        mModeToVoice.put(R.id.mode_email, R.id.mode_email_voice);
+        mModeToVoice.put(R.id.mode_im, R.id.mode_im_voice);
         mInputMethodService = ims;
     }
 
@@ -110,12 +128,12 @@ public class KeyboardSwitcher {
      */
     private static class KeyboardId {
         public int mXml;
-        public int mMode;
+        public int mKeyboardMode; /** A KEYBOARDMODE_XXX value */
         public boolean mEnableShiftLock;
 
         public KeyboardId(int xml, int mode, boolean enableShiftLock) {
             this.mXml = xml;
-            this.mMode = mode;
+            this.mKeyboardMode = mode;
             this.mEnableShiftLock = enableShiftLock;
         }
 
@@ -128,27 +146,40 @@ public class KeyboardSwitcher {
         }
 
         public boolean equals(KeyboardId other) {
-            return other.mXml == this.mXml && other.mMode == this.mMode;
+          return other.mXml == this.mXml
+              && other.mKeyboardMode == this.mKeyboardMode
+              && other.mEnableShiftLock == this.mEnableShiftLock;
         }
 
         public int hashCode() {
-            return (mXml + 1) * (mMode + 1) * (mEnableShiftLock ? 2 : 1);
+            return (mXml + 1) * (mKeyboardMode + 1) * (mEnableShiftLock ? 2 : 1);
         }
     }
 
-    void setKeyboardMode(int mode, int imeOptions) {
+    void setVoiceMode(boolean enableVoice) {
+        setKeyboardMode(mMode, mImeOptions, enableVoice, mIsSymbols);
+    }
+
+    void setKeyboardMode(int mode, int imeOptions, boolean enableVoice) {
         mSymbolsModeState = SYMBOLS_MODE_STATE_NONE;
         mPreferSymbols = mode == MODE_SYMBOLS;
-        setKeyboardMode(mode == MODE_SYMBOLS ? MODE_TEXT : mode, imeOptions,
+        setKeyboardMode(mode == MODE_SYMBOLS ? MODE_TEXT : mode, imeOptions, enableVoice,
                 mPreferSymbols);
     }
 
-    void setKeyboardMode(int mode, int imeOptions, boolean isSymbols) {
+    void setKeyboardMode(int mode, int imeOptions,
+            boolean enableVoice, boolean isSymbols) {
         mMode = mode;
         mImeOptions = imeOptions;
+        mHasVoice = enableVoice;
         mIsSymbols = isSymbols;
+
         mInputView.setPreviewEnabled(true);
         KeyboardId id = getKeyboardId(mode, imeOptions, isSymbols);
+
+        if (enableVoice && mModeToVoice.containsKey(id.mKeyboardMode)) {
+            id.mKeyboardMode = mModeToVoice.get(id.mKeyboardMode);
+        }
         LatinKeyboard keyboard = getKeyboard(id);
 
         if (mode == MODE_PHONE) {
@@ -166,7 +197,6 @@ public class KeyboardSwitcher {
         keyboard.setShifted(false);
         keyboard.setShiftLocked(keyboard.isShiftLocked());
         keyboard.setImeOptions(mContext.getResources(), mMode, imeOptions);
-
     }
 
     private LatinKeyboard getKeyboard(KeyboardId id) {
@@ -177,11 +207,16 @@ public class KeyboardSwitcher {
             conf.locale = mInputLocale;
             orig.updateConfiguration(conf, null);
             LatinKeyboard keyboard = new LatinKeyboard(
-                mContext, id.mXml, id.mMode);
-            if (id.mMode == KEYBOARDMODE_NORMAL
-                    || id.mMode == KEYBOARDMODE_URL
-                    || id.mMode == KEYBOARDMODE_IM
-                    || id.mMode == KEYBOARDMODE_EMAIL) {
+                mContext, id.mXml, id.mKeyboardMode);
+            if (id.mKeyboardMode == KEYBOARDMODE_NORMAL
+                    || id.mKeyboardMode == KEYBOARDMODE_URL
+                    || id.mKeyboardMode == KEYBOARDMODE_IM
+                    || id.mKeyboardMode == KEYBOARDMODE_EMAIL
+                    || id.mKeyboardMode == R.id.mode_normal_voice
+                    || id.mKeyboardMode == R.id.mode_url_voice
+                    || id.mKeyboardMode == R.id.mode_im_voice
+                    || id.mKeyboardMode == R.id.mode_email_voice
+                    ) {
                 keyboard.setExtension(R.xml.kbd_extension);
             }
 
@@ -241,7 +276,7 @@ public class KeyboardSwitcher {
             mTextMode = position;
         }
         if (isTextMode()) {
-            setKeyboardMode(MODE_TEXT, mImeOptions);
+            setKeyboardMode(MODE_TEXT, mImeOptions, mHasVoice);
         }
     }
 
@@ -250,11 +285,13 @@ public class KeyboardSwitcher {
     }
 
     boolean isAlphabetMode() {
-        KeyboardId current = mCurrentId;
-        return current.mMode == KEYBOARDMODE_NORMAL
-            || current.mMode == KEYBOARDMODE_URL
-            || current.mMode == KEYBOARDMODE_EMAIL
-            || current.mMode == KEYBOARDMODE_IM;
+        int currentMode = mCurrentId.mKeyboardMode;
+        for (Integer mode : ALPHABET_MODES) {
+            if (currentMode == mode || currentMode == mModeToVoice.get(mode)) {
+                return true;
+            }
+        }
+        return false;
     }
 
     void toggleShift() {
@@ -278,7 +315,7 @@ public class KeyboardSwitcher {
     }
 
     void toggleSymbols() {
-        setKeyboardMode(mMode, mImeOptions, !mIsSymbols);
+        setKeyboardMode(mMode, mImeOptions, mHasVoice, !mIsSymbols);
         if (mIsSymbols && !mPreferSymbols) {
             mSymbolsModeState = SYMBOLS_MODE_STATE_BEGIN;
         } else {
diff --git a/src/com/android/inputmethod/latin/LatinIME.java b/src/com/android/inputmethod/latin/LatinIME.java
index 98f47c2c65..cbf3a4a52d 100644
--- a/src/com/android/inputmethod/latin/LatinIME.java
+++ b/src/com/android/inputmethod/latin/LatinIME.java
@@ -16,13 +16,7 @@
 
 package com.android.inputmethod.latin;
 
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import com.android.inputmethod.latin.UserDictionary;
+import com.google.android.collect.Lists;
 
 import android.app.AlertDialog;
 import android.backup.BackupManager;
@@ -53,23 +47,42 @@ import android.util.Log;
 import android.util.PrintWriterPrinter;
 import android.util.Printer;
 import android.view.KeyEvent;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
 import android.view.inputmethod.CompletionInfo;
 import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.ExtractedText;
+import android.view.inputmethod.ExtractedTextRequest;
 import android.view.inputmethod.InputConnection;
 import android.view.inputmethod.InputMethodManager;
 
+import com.android.inputmethod.voice.EditingUtil;
+import com.android.inputmethod.voice.FieldContext;
+import com.android.inputmethod.voice.GoogleSettingsUtil;
+import com.android.inputmethod.voice.VoiceInput;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
 /**
  * Input method implementation for Qwerty'ish keyboard.
  */
-public class LatinIME extends InputMethodService 
+public class LatinIME extends InputMethodService
         implements KeyboardView.OnKeyboardActionListener,
-                   SharedPreferences.OnSharedPreferenceChangeListener {
-
+        VoiceInput.UiListener,
+        SharedPreferences.OnSharedPreferenceChangeListener {
+    private static final String TAG = "LatinIME";
     static final boolean DEBUG = false;
     static final boolean TRACE = false;
+    static final boolean VOICE_INSTALLED = true;
+    static final boolean ENABLE_VOICE_BUTTON = true;
     
     private static final String PREF_VIBRATE_ON = "vibrate_on";
     private static final String PREF_SOUND_ON = "sound_on";
@@ -77,12 +90,53 @@ public class LatinIME extends InputMethodService
     private static final String PREF_QUICK_FIXES = "quick_fixes";
     private static final String PREF_SHOW_SUGGESTIONS = "show_suggestions";
     private static final String PREF_AUTO_COMPLETE = "auto_complete";
+    private static final String PREF_ENABLE_VOICE = "enable_voice_input";
+    private static final String PREF_VOICE_SERVER_URL = "voice_server_url";
+    
+    // Whether or not the user has used voice input before (and thus, whether to show the
+    // first-run warning dialog or not). 
+    private static final String PREF_HAS_USED_VOICE_INPUT = "has_used_voice_input";
+    
+    // Whether or not the user has used voice input from an unsupported locale UI before.
+    // For example, the user has a Chinese UI but activates voice input.
+    private static final String PREF_HAS_USED_VOICE_INPUT_UNSUPPORTED_LOCALE =
+            "has_used_voice_input_unsupported_locale";
+
+    // A list of locales which are supported by default for voice input, unless we get a
+    // different list from Gservices.
+    public static final String DEFAULT_VOICE_INPUT_SUPPORTED_LOCALES =
+            "en " +
+            "en_US " +
+            "en_GB " +
+            "en_AU " +
+            "en_CA " +
+            "en_IE " +
+            "en_IN " +
+            "en_NZ " +
+            "en_SG " +
+            "en_ZA ";
+    
+    // The private IME option used to indicate that no microphone should be shown for a
+    // given text field. For instance this is specified by the search dialog when the
+    // dialog is already showing a voice search button.
+    private static final String IME_OPTION_NO_MICROPHONE = "nm";
+    
     public static final String PREF_SELECTED_LANGUAGES = "selected_languages";
     public static final String PREF_INPUT_LANGUAGE = "input_language";
 
     private static final int MSG_UPDATE_SUGGESTIONS = 0;
     private static final int MSG_START_TUTORIAL = 1;
     private static final int MSG_UPDATE_SHIFT_STATE = 2;
+    private static final int MSG_VOICE_RESULTS = 3;
+    private static final int MSG_START_LISTENING_AFTER_SWIPE = 4;
+
+    // If we detect a swipe gesture within N ms of typing, then swipe is
+    // ignored, since it may in fact be two key presses in quick succession.
+    private static final long MIN_MILLIS_AFTER_TYPING_BEFORE_SWIPE = 1000;
+
+    // If we detect a swipe gesture, and the user types N ms later, cancel the
+    // swipe since it was probably a false trigger.
+    private static final long MIN_MILLIS_AFTER_SWIPE_TO_WAIT_FOR_TYPING = 500;
     
     // How many continuous deletes at which to start deleting at a higher speed.
     private static final int DELETE_ACCELERATE_AT = 20;
@@ -102,7 +156,7 @@ public class LatinIME extends InputMethodService
     // Contextual menu positions
     private static final int POS_SETTINGS = 0;
     private static final int POS_METHOD = 1;
-    
+
     private LatinKeyboardView mInputView;
     private CandidateViewContainer mCandidateViewContainer;
     private CandidateView mCandidateView;
@@ -110,6 +164,7 @@ public class LatinIME extends InputMethodService
     private CompletionInfo[] mCompletions;
     
     private AlertDialog mOptionsDialog;
+    private AlertDialog mVoiceWarningDialog;
     
     KeyboardSwitcher mKeyboardSwitcher;
     
@@ -117,6 +172,8 @@ public class LatinIME extends InputMethodService
     private ContactsDictionary mContactsDictionary;
     private ExpandableDictionary mAutoDictionary;
 
+    private Hints mHints;
+    
     Resources mResources;
 
     private String mLocale;
@@ -125,6 +182,13 @@ public class LatinIME extends InputMethodService
     private WordComposer mWord = new WordComposer();
     private int mCommittedLength;
     private boolean mPredicting;
+    private boolean mRecognizing;
+    private boolean mAfterVoiceInput;
+    private boolean mImmediatelyAfterVoiceInput;
+    private boolean mShowingVoiceSuggestions;
+    private boolean mImmediatelyAfterVoiceSuggestions;
+    private boolean mVoiceInputHighlighted;
+    private boolean mEnableVoiceButton;
     private CharSequence mBestWord;
     private boolean mPredictionOn;
     private boolean mCompletionOn;
@@ -133,14 +197,22 @@ public class LatinIME extends InputMethodService
     private boolean mAutoCorrectEnabled;
     private boolean mAutoCorrectOn;
     private boolean mCapsLock;
+    private boolean mPasswordText;
+    private boolean mEmailText;
     private boolean mVibrateOn;
     private boolean mSoundOn;
     private boolean mAutoCap;
     private boolean mQuickFixes;
+    private boolean mHasUsedVoiceInput;
+    private boolean mHasUsedVoiceInputUnsupportedLocale;
+    private boolean mLocaleSupportedForVoiceInput;
     private boolean mShowSuggestions;
+    private boolean mSuggestionShouldReplaceCurrentWord;
+    private boolean mIsShowingHint;
     private int     mCorrectionMode;
+    private boolean mEnableVoice = true;
     private int     mOrientation;
-
+    
     // Indicates whether the suggestion strip is to be on in landscape
     private boolean mJustAccepted;
     private CharSequence mJustRevertedSeparator;
@@ -159,6 +231,17 @@ public class LatinIME extends InputMethodService
 
     private String mWordSeparators;
     private String mSentenceSeparators;
+    private VoiceInput mVoiceInput;
+    private VoiceResults mVoiceResults = new VoiceResults();
+    private long mSwipeTriggerTimeMillis;
+
+    // For each word, a list of potential replacements, usually from voice.
+    private Map<String, List<CharSequence>> mWordToSuggestions = new HashMap();
+
+    private class VoiceResults {
+        List<String> candidates;
+        Map<String, List<CharSequence>> alternatives;
+    }
     private int mCurrentInputLocale = 0;
     private String mInputLanguage;
     private String[] mSelectedLanguageArray;
@@ -186,6 +269,13 @@ public class LatinIME extends InputMethodService
                 case MSG_UPDATE_SHIFT_STATE:
                     updateShiftKeyState(getCurrentInputEditorInfo());
                     break;
+                case MSG_VOICE_RESULTS:
+                    handleVoiceResults();
+                    break;
+                case MSG_START_LISTENING_AFTER_SWIPE:
+                    if (mLastKeyTime < mSwipeTriggerTimeMillis) {
+                        startListening(true);
+                    }
             }
         }
     };
@@ -212,6 +302,19 @@ public class LatinIME extends InputMethodService
         // register to receive ringer mode changes for silent mode
         IntentFilter filter = new IntentFilter(AudioManager.RINGER_MODE_CHANGED_ACTION);
         registerReceiver(mReceiver, filter);
+        if (VOICE_INSTALLED) {
+            mVoiceInput = new VoiceInput(this, this);
+            mHints = new Hints(this, new Hints.Display() {
+                public void showHint(int viewResource) {
+                    LayoutInflater inflater = (LayoutInflater) getSystemService(
+                            Context.LAYOUT_INFLATER_SERVICE);
+                    View view = inflater.inflate(viewResource, null);
+                    setCandidatesView(view);
+                    setCandidatesViewShown(true);
+                    mIsShowingHint = true;
+                }
+              });
+        }
         PreferenceManager.getDefaultSharedPreferences(this)
                 .registerOnSharedPreferenceChangeListener(this);
     }
@@ -228,7 +331,6 @@ public class LatinIME extends InputMethodService
             mSuggest.close();
         }
         mSuggest = new Suggest(this, R.raw.main);
-        if (mUserDictionary != null) mUserDictionary.close();
         mUserDictionary = new UserDictionary(this);
         if (mContactsDictionary == null) {
             mContactsDictionary = new ContactsDictionary(this);
@@ -248,10 +350,14 @@ public class LatinIME extends InputMethodService
         orig.updateConfiguration(conf, orig.getDisplayMetrics());
     }
 
-    @Override public void onDestroy() {
+    @Override
+    public void onDestroy() {
         mUserDictionary.close();
         mContactsDictionary.close();
         unregisterReceiver(mReceiver);
+        if (VOICE_INSTALLED) {
+            mVoiceInput.destroy();
+        }
         super.onDestroy();
     }
 
@@ -262,7 +368,9 @@ public class LatinIME extends InputMethodService
         }
         // If orientation changed while predicting, commit the change
         if (conf.orientation != mOrientation) {
-            commitTyped(getCurrentInputConnection());
+            InputConnection ic = getCurrentInputConnection();
+            commitTyped(ic);
+            if (ic != null) ic.finishComposingText(); // For voice input
             mOrientation = conf.orientation;
         }
         reloadKeyboards();
@@ -276,10 +384,27 @@ public class LatinIME extends InputMethodService
         mKeyboardSwitcher.setInputView(mInputView);
         mKeyboardSwitcher.makeKeyboards(true);
         mInputView.setOnKeyboardActionListener(this);
-        mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_TEXT, 0);
+        mKeyboardSwitcher.setKeyboardMode(
+                KeyboardSwitcher.MODE_TEXT, 0,
+                shouldShowVoiceButton(makeFieldContext(), getCurrentInputEditorInfo()));
         return mInputView;
     }
 
+    @Override
+    public void onInitializeInterface() {
+        // Create a new view associated with voice input if the old
+        // view is stuck in another layout (e.g. if switching from
+        // portrait to landscape while speaking)
+        // NOTE: This must be done here because for some reason
+        // onCreateInputView isn't called after an orientation change while
+        // speech rec is in progress.
+        if (mVoiceInput != null && mVoiceInput.getView().getParent() != null) {
+            mVoiceInput.newView();
+        }
+
+        super.onInitializeInterface();
+    }
+
     @Override
     public View onCreateCandidatesView() {
         mKeyboardSwitcher.makeKeyboards(true);
@@ -308,32 +433,54 @@ public class LatinIME extends InputMethodService
 
         TextEntryState.newSession(this);
 
+        // Most such things we decide below in the switch statement, but we need to know
+        // now whether this is a password text field, because we need to know now (before
+        // the switch statement) whether we want to enable the voice button.
+        mPasswordText = false;
+        int variation = attribute.inputType & EditorInfo.TYPE_MASK_VARIATION;
+        if (variation == EditorInfo.TYPE_TEXT_VARIATION_PASSWORD ||
+                variation == EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) {
+            mPasswordText = true;
+        }
+        
+        mEnableVoiceButton = shouldShowVoiceButton(makeFieldContext(), attribute);
+
+        mAfterVoiceInput = false;
+        mImmediatelyAfterVoiceInput = false;
+        mShowingVoiceSuggestions = false;
+        mImmediatelyAfterVoiceSuggestions = false;
+        mVoiceInputHighlighted = false;
+        boolean disableAutoCorrect = false;
+        mWordToSuggestions.clear();
         mInputTypeNoAutoCorrect = false;
         mPredictionOn = false;
         mCompletionOn = false;
         mCompletions = null;
         mCapsLock = false;
-        switch (attribute.inputType&EditorInfo.TYPE_MASK_CLASS) {
+        mEmailText = false;
+        switch (attribute.inputType & EditorInfo.TYPE_MASK_CLASS) {
             case EditorInfo.TYPE_CLASS_NUMBER:
             case EditorInfo.TYPE_CLASS_DATETIME:
                 mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_SYMBOLS,
-                        attribute.imeOptions);
+                        attribute.imeOptions, mEnableVoiceButton);
                 break;
             case EditorInfo.TYPE_CLASS_PHONE:
                 mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_PHONE,
-                        attribute.imeOptions);
+                        attribute.imeOptions, mEnableVoiceButton);
                 break;
             case EditorInfo.TYPE_CLASS_TEXT:
                 mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_TEXT,
-                        attribute.imeOptions);
+                        attribute.imeOptions, mEnableVoiceButton);
                 //startPrediction();
                 mPredictionOn = true;
                 // Make sure that passwords are not displayed in candidate view
-                int variation = attribute.inputType &  EditorInfo.TYPE_MASK_VARIATION;
                 if (variation == EditorInfo.TYPE_TEXT_VARIATION_PASSWORD ||
                         variation == EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD ) {
                     mPredictionOn = false;
                 }
+                if (variation == EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS) {
+                    mEmailText = true;
+                }
                 if (variation == EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS
                         || variation == EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME) {
                     mAutoSpace = false;
@@ -343,14 +490,14 @@ public class LatinIME extends InputMethodService
                 if (variation == EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS) {
                     mPredictionOn = false;
                     mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_EMAIL,
-                            attribute.imeOptions);
+                            attribute.imeOptions, mEnableVoiceButton);
                 } else if (variation == EditorInfo.TYPE_TEXT_VARIATION_URI) {
                     mPredictionOn = false;
                     mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_URL,
-                            attribute.imeOptions);
+                            attribute.imeOptions, mEnableVoiceButton);
                 } else if (variation == EditorInfo.TYPE_TEXT_VARIATION_SHORT_MESSAGE) {
                     mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_IM,
-                            attribute.imeOptions);
+                            attribute.imeOptions, mEnableVoiceButton);
                 } else if (variation == EditorInfo.TYPE_TEXT_VARIATION_FILTER) {
                     mPredictionOn = false;
                 } else if (variation == EditorInfo.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT) {
@@ -379,17 +526,25 @@ public class LatinIME extends InputMethodService
                 break;
             default:
                 mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_TEXT,
-                        attribute.imeOptions);
+                        attribute.imeOptions, mEnableVoiceButton);
                 updateShiftKeyState(attribute);
         }
         mInputView.closing();
         mComposing.setLength(0);
         mPredicting = false;
         mDeleteCount = 0;
-        setCandidatesViewShown(false);
-        if (mCandidateView != null) mCandidateView.setSuggestions(null, false, false, false);
         loadSettings();
 
+        setCandidatesViewShown(false);
+        setSuggestions(null, false, false, false);
+
+        // Override auto correct
+        if (disableAutoCorrect) {
+            mAutoCorrectOn = false;
+            if (mCorrectionMode == Suggest.CORRECTION_FULL) {
+                mCorrectionMode = Suggest.CORRECTION_BASIC;
+            }
+        }
         // If the dictionary is not big enough, don't auto correct
         mHasDictionary = mSuggest.hasMainDictionary();
 
@@ -404,10 +559,31 @@ public class LatinIME extends InputMethodService
     @Override
     public void onFinishInput() {
         super.onFinishInput();
-
+        
+        if (mAfterVoiceInput) mVoiceInput.logInputEnded();
+        
+        mVoiceInput.flushLogs();
+        
         if (mInputView != null) {
             mInputView.closing();
         }
+        if (VOICE_INSTALLED & mRecognizing) {
+            mVoiceInput.cancel();
+        }
+    }
+
+    @Override
+    public void onUpdateExtractedText(int token, ExtractedText text) {
+        super.onUpdateExtractedText(token, text);
+        InputConnection ic = getCurrentInputConnection();
+        if (!mImmediatelyAfterVoiceInput && mAfterVoiceInput && ic != null) {
+            mVoiceInput.logTextModified();
+
+            if (mHints.showPunctuationHintIfNecessary(ic)) {
+                mVoiceInput.logPunctuationHintDisplayed();
+            }
+        }
+        mImmediatelyAfterVoiceInput = false;
     }
 
     @Override
@@ -416,10 +592,22 @@ public class LatinIME extends InputMethodService
             int candidatesStart, int candidatesEnd) {
         super.onUpdateSelection(oldSelStart, oldSelEnd, newSelStart, newSelEnd,
                 candidatesStart, candidatesEnd);
+
+        if (DEBUG) {
+            Log.i(TAG, "onUpdateSelection: oss=" + oldSelStart
+                    + ", ose=" + oldSelEnd
+                    + ", nss=" + newSelStart
+                    + ", nse=" + newSelEnd
+                    + ", cs=" + candidatesStart
+                    + ", ce=" + candidatesEnd);
+        }
+
+        mSuggestionShouldReplaceCurrentWord = false;
         // If the current selection in the text view changes, we should
         // clear whatever candidate text we have.
-        if (mComposing.length() > 0 && mPredicting && (newSelStart != candidatesEnd
-                || newSelEnd != candidatesEnd)) {
+        if ((((mComposing.length() > 0 && mPredicting) || mVoiceInputHighlighted)
+                && (newSelStart != candidatesEnd
+                    || newSelEnd != candidatesEnd))) {
             mComposing.setLength(0);
             mPredicting = false;
             updateSuggestions();
@@ -428,25 +616,58 @@ public class LatinIME extends InputMethodService
             if (ic != null) {
                 ic.finishComposingText();
             }
+            mVoiceInputHighlighted = false;
         } else if (!mPredicting && !mJustAccepted
                 && TextEntryState.getState() == TextEntryState.STATE_ACCEPTED_DEFAULT) {
             TextEntryState.reset();
         }
         mJustAccepted = false;
         postUpdateShiftKeyState();
+
+        if (VOICE_INSTALLED) {
+            if (mShowingVoiceSuggestions) {
+                if (mImmediatelyAfterVoiceSuggestions) {
+                    mImmediatelyAfterVoiceSuggestions = false;
+                } else {
+                    updateSuggestions();
+                    mShowingVoiceSuggestions = false;
+                }
+            }
+            if (VoiceInput.ENABLE_WORD_CORRECTIONS) {
+                // If we have alternatives for the current word, then show them.
+                String word = EditingUtil.getWordAtCursor(
+                        getCurrentInputConnection(), getWordSeparators());
+                if (word != null && mWordToSuggestions.containsKey(word.trim())) {
+                    mSuggestionShouldReplaceCurrentWord = true;
+                    final List<CharSequence> suggestions = mWordToSuggestions.get(word.trim());
+
+                    setSuggestions(suggestions, false, true, true);
+                    setCandidatesViewShown(true);
+                }
+            }
+        }
     }
 
     @Override
     public void hideWindow() {
+        if (mAfterVoiceInput) mVoiceInput.logInputEnded();
         if (TRACE) Debug.stopMethodTracing();
         if (mOptionsDialog != null && mOptionsDialog.isShowing()) {
             mOptionsDialog.dismiss();
             mOptionsDialog = null;
         }
+        if (mVoiceWarningDialog != null && mVoiceWarningDialog.isShowing()) {
+            mVoiceInput.logKeyboardWarningDialogDismissed();
+            mVoiceWarningDialog.dismiss();
+            mVoiceWarningDialog = null;
+        }
         if (mTutorial != null) {
             mTutorial.close();
             mTutorial = null;
         }
+        if (VOICE_INSTALLED & mRecognizing) {
+            mVoiceInput.cancel();
+        }
         super.hideWindow();
         TextEntryState.endSession();
     }
@@ -462,7 +683,7 @@ public class LatinIME extends InputMethodService
         if (mCompletionOn) {
             mCompletions = completions;
             if (completions == null) {
-                mCandidateView.setSuggestions(null, false, false, false);
+                setSuggestions(null, false, false, false);
                 return;
             }
             
@@ -472,7 +693,7 @@ public class LatinIME extends InputMethodService
                 if (ci != null) stringList.add(ci.getText());
             }
             //CharSequence typedWord = mWord.getTypedWord();
-            mCandidateView.setSuggestions(stringList, true, true, true);
+            setSuggestions(stringList, true, true, true);
             mBestWord = null;
             setCandidatesViewShown(isCandidateStripVisible() || mCompletionOn);
         }
@@ -546,6 +767,20 @@ public class LatinIME extends InputMethodService
         return super.onKeyUp(keyCode, event);
     }
 
+    private void revertVoiceInput() {
+        InputConnection ic = getCurrentInputConnection();
+        if (ic != null) ic.commitText("", 1);
+        updateSuggestions();
+        mVoiceInputHighlighted = false;
+    }
+
+    private void commitVoiceInput() {
+        InputConnection ic = getCurrentInputConnection();
+        if (ic != null) ic.finishComposingText();
+        updateSuggestions();
+        mVoiceInputHighlighted = false;
+    }
+
     private void reloadKeyboards() {
         if (mKeyboardSwitcher == null) {
             mKeyboardSwitcher = new KeyboardSwitcher(this, this);
@@ -670,6 +905,11 @@ public class LatinIME extends InputMethodService
             case Keyboard.KEYCODE_MODE_CHANGE:
                 changeKeyboardMode();
                 break;
+            case LatinKeyboardView.KEYCODE_VOICE:
+                if (VOICE_INSTALLED) {
+                    startListening(false /* was a button press, was not a swipe */);
+                }
+                break;
             default:
                 if (isWordSeparator(primaryCode)) {
                     handleSeparator(primaryCode);
@@ -698,6 +938,10 @@ public class LatinIME extends InputMethodService
     }
 
     private void handleBackspace() {
+        if (VOICE_INSTALLED && mVoiceInputHighlighted) {
+            revertVoiceInput();
+            return;
+        }
         boolean deleteChar = false;
         InputConnection ic = getCurrentInputConnection();
         if (ic == null) return;
@@ -743,6 +987,9 @@ public class LatinIME extends InputMethodService
     }
     
     private void handleCharacter(int primaryCode, int[] keyCodes) {
+        if (VOICE_INSTALLED && mVoiceInputHighlighted) {
+            commitVoiceInput();
+        }
         if (isAlphabet(primaryCode) && isPredictionOn() && !isCursorTouchingWord()) {
             if (!mPredicting) {
                 mPredicting = true;
@@ -778,6 +1025,9 @@ public class LatinIME extends InputMethodService
     }
 
     private void handleSeparator(int primaryCode) {
+        if (VOICE_INSTALLED && mVoiceInputHighlighted) {
+            commitVoiceInput();
+        }
         boolean pickedDefault = false;
         // Handle separator
         InputConnection ic = getCurrentInputConnection();
@@ -816,9 +1066,12 @@ public class LatinIME extends InputMethodService
             ic.endBatchEdit();
         }
     }
-    
+
     private void handleClose() {
         commitTyped(getCurrentInputConnection());
+        if (VOICE_INSTALLED & mRecognizing) {
+            mVoiceInput.cancel();
+        }
         requestHideSelf(0);
         mInputView.closing();
         TextEntryState.endSession();
@@ -852,14 +1105,205 @@ public class LatinIME extends InputMethodService
         return isPredictionOn() && mShowSuggestions;
     }
 
+    public void onCancelVoice() {
+        if (mRecognizing) {
+            switchToKeyboardView();
+        }
+    }
+
+    private void switchToKeyboardView() {
+      mHandler.post(new Runnable() {
+          public void run() {
+              mRecognizing = false;
+              if (mInputView != null) {
+                setInputView(mInputView);
+              }
+              updateInputViewShown();
+          }});
+    }
+
+    private void switchToRecognitionStatusView() {
+      mHandler.post(new Runnable() {
+          public void run() {
+              mRecognizing = true;
+              setInputView(mVoiceInput.getView());
+              updateInputViewShown();
+          }});
+    }
+
+    private void startListening(boolean swipe) {
+        if (!mHasUsedVoiceInput ||
+                (!mLocaleSupportedForVoiceInput && !mHasUsedVoiceInputUnsupportedLocale)) {
+            // Calls reallyStartListening if user clicks OK, does nothing if user clicks Cancel.
+            showVoiceWarningDialog(swipe);
+        } else {
+            reallyStartListening(swipe);
+        }
+    }
+    
+    private void reallyStartListening(boolean swipe) {
+        if (!mHasUsedVoiceInput) {
+            // The user has started a voice input, so remember that in the
+            // future (so we don't show the warning dialog after the first run).
+            SharedPreferences.Editor editor =
+                    PreferenceManager.getDefaultSharedPreferences(this).edit();
+            editor.putBoolean(PREF_HAS_USED_VOICE_INPUT, true);
+            editor.commit();
+            mHasUsedVoiceInput = true;
+        }
+        
+        if (!mLocaleSupportedForVoiceInput && !mHasUsedVoiceInputUnsupportedLocale) {
+            // The user has started a voice input from an unsupported locale, so remember that
+            // in the future (so we don't show the warning dialog the next time they do this).
+            SharedPreferences.Editor editor =
+                    PreferenceManager.getDefaultSharedPreferences(this).edit();
+            editor.putBoolean(PREF_HAS_USED_VOICE_INPUT_UNSUPPORTED_LOCALE, true);
+            editor.commit();
+            mHasUsedVoiceInputUnsupportedLocale = true;
+        }
+        
+        // Clear N-best suggestions
+        setSuggestions(null, false, false, true);
+
+        FieldContext context = new FieldContext(
+            getCurrentInputConnection(), getCurrentInputEditorInfo());
+        mVoiceInput.startListening(context, swipe);
+        switchToRecognitionStatusView();
+    }
+    
+    private void showVoiceWarningDialog(final boolean swipe) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(this);
+        builder.setCancelable(true);
+        builder.setIcon(R.drawable.ic_mic_dialog);
+        builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+            public void onClick(DialogInterface dialog, int whichButton) {
+                mVoiceInput.logKeyboardWarningDialogOk();
+                reallyStartListening(swipe);
+            }
+        });
+        builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
+            public void onClick(DialogInterface dialog, int whichButton) {
+                mVoiceInput.logKeyboardWarningDialogCancel();
+            }
+        });
+        
+        if (mLocaleSupportedForVoiceInput) {
+            String message = getString(R.string.voice_warning_may_not_understand) + "\n\n" +
+                    getString(R.string.voice_warning_how_to_turn_off);
+            builder.setMessage(message);
+        } else {
+            String message = getString(R.string.voice_warning_locale_not_supported) + "\n\n" +
+                    getString(R.string.voice_warning_may_not_understand) + "\n\n" +
+                    getString(R.string.voice_warning_how_to_turn_off);
+            builder.setMessage(message);
+        }
+        
+        builder.setTitle(R.string.voice_warning_title);
+        mVoiceWarningDialog = builder.create();
+        
+        Window window = mVoiceWarningDialog.getWindow();
+        WindowManager.LayoutParams lp = window.getAttributes();
+        lp.token = mInputView.getWindowToken();
+        lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG;
+        window.setAttributes(lp);
+        window.addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
+        mVoiceInput.logKeyboardWarningDialogShown();
+        mVoiceWarningDialog.show();
+    }
+
+    public void onVoiceResults(List<String> candidates,
+            Map<String, List<CharSequence>> alternatives) {
+        if (!mRecognizing) {
+            return;
+        }
+        mVoiceResults.candidates = candidates;
+        mVoiceResults.alternatives = alternatives;
+        mHandler.sendMessage(mHandler.obtainMessage(MSG_VOICE_RESULTS));
+    }
+
+    private void handleVoiceResults() {
+        mAfterVoiceInput = true;
+        mImmediatelyAfterVoiceInput = true;
+
+        InputConnection ic = getCurrentInputConnection();
+        if (!isFullscreenMode()) {
+            // Start listening for updates to the text from typing, etc.
+            if (ic != null) {
+                ExtractedTextRequest req = new ExtractedTextRequest();
+                ic.getExtractedText(req, InputConnection.GET_EXTRACTED_TEXT_MONITOR);
+            }
+        }
+
+        vibrate();
+        switchToKeyboardView();
+
+        final List<CharSequence> nBest = new ArrayList<CharSequence>();
+        boolean capitalizeFirstWord = preferCapitalization()
+                || (mKeyboardSwitcher.isAlphabetMode() && mInputView.isShifted());
+        for (String c : mVoiceResults.candidates) {
+            if (capitalizeFirstWord) {
+                c = Character.toUpperCase(c.charAt(0)) + c.substring(1, c.length());
+            }
+            nBest.add(c);
+        }
+
+        if (nBest.size() == 0) {
+            return;
+        }
+
+        String bestResult = nBest.get(0).toString();
+
+        mVoiceInput.logVoiceInputDelivered();
+
+        mHints.registerVoiceResult(bestResult);
+
+        if (ic != null) ic.beginBatchEdit(); // To avoid extra updates on committing older text
+
+        commitTyped(ic);
+        EditingUtil.appendText(ic, bestResult);
+
+        if (ic != null) ic.endBatchEdit();
+
+        // Show N-Best alternates, if there is more than one choice.
+        if (nBest.size() > 1) {
+            mImmediatelyAfterVoiceSuggestions = true;
+            mShowingVoiceSuggestions = true;
+            setSuggestions(nBest.subList(1, nBest.size()), false, true, true);
+            setCandidatesViewShown(true);
+        }
+        mVoiceInputHighlighted = true;
+        mWordToSuggestions.putAll(mVoiceResults.alternatives);
+
+    }
+
+    private void setSuggestions(
+            List<CharSequence> suggestions,
+            boolean completions,
+
+            boolean typedWordValid,
+            boolean haveMinimalSuggestion) {
+
+        if (mIsShowingHint) {
+             setCandidatesView(mCandidateViewContainer);
+             mIsShowingHint = false;
+        }
+
+        if (mCandidateView != null) {
+            mCandidateView.setSuggestions(
+                    suggestions, completions, typedWordValid, haveMinimalSuggestion);
+        }
+    }
+
     private void updateSuggestions() {
+        mSuggestionShouldReplaceCurrentWord = false;
+
         // Check if we have a suggestion engine attached.
-        if (mSuggest == null || !isPredictionOn()) {
+        if ((mSuggest == null || !isPredictionOn()) && !mVoiceInputHighlighted) {
             return;
         }
-        
+
         if (!mPredicting) {
-            mCandidateView.setSuggestions(null, false, false, false);
+            setSuggestions(null, false, false, false);
             return;
         }
 
@@ -876,7 +1320,7 @@ public class LatinIME extends InputMethodService
         // Don't auto-correct words with multiple capital letter
         correctionAvailable &= !mWord.isMostlyCaps();
 
-        mCandidateView.setSuggestions(stringList, false, typedWordValid, correctionAvailable); 
+        setSuggestions(stringList, false, typedWordValid, correctionAvailable);
         if (stringList.size() > 0) {
             if (correctionAvailable && !typedWordValid && stringList.size() > 1) {
                 mBestWord = stringList.get(1);
@@ -903,6 +1347,8 @@ public class LatinIME extends InputMethodService
     }
 
     public void pickSuggestionManually(int index, CharSequence suggestion) {
+        if (mAfterVoiceInput && mShowingVoiceSuggestions) mVoiceInput.logNBestChoose(index);
+
         if (mCompletionOn && mCompletions != null && index >= 0
                 && index < mCompletions.length) {
             CompletionInfo ci = mCompletions[index];
@@ -937,7 +1383,12 @@ public class LatinIME extends InputMethodService
         }
         InputConnection ic = getCurrentInputConnection();
         if (ic != null) {
-            ic.commitText(suggestion, 1);
+            if (mSuggestionShouldReplaceCurrentWord) {
+                EditingUtil.deleteWordAtCursor(ic, getWordSeparators());
+            }
+            if (!VoiceInput.DELETE_SYMBOL.equals(suggestion)) {
+                ic.commitText(suggestion, 1);
+            }
         }
         // Add the word to the auto dictionary if it's not a known word
         if (mAutoDictionary.isValidWord(suggestion) || !mSuggest.isValidWord(suggestion)) {
@@ -945,9 +1396,7 @@ public class LatinIME extends InputMethodService
         }
         mPredicting = false;
         mCommittedLength = suggestion.length();
-        if (mCandidateView != null) {
-            mCandidateView.setSuggestions(null, false, false, false);
-        }
+        setSuggestions(null, false, false, false);
         updateShiftKeyState(getCurrentInputEditorInfo());
     }
 
@@ -1016,6 +1465,11 @@ public class LatinIME extends InputMethodService
     }
 
     public void swipeRight() {
+        if (userHasNotTypedRecently() && VOICE_INSTALLED && mEnableVoice &&
+                fieldCanDoVoice(makeFieldContext())) {
+            startListening(true /* was a swipe */);
+        }
+
         if (LatinKeyboardView.DEBUG_AUTO_PLAY) {
             ClipboardManager cm = ((ClipboardManager)getSystemService(CLIPBOARD_SERVICE));
             CharSequence text = cm.getText();
@@ -1035,7 +1489,7 @@ public class LatinIME extends InputMethodService
         int currentKeyboardMode = mKeyboardSwitcher.getKeyboardMode();
         reloadKeyboards();
         mKeyboardSwitcher.makeKeyboards(true);
-        mKeyboardSwitcher.setKeyboardMode(currentKeyboardMode, 0);
+        mKeyboardSwitcher.setKeyboardMode(currentKeyboardMode, 0, mEnableVoiceButton);
         initSuggest(mInputLanguage);
         persistInputLanguage(mInputLanguage);
         updateShiftKeyState(getCurrentInputEditorInfo());
@@ -1068,7 +1522,30 @@ public class LatinIME extends InputMethodService
     public void onRelease(int primaryCode) {
         //vibrate();
     }
+    
+    private FieldContext makeFieldContext() {
+        return new FieldContext(getCurrentInputConnection(), getCurrentInputEditorInfo());
+    }
+    
+    private boolean fieldCanDoVoice(FieldContext fieldContext) {
+        return !mPasswordText
+                && mVoiceInput != null
+                && !mVoiceInput.isBlacklistedField(fieldContext);
+    }
+
+    private boolean fieldIsRecommendedForVoice(FieldContext fieldContext) {
+        // TODO: Move this logic into the VoiceInput method.
+        return !mPasswordText && !mEmailText && mVoiceInput.isRecommendedField(fieldContext);
+    }
 
+    private boolean shouldShowVoiceButton(FieldContext fieldContext, EditorInfo attribute) {
+        return ENABLE_VOICE_BUTTON
+                && mEnableVoice
+                && fieldCanDoVoice(fieldContext)
+                && !(attribute != null && attribute.privateImeOptions != null
+                        && attribute.privateImeOptions.equals(IME_OPTION_NO_MICROPHONE));
+    }
+    
     // receive ringer mode changes to detect silent mode
     private BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
@@ -1087,6 +1564,26 @@ public class LatinIME extends InputMethodService
         }
     }
 
+    private boolean userHasNotTypedRecently() {
+        return (SystemClock.uptimeMillis() - mLastKeyTime)
+            > MIN_MILLIS_AFTER_TYPING_BEFORE_SWIPE;
+    }
+
+    /*
+     * Only trigger a swipe action if the user hasn't typed X millis before
+     * now, and if they don't type Y millis after the swipe is detected. This
+     * delays the onset of the swipe action by Y millis.
+     */
+    private void conservativelyTriggerSwipeAction(final Runnable action) {
+        if (userHasNotTypedRecently()) {
+            mSwipeTriggerTimeMillis = System.currentTimeMillis();
+            mHandler.sendMessageDelayed(
+                    mHandler.obtainMessage(MSG_START_LISTENING_AFTER_SWIPE),
+                    MIN_MILLIS_AFTER_SWIPE_TO_WAIT_FOR_TYPING);
+        }
+    }
+
+
     private void playKeyClick(int primaryCode) {
         // if mAudioManager is null, we don't have the ringer state yet
         // mAudioManager will be set by updateRingerMode
@@ -1162,10 +1659,14 @@ public class LatinIME extends InputMethodService
         }
     }
 
-    private void launchSettings() {
+    protected void launchSettings() {
+        launchSettings(LatinIMESettings.class);
+    }
+
+    protected void launchSettings(Class settingsClass) {
         handleClose();
         Intent intent = new Intent();
-        intent.setClass(LatinIME.this, LatinIMESettings.class);
+        intent.setClass(LatinIME.this, settingsClass);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         startActivity(intent);
     }
@@ -1177,10 +1678,37 @@ public class LatinIME extends InputMethodService
         mSoundOn = sp.getBoolean(PREF_SOUND_ON, false);
         mAutoCap = sp.getBoolean(PREF_AUTO_CAP, true);
         mQuickFixes = sp.getBoolean(PREF_QUICK_FIXES, true);
+        mHasUsedVoiceInput = sp.getBoolean(PREF_HAS_USED_VOICE_INPUT, false);
+        mHasUsedVoiceInputUnsupportedLocale =
+                sp.getBoolean(PREF_HAS_USED_VOICE_INPUT_UNSUPPORTED_LOCALE, false);
+        
+        // Get the current list of supported locales and check the current locale against that
+        // list. We cache this value so as not to check it every time the user starts a voice
+        // input. Because this method is called by onStartInputView, this should mean that as
+        // long as the locale doesn't change while the user is keeping the IME open, the
+        // value should never be stale.
+        String supportedLocalesString = GoogleSettingsUtil.getGservicesString(
+                getContentResolver(),
+                GoogleSettingsUtil.LATIN_IME_VOICE_INPUT_SUPPORTED_LOCALES,
+                DEFAULT_VOICE_INPUT_SUPPORTED_LOCALES);
+        ArrayList<String> voiceInputSupportedLocales =
+                Lists.newArrayList(supportedLocalesString.split("\\s+"));
+        
+        mLocaleSupportedForVoiceInput = voiceInputSupportedLocales.contains(mLocale);
+        
         // If there is no auto text data, then quickfix is forced to "on", so that the other options
         // will continue to work
+
         if (AutoText.getSize(mInputView) < 1) mQuickFixes = true;
         mShowSuggestions = sp.getBoolean(PREF_SHOW_SUGGESTIONS, true) & mQuickFixes;
+
+        if (VOICE_INSTALLED) {
+            boolean enableVoice = sp.getBoolean(PREF_ENABLE_VOICE, true);
+            if (enableVoice != mEnableVoice && mKeyboardSwitcher != null) {
+                mKeyboardSwitcher.setVoiceMode(enableVoice);
+            }
+            mEnableVoice = enableVoice;
+        }
         mAutoCorrectEnabled = sp.getBoolean(PREF_AUTO_COMPLETE,
                 mResources.getBoolean(R.bool.enable_autocorrect)) & mShowSuggestions;
         updateCorrectionMode();
@@ -1219,7 +1747,7 @@ public class LatinIME extends InputMethodService
         builder.setIcon(R.drawable.ic_dialog_keyboard);
         builder.setNegativeButton(android.R.string.cancel, null);
         CharSequence itemSettings = getString(R.string.english_ime_settings);
-        CharSequence itemInputMethod = getString(com.android.internal.R.string.inputMethod);
+        CharSequence itemInputMethod = getString(R.string.inputMethod);
         builder.setItems(new CharSequence[] {
                 itemSettings, itemInputMethod},
                 new DialogInterface.OnClickListener() {
@@ -1327,6 +1855,3 @@ public class LatinIME extends InputMethodService
         }
     }
 }
-
-
-
diff --git a/src/com/android/inputmethod/latin/LatinIMEBackupAgent.java b/src/com/android/inputmethod/latin/LatinIMEBackupAgent.java
index c454f120e4..b6a800ebd4 100644
--- a/src/com/android/inputmethod/latin/LatinIMEBackupAgent.java
+++ b/src/com/android/inputmethod/latin/LatinIMEBackupAgent.java
@@ -26,6 +26,6 @@ public class LatinIMEBackupAgent extends BackupHelperAgent {
 
     public void onCreate() {
         addHelper("shared_pref", new SharedPreferencesBackupHelper(this,
-                "com.android.inputmethod.latin_preferences"));
+                getPackageName() + "_preferences"));
     }
 }
diff --git a/src/com/android/inputmethod/latin/LatinIMESettings.java b/src/com/android/inputmethod/latin/LatinIMESettings.java
index c8ea309e3e..4c221b9056 100644
--- a/src/com/android/inputmethod/latin/LatinIMESettings.java
+++ b/src/com/android/inputmethod/latin/LatinIMESettings.java
@@ -16,23 +16,53 @@
 
 package com.android.inputmethod.latin;
 
+import com.google.android.collect.Lists;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
 import android.backup.BackupManager;
+import android.content.DialogInterface;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
+import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceGroup;
+import android.preference.Preference.OnPreferenceClickListener;
 import android.text.AutoText;
+import android.util.Log;
+
+import com.android.inputmethod.voice.GoogleSettingsUtil;
+import com.android.inputmethod.voice.VoiceInput;
+import com.android.inputmethod.voice.VoiceInputLogger;
+
+import java.util.ArrayList;
+import java.util.Locale;
 
 public class LatinIMESettings extends PreferenceActivity
-    implements SharedPreferences.OnSharedPreferenceChangeListener {
+        implements SharedPreferences.OnSharedPreferenceChangeListener,
+        OnPreferenceClickListener,
+        DialogInterface.OnDismissListener {
 
     private static final String QUICK_FIXES_KEY = "quick_fixes";
     private static final String SHOW_SUGGESTIONS_KEY = "show_suggestions";
     private static final String PREDICTION_SETTINGS_KEY = "prediction_settings";
+    private static final String VOICE_SETTINGS_KEY = "enable_voice_input";
+    private static final String VOICE_SERVER_KEY = "voice_server_url";
+    
+    private static final String TAG = "LatinIMESettings";
+    
+    // Dialog ids
+    private static final int VOICE_INPUT_CONFIRM_DIALOG = 0;
     
     private CheckBoxPreference mQuickFixes;
     private CheckBoxPreference mShowSuggestions;
+    private CheckBoxPreference mVoicePreference;
+    
+    private VoiceInputLogger mLogger;
+    
+    private boolean mOkClicked = false;
     
     @Override
     protected void onCreate(Bundle icicle) {
@@ -40,8 +70,16 @@ public class LatinIMESettings extends PreferenceActivity
         addPreferencesFromResource(R.xml.prefs);
         mQuickFixes = (CheckBoxPreference) findPreference(QUICK_FIXES_KEY);
         mShowSuggestions = (CheckBoxPreference) findPreference(SHOW_SUGGESTIONS_KEY);
-        getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(
-                this);
+        mVoicePreference = (CheckBoxPreference) findPreference(VOICE_SETTINGS_KEY);
+        
+        SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
+        prefs.registerOnSharedPreferenceChangeListener(this);
+        
+        mVoicePreference.setOnPreferenceClickListener(this);
+        mVoicePreference.setChecked(prefs.getBoolean(
+                VOICE_SETTINGS_KEY, getResources().getBoolean(R.bool.voice_input_default)));
+        
+        mLogger = VoiceInputLogger.getLogger(this);
     }
 
     @Override
@@ -50,10 +88,17 @@ public class LatinIMESettings extends PreferenceActivity
         int autoTextSize = AutoText.getSize(getListView());
         if (autoTextSize < 1) {
             ((PreferenceGroup) findPreference(PREDICTION_SETTINGS_KEY))
-                .removePreference(mQuickFixes);
+                    .removePreference(mQuickFixes);
         } else {
             mShowSuggestions.setDependency(QUICK_FIXES_KEY);
         }
+        if (!LatinIME.VOICE_INSTALLED
+                || !VoiceInput.voiceIsAvailable(this)) {
+            getPreferenceScreen().removePreference(mVoicePreference);
+        }
+        
+        mVoicePreference.setChecked(
+                getPreferenceManager().getSharedPreferences().getBoolean(VOICE_SETTINGS_KEY, true));
     }
 
     @Override
@@ -67,4 +112,91 @@ public class LatinIMESettings extends PreferenceActivity
             String key) {
         (new BackupManager(this)).dataChanged();
     }
+
+    public boolean onPreferenceClick(Preference preference) {
+        if (preference == mVoicePreference) {
+            if (mVoicePreference.isChecked()) {
+                mOkClicked = false;
+                showDialog(VOICE_INPUT_CONFIRM_DIALOG);
+            } else {
+                updateVoicePreference();
+            }
+        }
+        return false;
+    }
+    
+    @Override
+    protected Dialog onCreateDialog(int id) {
+        switch (id) {
+            case VOICE_INPUT_CONFIRM_DIALOG:
+                DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int whichButton) {
+                        if (whichButton == DialogInterface.BUTTON_NEGATIVE) {
+                            mVoicePreference.setChecked(false);
+                            mLogger.settingsWarningDialogCancel();
+                        } else if (whichButton == DialogInterface.BUTTON_POSITIVE) {
+                            mOkClicked = true;
+                            mLogger.settingsWarningDialogOk();
+                        }
+                        updateVoicePreference();
+                    }
+                };
+                AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                        .setTitle(R.string.voice_warning_title)
+                        .setPositiveButton(android.R.string.ok, listener)
+                        .setNegativeButton(android.R.string.cancel, listener);
+                
+                // Get the current list of supported locales and check the current locale against
+                // that list, to decide whether to put a warning that voice input will not work in
+                // the current language as part of the pop-up confirmation dialog.
+                String supportedLocalesString = GoogleSettingsUtil.getGservicesString(
+                        getContentResolver(),
+                        GoogleSettingsUtil.LATIN_IME_VOICE_INPUT_SUPPORTED_LOCALES,
+                        LatinIME.DEFAULT_VOICE_INPUT_SUPPORTED_LOCALES);
+                ArrayList<String> voiceInputSupportedLocales =
+                        Lists.newArrayList(supportedLocalesString.split("\\s+"));
+                boolean localeSupported = voiceInputSupportedLocales.contains(
+                        Locale.getDefault().toString());
+
+                if (localeSupported) {
+                    String message = getString(R.string.voice_warning_may_not_understand) + "\n\n" +
+                            getString(R.string.voice_hint_dialog_message);
+                    builder.setMessage(message);
+                } else {
+                    String message = getString(R.string.voice_warning_locale_not_supported) +
+                            "\n\n" + getString(R.string.voice_warning_may_not_understand) + "\n\n" +
+                            getString(R.string.voice_hint_dialog_message);
+                    builder.setMessage(message);
+                }
+                
+                AlertDialog dialog = builder.create();
+                dialog.setOnDismissListener(this);
+                mLogger.settingsWarningDialogShown();
+                return dialog;
+            default:
+                Log.e(TAG, "unknown dialog " + id);
+                return null;
+        }
+    }
+    
+    public void onDismiss(DialogInterface dialog) {
+        mLogger.settingsWarningDialogDismissed();
+        if (!mOkClicked) {
+            // This assumes that onPreferenceClick gets called first, and this if the user
+            // agreed after the warning, we set the mOkClicked value to true.
+            mVoicePreference.setChecked(false);
+        }
+    }
+        
+    private void updateVoicePreference() {
+        SharedPreferences.Editor editor = getPreferenceManager().getSharedPreferences().edit();
+        boolean isChecked = mVoicePreference.isChecked();
+        if (isChecked) {
+            mLogger.voiceInputSettingEnabled();
+        } else {
+            mLogger.voiceInputSettingDisabled();
+        }
+        editor.putBoolean(VOICE_SETTINGS_KEY, isChecked);
+        editor.commit();
+    }
 }
diff --git a/src/com/android/inputmethod/latin/LatinKeyboardView.java b/src/com/android/inputmethod/latin/LatinKeyboardView.java
index 163d824e00..ea9ccf0b60 100644
--- a/src/com/android/inputmethod/latin/LatinKeyboardView.java
+++ b/src/com/android/inputmethod/latin/LatinKeyboardView.java
@@ -35,8 +35,8 @@ public class LatinKeyboardView extends KeyboardView {
 
     static final int KEYCODE_OPTIONS = -100;
     static final int KEYCODE_SHIFT_LONGPRESS = -101;
-    static final int KEYCODE_F1 = -102;
-
+    static final int KEYCODE_VOICE = -102;
+    static final int KEYCODE_F1 = -103;
     private Keyboard mPhoneKeyboard;
 
     public LatinKeyboardView(Context context, AttributeSet attrs) {
diff --git a/src/com/android/inputmethod/voice/EditingUtil.java b/src/com/android/inputmethod/voice/EditingUtil.java
new file mode 100644
index 0000000000..6316d8ccf1
--- /dev/null
+++ b/src/com/android/inputmethod/voice/EditingUtil.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2009 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.voice;
+
+import android.view.inputmethod.ExtractedText;
+import android.view.inputmethod.ExtractedTextRequest;
+import android.view.inputmethod.InputConnection;
+
+/**
+ * Utility methods to deal with editing text through an InputConnection.
+ */
+public class EditingUtil {
+    private EditingUtil() {};
+
+    /**
+     * Append newText to the text field represented by connection.
+     * The new text becomes selected.
+     */
+    public static void appendText(InputConnection connection, String newText) {
+        if (connection == null) {
+            return;
+        }
+
+        // Commit the composing text
+        connection.finishComposingText();
+
+        // Add a space if the field already has text.
+        CharSequence charBeforeCursor = connection.getTextBeforeCursor(1, 0);
+        if (charBeforeCursor != null
+                && !charBeforeCursor.equals(" ")
+                && (charBeforeCursor.length() > 0)) {
+            newText = " " + newText;
+        }
+
+        connection.setComposingText(newText, 1);
+    }
+
+    private static int getCursorPosition(InputConnection connection) {
+        ExtractedText extracted = connection.getExtractedText(
+            new ExtractedTextRequest(), 0);
+        if (extracted == null) {
+          return -1;
+        }
+        return extracted.startOffset + extracted.selectionStart;
+    }
+
+    private static int getSelectionEnd(InputConnection connection) {
+        ExtractedText extracted = connection.getExtractedText(
+            new ExtractedTextRequest(), 0);
+        if (extracted == null) {
+          return -1;
+        }
+        return extracted.startOffset + extracted.selectionEnd;
+    }
+
+    /**
+     * @param connection connection to the current text field.
+     * @param sep characters which may separate words
+     * @return the word that surrounds the cursor, including up to one trailing
+     *   separator. For example, if the field contains "he|llo world", where |
+     *   represents the cursor, then "hello " will be returned.
+     */
+    public static String getWordAtCursor(
+        InputConnection connection, String separators) {
+        Range range = getWordRangeAtCursor(connection, separators);
+        return (range == null) ? null : range.word;
+    }
+
+    /**
+     * Removes the word surrounding the cursor. Parameters are identical to
+     * getWordAtCursor.
+     */
+    public static void deleteWordAtCursor(
+        InputConnection connection, String separators) {
+
+        Range range = getWordRangeAtCursor(connection, separators);
+        if (range == null) return;
+
+        connection.finishComposingText();
+        // Move cursor to beginning of word, to avoid crash when cursor is outside
+        // of valid range after deleting text.
+        int newCursor = getCursorPosition(connection) - range.charsBefore;
+        connection.setSelection(newCursor, newCursor);
+        connection.deleteSurroundingText(0, range.charsBefore + range.charsAfter);
+    }
+
+    /**
+     * Represents a range of text, relative to the current cursor position.
+     */
+    private static class Range {
+        /** Characters before selection start */
+        int charsBefore;
+
+        /**
+         * Characters after selection start, including one trailing word
+         * separator.
+         */
+        int charsAfter;
+
+        /** The actual characters that make up a word */
+        String word;
+
+        public Range(int charsBefore, int charsAfter, String word) {
+            if (charsBefore < 0 || charsAfter < 0) {
+                throw new IndexOutOfBoundsException();
+            }
+            this.charsBefore = charsBefore;
+            this.charsAfter = charsAfter;
+            this.word = word;
+        }
+    }
+
+    private static Range getWordRangeAtCursor(
+        InputConnection connection, String sep) {
+        if (connection == null || sep == null) {
+            return null;
+        }
+        CharSequence before = connection.getTextBeforeCursor(1000, 0);
+        CharSequence after = connection.getTextAfterCursor(1000, 0);
+        if (before == null || after == null) {
+            return null;
+        }
+
+        // Find first word separator before the cursor
+        int start = before.length();
+        while (--start > 0 && !isWhitespace(before.charAt(start - 1), sep));
+
+        // Find last word separator after the cursor
+        int end = -1;
+        while (++end < after.length() && !isWhitespace(after.charAt(end), sep));
+        if (end < after.length() - 1) {
+            end++; // Include trailing space, if it exists, in word
+        }
+
+        int cursor = getCursorPosition(connection);
+        if (start >= 0 && cursor + end <= after.length() + before.length()) {
+            String word = before.toString().substring(start, before.length())
+                + after.toString().substring(0, end);
+            return new Range(before.length() - start, end, word);
+        }
+
+        return null;
+    }
+
+    private static boolean isWhitespace(int code, String whitespace) {
+        return whitespace.contains(String.valueOf((char) code));
+    }
+}
diff --git a/src/com/android/inputmethod/voice/FieldContext.java b/src/com/android/inputmethod/voice/FieldContext.java
new file mode 100644
index 0000000000..0578af7323
--- /dev/null
+++ b/src/com/android/inputmethod/voice/FieldContext.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2009 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.voice;
+
+import android.os.Bundle;
+import android.util.Log;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.ExtractedText;
+import android.view.inputmethod.ExtractedTextRequest;
+import android.view.inputmethod.InputConnection;
+
+/**
+ * Represents information about a given text field, which can be passed
+ * to the speech recognizer as context information.
+ */
+public class FieldContext {
+    static final String LABEL = "label";
+    static final String HINT = "hint";
+    static final String PACKAGE_NAME = "packageName";
+    static final String FIELD_ID = "fieldId";
+    static final String FIELD_NAME = "fieldName";
+    static final String SINGLE_LINE = "singleLine";
+    static final String INPUT_TYPE = "inputType";
+    static final String IME_OPTIONS = "imeOptions";
+
+    Bundle mFieldInfo;
+
+    public FieldContext(InputConnection conn, EditorInfo info) {
+        this.mFieldInfo = new Bundle();
+        addEditorInfoToBundle(info, mFieldInfo);
+        addInputConnectionToBundle(conn, mFieldInfo);
+        Log.i("FieldContext", "Bundle = " + mFieldInfo.toString());
+    }
+
+    private static String safeToString(Object o) {
+        if (o == null) {
+            return "";
+        }
+        return o.toString();
+    }
+
+    private static void addEditorInfoToBundle(EditorInfo info, Bundle bundle) {
+        if (info == null) {
+            return;
+        }
+
+
+        bundle.putString(LABEL, safeToString(info.label));
+        bundle.putString(HINT, safeToString(info.hintText));
+        bundle.putString(PACKAGE_NAME, safeToString(info.packageName));
+        bundle.putInt(FIELD_ID, info.fieldId);
+        bundle.putString(FIELD_NAME, safeToString(info.fieldName));
+        bundle.putInt(INPUT_TYPE, info.inputType);
+        bundle.putInt(IME_OPTIONS, info.imeOptions);
+    }
+
+    private static void addInputConnectionToBundle(
+        InputConnection conn, Bundle bundle) {
+        if (conn == null) {
+            return;
+        }
+
+        ExtractedText et = conn.getExtractedText(new ExtractedTextRequest(), 0);
+        if (et == null) {
+            return;
+        }
+        bundle.putBoolean(SINGLE_LINE, (et.flags & et.FLAG_SINGLE_LINE) > 0);
+    }
+
+    public Bundle getBundle() {
+        return mFieldInfo;
+    }
+
+    public String toString() {
+        return mFieldInfo.toString();
+    }
+}
diff --git a/src/com/android/inputmethod/voice/GoogleSettingsUtil.java b/src/com/android/inputmethod/voice/GoogleSettingsUtil.java
new file mode 100644
index 0000000000..d238579bab
--- /dev/null
+++ b/src/com/android/inputmethod/voice/GoogleSettingsUtil.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.voice;
+
+import android.content.ContentResolver;
+import android.database.Cursor;
+import android.net.Uri;
+import android.util.Log;
+
+/**
+ * Utility for getting Google-specific settings from GoogleSettings.Partner or
+ * Gservices. Retrieving such settings may fail on a non-Google Experience
+ * Device (GED)
+ */
+public class GoogleSettingsUtil {
+    /**
+     * A whitespace-separated list of supported locales for voice input from the keyboard.
+     */
+    public static final String LATIN_IME_VOICE_INPUT_SUPPORTED_LOCALES =
+            "latin_ime_voice_input_supported_locales";
+    
+    /**
+     * A whitespace-separated list of recommended app packages for voice input from the
+     * keyboard.
+     */
+    public static final String LATIN_IME_VOICE_INPUT_RECOMMENDED_PACKAGES =
+            "latin_ime_voice_input_recommended_packages";
+
+    /**
+     * The maximum number of unique days to show the swipe hint for voice input.
+     */
+    public static final String LATIN_IME_VOICE_INPUT_SWIPE_HINT_MAX_DAYS =
+            "latin_ime_voice_input_swipe_hint_max_days";
+    
+    /**
+     * The maximum number of times to show the punctuation hint for voice input.
+     */
+    public static final String LATIN_IME_VOICE_INPUT_PUNCTUATION_HINT_MAX_DISPLAYS =
+            "latin_ime_voice_input_punctuation_hint_max_displays";
+
+    /**
+     * Endpointer parameters for voice input from the keyboard.
+     */
+    public static final String LATIN_IME_SPEECH_MINIMUM_LENGTH_MILLIS =
+            "latin_ime_speech_minimum_length_millis";
+    public static final String LATIN_IME_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS =
+            "latin_ime_speech_input_complete_silence_length_millis";
+    public static final String LATIN_IME_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS =
+            "latin_ime_speech_input_possibly_complete_silence_length_millis";    
+
+    /**
+     * Min and max volume levels that can be displayed on the "speak now" screen.
+     */
+    public static final String LATIN_IME_MIN_MICROPHONE_LEVEL =
+            "latin_ime_min_microphone_level";
+    public static final String LATIN_IME_MAX_MICROPHONE_LEVEL =
+            "latin_ime_max_microphone_level";
+
+    /**
+     * The number of sentence-level alternates to request of the server.
+     */
+    public static final String LATIN_IME_MAX_VOICE_RESULTS = "latin_ime_max_voice_results";
+
+    /**
+     * Uri to use to access gservices settings
+     */
+    private static final Uri GSERVICES_URI = Uri.parse("content://settings/gservices");
+
+    private static final String TAG = GoogleSettingsUtil.class.getSimpleName();
+
+    private static final boolean DBG = false;
+
+    /**
+     * Safely query for a Gservices string setting, which may not be available if this
+     * is not a Google Experience Device.
+     * 
+     * @param cr The content resolver to use
+     * @param key The setting to look up
+     * @param defaultValue The default value to use if none can be found
+     * @return The value of the setting, or defaultValue if it couldn't be found
+     */
+    public static String getGservicesString(ContentResolver cr, String key, String defaultValue) {
+        return getSettingString(GSERVICES_URI, cr, key, defaultValue);
+    }
+    
+    /**
+     * Safely query for a Gservices int setting, which may not be available if this
+     * is not a Google Experience Device.
+     * 
+     * @param cr The content resolver to use
+     * @param key The setting to look up
+     * @param defaultValue The default value to use if the setting couldn't be found or parsed
+     * @return The value of the setting, or defaultValue if it couldn't be found or parsed
+     */
+    public static int getGservicesInt(ContentResolver cr, String key, int defaultValue) {
+        try {
+            return Integer.parseInt(getGservicesString(cr, key, String.valueOf(defaultValue)));
+        } catch (NumberFormatException e) {
+            return defaultValue;
+        }
+    }
+
+    /**
+     * Safely query for a Gservices float setting, which may not be available if this
+     * is not a Google Experience Device.
+     * 
+     * @param cr The content resolver to use
+     * @param key The setting to look up
+     * @param defaultValue The default value to use if the setting couldn't be found or parsed
+     * @return The value of the setting, or defaultValue if it couldn't be found or parsed
+     */
+    public static float getGservicesFloat(ContentResolver cr, String key, float defaultValue) {
+        try {
+            return Float.parseFloat(getGservicesString(cr, key, String.valueOf(defaultValue)));
+        } catch (NumberFormatException e) {
+            return defaultValue;
+        }
+    }
+
+    /**
+     * A safe way to query for a setting on both Google Experience and
+     * non-Google Experience devices, (code adapted from maps application
+     * examples)
+     * 
+     * @param uri The uri to provide to the content resolver
+     * @param cr The content resolver to use
+     * @param key The setting to look up
+     * @param defaultValue The default value to use if none can be found
+     * @return The value of the setting, or defaultValue if it couldn't be found
+     */
+    private static String getSettingString(Uri uri, ContentResolver cr, String key,
+            String defaultValue) {
+        String value = null;
+
+        Cursor cursor = null;
+        try {
+            cursor = cr.query(uri, new String[] {
+                "value"
+            }, "name='" + key + "'", null, null);
+            if ((cursor != null) && cursor.moveToFirst()) {
+                value = cursor.getString(cursor.getColumnIndexOrThrow("value"));
+            }
+        } catch (Throwable t) {
+            // This happens because we're probably running a non Type 1 aka
+            // Google Experience device which doesn't have the Google libraries.
+            if (DBG) {
+                Log.d(TAG, "Error getting setting from " + uri + " for key " + key + ": " + t);
+            }
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+
+        if (DBG && value == null) {
+            Log.i(TAG, "no setting found from " + uri + " for key " + key + ", returning default");
+        }
+        
+        return (value != null) ? value : defaultValue;
+    }
+}
diff --git a/src/com/android/inputmethod/voice/LatinIMEWithVoice.java b/src/com/android/inputmethod/voice/LatinIMEWithVoice.java
new file mode 100644
index 0000000000..ccbf5b6bcc
--- /dev/null
+++ b/src/com/android/inputmethod/voice/LatinIMEWithVoice.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2009 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.voice;
+
+import android.content.Intent;
+
+import com.android.inputmethod.latin.LatinIME;
+
+public class LatinIMEWithVoice extends LatinIME {
+    @Override
+    protected void launchSettings() {
+        launchSettings(LatinIMEWithVoiceSettings.class);
+    }
+}
diff --git a/src/com/android/inputmethod/voice/LatinIMEWithVoiceSettings.java b/src/com/android/inputmethod/voice/LatinIMEWithVoiceSettings.java
new file mode 100644
index 0000000000..13a58e14d6
--- /dev/null
+++ b/src/com/android/inputmethod/voice/LatinIMEWithVoiceSettings.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2009 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.voice;
+
+import com.android.inputmethod.latin.LatinIMESettings;
+
+public class LatinIMEWithVoiceSettings extends LatinIMESettings {}
diff --git a/src/com/android/inputmethod/voice/LoggingEvents.java b/src/com/android/inputmethod/voice/LoggingEvents.java
new file mode 100644
index 0000000000..b632291867
--- /dev/null
+++ b/src/com/android/inputmethod/voice/LoggingEvents.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.voice;
+
+/**
+ * Logging event constants used for Voice Search and VoiceIME. These are the keys and values of
+ * extras to be specified in logging broadcast intents to the {@link LoggingReceiver}.
+ * 
+ * This class is duplicated between VoiceSearch and LatinIME. Please keep both versions
+ * in sync.
+ */
+public class LoggingEvents {
+    // The name of the broadcast intent for logging.
+    public static final String ACTION_LOG_EVENT = "com.google.android.voicesearch.LOG_EVENT";
+    
+    // The extra key used for the name of the app being logged.
+    public static final String EXTRA_APP_NAME = "app_name";
+
+    // The extra key used for the event value. The possible event values depend on the
+    // app being logged for, and are defined in the subclasses below.
+    public static final String EXTRA_EVENT = "extra_event";
+    
+    // The extra key used (with a boolean value of 'true') as a way to trigger a flush
+    // of the log events to the server.
+    public static final String EXTRA_FLUSH = "flush";
+    
+    /**
+     * Logging event constants for VoiceIME. Below are the extra values for
+     * {@link LoggingEvents#EXTRA_EVENT}, clustered with keys to additional extras
+     * for some events that need to be included as additional fields in the event.
+     */
+    public class VoiceIme {
+        // The app name to be used for logging VoiceIME events.
+        public static final String APP_NAME = "voiceime"; 
+        
+        public static final int KEYBOARD_WARNING_DIALOG_SHOWN = 0;
+        
+        public static final int KEYBOARD_WARNING_DIALOG_DISMISSED = 1;
+        
+        public static final int KEYBOARD_WARNING_DIALOG_OK = 2;
+        
+        public static final int KEYBOARD_WARNING_DIALOG_CANCEL = 3;
+        
+        public static final int SETTINGS_WARNING_DIALOG_SHOWN = 4;
+        
+        public static final int SETTINGS_WARNING_DIALOG_DISMISSED = 5;
+        
+        public static final int SETTINGS_WARNING_DIALOG_OK = 6;
+        
+        public static final int SETTINGS_WARNING_DIALOG_CANCEL = 7;
+        
+        public static final int SWIPE_HINT_DISPLAYED = 8;
+        
+        public static final int PUNCTUATION_HINT_DISPLAYED = 9;
+        
+        public static final int CANCEL_DURING_LISTENING = 10;
+        
+        public static final int CANCEL_DURING_WORKING = 11;
+        
+        public static final int CANCEL_DURING_ERROR = 12;
+        
+        public static final int ERROR = 13;
+        public static final String EXTRA_ERROR_CODE = "code";  // value should be int
+        
+        public static final int START = 14;
+        public static final String EXTRA_START_LOCALE = "locale";  // value should be String
+        public static final String EXTRA_START_SWIPE = "swipe";  // value should be boolean
+        
+        public static final int VOICE_INPUT_DELIVERED = 15;
+        
+        public static final int N_BEST_CHOOSE = 16;
+        public static final String EXTRA_N_BEST_CHOOSE_INDEX = "index";  // value should be int 
+        
+        public static final int TEXT_MODIFIED = 17;
+        
+        public static final int INPUT_ENDED = 18;
+        
+        public static final int VOICE_INPUT_SETTING_ENABLED = 19;
+        
+        public static final int VOICE_INPUT_SETTING_DISABLED = 20;
+    }
+}
diff --git a/src/com/android/inputmethod/voice/RecognitionView.java b/src/com/android/inputmethod/voice/RecognitionView.java
new file mode 100644
index 0000000000..97acb11526
--- /dev/null
+++ b/src/com/android/inputmethod/voice/RecognitionView.java
@@ -0,0 +1,321 @@
+/*
+ * Copyright (C) 2009 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.voice;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.CornerPathEffect;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.PathEffect;
+import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.util.TypedValue;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup.MarginLayoutParams;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.voice.GoogleSettingsUtil;
+
+import java.io.ByteArrayOutputStream;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.ShortBuffer;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * The user interface for the "Speak now" and "working" states.
+ * Displays a recognition dialog (with waveform, voice meter, etc.),
+ * plays beeps, shows errors, etc.
+ */
+public class RecognitionView {
+    private static final String TAG = "RecognitionView";
+
+    // If there's a significant delay between starting up voice search and the
+    // onset of audio recording, show the "initializing" screen first. If not,
+    // jump directly to the "speak now" screen to avoid flashing "initializing"
+    // quickly.
+    private static final boolean EXPECT_RECORDING_DELAY = true;
+
+    private Handler mUiHandler;  // Reference to UI thread
+    private View mView;
+    private Context mContext;
+
+    private ImageView mImage;
+    private TextView mText;
+    private View mButton;
+    private TextView mButtonText;
+    private View mProgress;
+
+    private Drawable mInitializing;
+    private Drawable mError;
+    private List<Drawable> mSpeakNow;
+
+    private float mVolume = 0.0f;
+    private int mLevel = 0;
+
+    private enum State {LISTENING, WORKING, READY}
+    private State mState = State.READY;
+
+    private float mMinMicrophoneLevel;
+    private float mMaxMicrophoneLevel;
+
+    /** Updates the microphone icon to show user their volume.*/
+    private Runnable mUpdateVolumeRunnable = new Runnable() {
+        public void run() {
+            if (mState != State.LISTENING) {
+                return;
+            }
+
+            final float min = mMinMicrophoneLevel;
+            final float max = mMaxMicrophoneLevel;
+            final int maxLevel = mSpeakNow.size() - 1;
+
+            int index = (int) ((mVolume - min) / (max - min) * maxLevel);
+            final int level = Math.min(Math.max(0, index), maxLevel);
+
+            if (level != mLevel) {
+                mImage.setImageDrawable(mSpeakNow.get(level));
+                mLevel = level;
+            }
+            mUiHandler.postDelayed(mUpdateVolumeRunnable, 50);
+        }
+      };
+
+    public RecognitionView(Context context, OnClickListener clickListener) {
+        mUiHandler = new Handler();
+
+        LayoutInflater inflater = (LayoutInflater) context.getSystemService(
+            Context.LAYOUT_INFLATER_SERVICE);
+        mView = inflater.inflate(R.layout.recognition_status, null);
+
+        ContentResolver cr = context.getContentResolver();
+        mMinMicrophoneLevel = GoogleSettingsUtil.getGservicesFloat(
+                cr, GoogleSettingsUtil.LATIN_IME_MIN_MICROPHONE_LEVEL, 15.f);
+        mMaxMicrophoneLevel = GoogleSettingsUtil.getGservicesFloat(
+                cr, GoogleSettingsUtil.LATIN_IME_MAX_MICROPHONE_LEVEL, 30.f);
+
+        // Pre-load volume level images
+        Resources r = context.getResources();
+
+        mSpeakNow = new ArrayList<Drawable>();
+        mSpeakNow.add(r.getDrawable(R.drawable.speak_now_level0));
+        mSpeakNow.add(r.getDrawable(R.drawable.speak_now_level1));
+        mSpeakNow.add(r.getDrawable(R.drawable.speak_now_level2));
+        mSpeakNow.add(r.getDrawable(R.drawable.speak_now_level3));
+        mSpeakNow.add(r.getDrawable(R.drawable.speak_now_level4));
+        mSpeakNow.add(r.getDrawable(R.drawable.speak_now_level5));
+        mSpeakNow.add(r.getDrawable(R.drawable.speak_now_level6));
+
+        mInitializing = r.getDrawable(R.drawable.mic_slash);
+        mError = r.getDrawable(R.drawable.caution);
+ 
+        mImage = (ImageView) mView.findViewById(R.id.image);
+        mButton = mView.findViewById(R.id.button);
+        mButton.setOnClickListener(clickListener);
+        mText = (TextView) mView.findViewById(R.id.text);
+        mButtonText = (TextView) mView.findViewById(R.id.button_text);
+        mProgress = mView.findViewById(R.id.progress);
+
+        mContext = context;
+    }
+
+    public View getView() {
+        return mView;
+    }
+
+    public void showInitializing() {
+        mUiHandler.post(new Runnable() {
+            public void run() {
+              mText.setText(R.string.voice_initializing);
+              mImage.setImageDrawable(mInitializing);
+              mButtonText.setText(mContext.getText(R.string.cancel));
+            }
+          });
+    }
+
+    public void showStartState() {
+      if (EXPECT_RECORDING_DELAY) {
+          showInitializing();
+      } else {
+          showListening();
+      }
+    }
+
+    public void showListening() {
+        mState = State.LISTENING;
+        mUiHandler.post(new Runnable() {
+            public void run() {
+              mText.setText(R.string.voice_listening);
+              mImage.setImageDrawable(mSpeakNow.get(0));
+              mButtonText.setText(mContext.getText(R.string.cancel));
+            }
+          });
+        mUiHandler.postDelayed(mUpdateVolumeRunnable, 50);
+    }
+
+    public void updateVoiceMeter(final float rmsdB) {
+        mVolume = rmsdB;
+    }
+
+    public void showError(final String message) {
+        mState = State.READY;
+        mUiHandler.post(new Runnable() {
+            public void run() {
+              exitWorking();
+              mText.setText(message);
+              mImage.setImageDrawable(mError);
+              mButtonText.setText(mContext.getText(R.string.ok));
+            }
+          });
+    }
+
+    public void showWorking(
+        final ByteArrayOutputStream waveBuffer,
+        final int speechStartPosition,
+        final int speechEndPosition) {
+
+        mState = State.WORKING;
+
+        mUiHandler.post(new Runnable() {
+            public void run() {
+              mText.setText(R.string.voice_working);
+              mImage.setVisibility(View.GONE);
+              mProgress.setVisibility(View.VISIBLE);
+              final ShortBuffer buf = ByteBuffer.wrap(waveBuffer.toByteArray())
+                      .order(ByteOrder.nativeOrder()).asShortBuffer();
+              buf.position(0);
+              waveBuffer.reset(); 
+              showWave(buf, speechStartPosition / 2, speechEndPosition / 2);
+            }
+          });
+    }
+    
+    /**
+     * @return an average abs of the specified buffer.
+     */
+    private static int getAverageAbs(ShortBuffer buffer, int start, int i, int npw) {
+        int from = start + i * npw;
+        int end = from + npw;
+        int total = 0;
+        for (int x = from; x < end; x++) {
+            total += Math.abs(buffer.get(x));
+        }
+        return total / npw;
+    }
+
+
+    /**
+     * Shows waveform of input audio.
+     *
+     * Copied from version in VoiceSearch's RecognitionActivity.
+     *
+     * TODO: adjust stroke width based on the size of data.
+     * TODO: use dip rather than pixels.
+     */
+    private void showWave(ShortBuffer waveBuffer, int startPosition, int endPosition) {
+        final int w = ((View) mImage.getParent()).getWidth();
+        final int h = mImage.getHeight();
+        if (w <= 0 || h <= 0) {
+            // view is not visible this time. Skip drawing.
+            return;
+        }
+        final Bitmap b = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
+        final Canvas c = new Canvas(b);
+        final Paint paint = new Paint();
+        paint.setColor(0xFFFFFFFF); // 0xAARRGGBB
+        paint.setAntiAlias(true);
+        paint.setStyle(Paint.Style.STROKE);
+        paint.setAlpha(0x90);
+
+        final PathEffect effect = new CornerPathEffect(3);
+        paint.setPathEffect(effect);
+
+        final int numSamples = waveBuffer.remaining();
+        int endIndex;
+        if (endPosition == 0) {
+            endIndex = numSamples;
+        } else {
+            endIndex = Math.min(endPosition, numSamples);
+        }
+
+        int startIndex = startPosition - 2000; // include 250ms before speech
+        if (startIndex < 0) {
+            startIndex = 0;
+        }
+        final int numSamplePerWave = 200;  // 8KHz 25ms = 200 samples
+        final float scale = 10.0f / 65536.0f;
+
+        final int count = (endIndex - startIndex) / numSamplePerWave;
+        final float deltaX = 1.0f * w / count;
+        int yMax = h / 2 - 10;
+        Path path = new Path();
+        c.translate(0, yMax);
+        float x = 0;
+        path.moveTo(x, 0);
+        yMax -= 10;
+        for (int i = 0; i < count; i++) {
+            final int avabs = getAverageAbs(waveBuffer, startIndex, i , numSamplePerWave);
+            int sign = ( (i & 01) == 0) ? -1 : 1;
+            final float y = Math.min(yMax, avabs * h * scale) * sign;
+            path.lineTo(x, y);
+            x += deltaX;
+            path.lineTo(x, y);
+        }
+        if (deltaX > 4) {
+            paint.setStrokeWidth(3);
+        } else {
+            paint.setStrokeWidth(Math.max(1, (int) (deltaX -.05)));
+        }
+        c.drawPath(path, paint);
+        mImage.setImageBitmap(b);
+        mImage.setVisibility(View.VISIBLE);
+        MarginLayoutParams mProgressParams = (MarginLayoutParams)mProgress.getLayoutParams();
+        mProgressParams.topMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
+                -h / 2 - 18, mContext.getResources().getDisplayMetrics());
+                
+        // Tweak the padding manually to fill out the whole view horizontally.
+        // TODO: Do this in the xml layout instead.
+        ((View) mImage.getParent()).setPadding(4, ((View) mImage.getParent()).getPaddingTop(), 3, 
+                ((View) mImage.getParent()).getPaddingBottom());
+        mProgress.setLayoutParams(mProgressParams);       
+    }
+
+    
+    public void finish() {
+        mState = State.READY;
+        mUiHandler.post(new Runnable() {
+            public void run() {
+              exitWorking();
+            }
+          });
+        showStartState();
+    }
+
+    private void exitWorking() {
+        mProgress.setVisibility(View.GONE);
+        mImage.setVisibility(View.VISIBLE);
+    }
+}
diff --git a/src/com/android/inputmethod/voice/VoiceInput.java b/src/com/android/inputmethod/voice/VoiceInput.java
new file mode 100644
index 0000000000..2f45b654a5
--- /dev/null
+++ b/src/com/android/inputmethod/voice/VoiceInput.java
@@ -0,0 +1,551 @@
+/*
+ * Copyright (C) 2009 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.voice;
+
+import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.util.Log;
+import android.speech.IRecognitionListener;
+import android.speech.RecognitionServiceUtil;
+import android.speech.RecognizerIntent;
+import android.speech.RecognitionResult;
+import android.view.View;
+import android.view.View.OnClickListener;
+import com.android.inputmethod.latin.R;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Speech recognition input, including both user interface and a background
+ * process to stream audio to the network recognizer. This class supplies a
+ * View (getView()), which it updates as recognition occurs. The user of this
+ * class is responsible for making the view visible to the user, as well as
+ * handling various events returned through UiListener.
+ */
+public class VoiceInput implements OnClickListener {
+    private static final String TAG = "VoiceInput";
+    private static final String EXTRA_RECOGNITION_CONTEXT =
+            "android.speech.extras.RECOGNITION_CONTEXT";
+    private static final String EXTRA_CALLING_PACKAGE = "calling_package";
+
+    private static final String DEFAULT_RECOMMENDED_PACKAGES =
+            "com.android.mms " +
+            "com.google.android.gm " +
+            "com.google.android.talk " +
+            "com.google.android.apps.googlevoice " +
+            "com.android.email " +
+            "com.android.browser ";
+
+    // WARNING! Before enabling this, fix the problem with calling getExtractedText() in
+    // landscape view. It causes Extracted text updates to be rejected due to a token mismatch
+    public static boolean ENABLE_WORD_CORRECTIONS = false;
+
+    private static Boolean sVoiceIsAvailable = null;
+
+    // Dummy word suggestion which means "delete current word"
+    public static final String DELETE_SYMBOL = " \u00D7 ";  // times symbol
+
+    private Whitelist mRecommendedList;
+    private Whitelist mBlacklist;
+
+    private VoiceInputLogger mLogger;
+
+    // Names of a few intent extras defined in VoiceSearch's RecognitionService.
+    // These let us tweak the endpointer parameters.
+    private static final String EXTRA_SPEECH_MINIMUM_LENGTH_MILLIS =
+            "android.speech.extras.SPEECH_INPUT_MINIMUM_LENGTH_MILLIS";
+    private static final String EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS =
+            "android.speech.extras.SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS";
+    private static final String EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS =
+            "android.speech.extras.SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS";
+    
+    // The usual endpointer default value for input complete silence length is 0.5 seconds,
+    // but that's used for things like voice search. For dictation-like voice input like this,
+    // we go with a more liberal value of 1 second. This value will only be used if a value
+    // is not provided from Gservices.
+    private static final String INPUT_COMPLETE_SILENCE_LENGTH_DEFAULT_VALUE_MILLIS = "1000";
+    
+    // Used to record part of that state for logging purposes.
+    public static final int DEFAULT = 0;
+    public static final int LISTENING = 1;
+    public static final int WORKING = 2;
+    public static final int ERROR = 3;
+
+    private int mState = DEFAULT;
+
+    /**
+     * Events relating to the recognition UI. You must implement these.
+     */
+    public interface UiListener {
+
+        /**
+         * @param recognitionResults a set of transcripts for what the user
+         *   spoke, sorted by likelihood.
+         */
+        public void onVoiceResults(
+            List<String> recognitionResults,
+            Map<String, List<CharSequence>> alternatives);
+
+        /**
+         * Called when the user cancels speech recognition.
+         */
+        public void onCancelVoice();
+    }
+
+    private RecognitionServiceUtil.Connection mRecognitionConnection;
+    private IRecognitionListener mRecognitionListener;
+    private RecognitionView mRecognitionView;
+    private UiListener mUiListener;
+    private Context mContext;
+    private ScheduledThreadPoolExecutor mExecutor;
+
+    /**
+     * @param context the service or activity in which we're runing.
+     * @param uiHandler object to receive events from VoiceInput.
+     */
+    public VoiceInput(Context context, UiListener uiHandler) {
+        mLogger = VoiceInputLogger.getLogger(context);
+        mRecognitionListener = new IMERecognitionListener();
+        mRecognitionConnection = new RecognitionServiceUtil.Connection() {
+            public synchronized void onServiceConnected(
+                ComponentName name, IBinder service) {
+                super.onServiceConnected(name, service);
+            }
+          };
+        mUiListener = uiHandler;
+        mContext = context;
+        newView();
+
+        String recommendedPackages = GoogleSettingsUtil.getGservicesString(
+                context.getContentResolver(),
+                GoogleSettingsUtil.LATIN_IME_VOICE_INPUT_RECOMMENDED_PACKAGES,
+                DEFAULT_RECOMMENDED_PACKAGES);
+        
+        mRecommendedList = new Whitelist();
+        for (String recommendedPackage : recommendedPackages.split("\\s+")) {
+            mRecommendedList.addApp(recommendedPackage);
+        }
+
+        mBlacklist = new Whitelist();
+        mBlacklist.addApp("com.android.setupwizard");
+
+        mExecutor = new ScheduledThreadPoolExecutor(1);
+        bindIfNecessary();
+    }
+
+    /**
+     * @return true if field is blacklisted for voice
+     */
+    public boolean isBlacklistedField(FieldContext context) {
+        return mBlacklist.matches(context);
+    }
+    
+    /**
+     * Used to decide whether to show voice input hints for this field, etc.
+     * 
+     * @return true if field is recommended for voice
+     */
+    public boolean isRecommendedField(FieldContext context) {
+        return mRecommendedList.matches(context);
+    }
+
+    /**
+     * @return true if the speech service is available on the platform.
+     */
+    public static boolean voiceIsAvailable(Context context) {
+        if (sVoiceIsAvailable != null) {
+            return sVoiceIsAvailable;
+        }
+
+        RecognitionServiceUtil.Connection recognitionConnection =
+                new RecognitionServiceUtil.Connection();
+        boolean bound = context.bindService(
+                makeIntent(), recognitionConnection, Context.BIND_AUTO_CREATE);
+        context.unbindService(recognitionConnection);
+        sVoiceIsAvailable = bound;
+        return bound;
+    }
+
+    /**
+     * Start listening for speech from the user. This will grab the microphone
+     * and start updating the view provided by getView(). It is the caller's
+     * responsibility to ensure that the view is visible to the user at this stage.
+     *
+     * @param context the same FieldContext supplied to voiceIsEnabled()
+     * @param swipe whether this voice input was started by swipe, for logging purposes
+     */
+    public void startListening(FieldContext context, boolean swipe) {
+        mState = DEFAULT;
+
+        Locale locale = Locale.getDefault();
+        String localeString = locale.getLanguage() + "-" + locale.getCountry();
+        
+        mLogger.start(localeString, swipe);
+        
+        mState = LISTENING;
+
+        if (mRecognitionConnection.mService == null) {
+            mRecognitionView.showInitializing();
+        } else {
+            mRecognitionView.showStartState();
+        }
+
+        if (!bindIfNecessary()) {
+            mState = ERROR;
+            
+            // We use CLIENT_ERROR to signify voice search is not available on the device.
+            onError(RecognitionResult.CLIENT_ERROR, false);
+            cancel();
+        }
+
+        if (mRecognitionConnection.mService != null) {
+            try {
+                Intent intent = makeIntent();
+                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "");
+                intent.putExtra(EXTRA_RECOGNITION_CONTEXT, context.getBundle());
+                intent.putExtra(EXTRA_CALLING_PACKAGE, "VoiceIME");
+                intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,
+                        GoogleSettingsUtil.getGservicesInt(
+                                mContext.getContentResolver(),
+                                GoogleSettingsUtil.LATIN_IME_MAX_VOICE_RESULTS,
+                                1));
+
+                // Get endpointer params from Gservices.
+                // TODO: Consider caching these values for improved performance on slower devices.
+                ContentResolver cr = mContext.getContentResolver();
+                putEndpointerExtra(
+                        cr,
+                        intent,
+                        GoogleSettingsUtil.LATIN_IME_SPEECH_MINIMUM_LENGTH_MILLIS,
+                        EXTRA_SPEECH_MINIMUM_LENGTH_MILLIS,
+                        null  /* rely on endpointer default */);
+                putEndpointerExtra(
+                        cr,
+                        intent,
+                        GoogleSettingsUtil.LATIN_IME_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS,
+                        EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS,
+                        INPUT_COMPLETE_SILENCE_LENGTH_DEFAULT_VALUE_MILLIS
+                        /* our default value is different from the endpointer's */);
+                putEndpointerExtra(
+                        cr,
+                        intent,
+                        GoogleSettingsUtil.
+                                LATIN_IME_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS,
+                        EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS,
+                        null  /* rely on endpointer default */);
+                
+                mRecognitionConnection.mService.startListening(
+                        intent, mRecognitionListener);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Could not start listening", e);
+                onError(-1 /* no specific error, just show default error */, false);
+            }
+        }
+    }
+    
+    /**
+     * Gets the value of the provided Gservices key, attempts to parse it into a long,
+     * and if successful, puts the long value as an extra in the provided intent.
+     */
+    private void putEndpointerExtra(ContentResolver cr, Intent i,
+            String gservicesKey, String intentExtraKey, String defaultValue) {
+        long l = -1;
+        String s = GoogleSettingsUtil.getGservicesString(cr, gservicesKey, defaultValue);
+        if (s != null) {
+            try {
+                l = Long.valueOf(s);
+            } catch (NumberFormatException e) {
+                Log.e(TAG, "could not parse value for " + gservicesKey + ": " + s);
+            }          
+        }
+        
+        if (l != -1) i.putExtra(intentExtraKey, l);
+    }
+
+    public void destroy() {
+        if (mRecognitionConnection.mService != null) {
+            //mContext.unbindService(mRecognitionConnection);
+        }
+    }
+
+    /**
+     * Creates a new instance of the view that is returned by {@link #getView()}
+     * Clients should use this when a previously returned view is stuck in a
+     * layout that is being thrown away and a new one is need to show to the
+     * user.
+     */
+    public void newView() {
+        mRecognitionView = new RecognitionView(mContext, this);
+    }
+
+    /**
+     * @return a view that shows the recognition flow--e.g., "Speak now" and
+     * "working" dialogs.
+     */
+    public View getView() {
+        return mRecognitionView.getView();
+    }
+
+    /**
+     * Handle the cancel button.
+     */
+    public void onClick(View view) {
+        switch(view.getId()) {
+            case R.id.button:
+                cancel();
+                break;
+        }
+    }
+
+    public void logTextModified() {
+        mLogger.textModified();
+    }
+    
+    public void logKeyboardWarningDialogShown() {
+        mLogger.keyboardWarningDialogShown();
+    }
+    
+    public void logKeyboardWarningDialogDismissed() {
+        mLogger.keyboardWarningDialogDismissed();
+    }
+    
+    public void logKeyboardWarningDialogOk() {
+        mLogger.keyboardWarningDialogOk();
+    }
+    
+    public void logKeyboardWarningDialogCancel() {
+        mLogger.keyboardWarningDialogCancel();
+    }
+    
+    public void logSwipeHintDisplayed() {
+        mLogger.swipeHintDisplayed();
+    }
+    
+    public void logPunctuationHintDisplayed() {
+        mLogger.punctuationHintDisplayed();
+    }
+    
+    public void logVoiceInputDelivered() {
+        mLogger.voiceInputDelivered();
+    }
+    
+    public void logNBestChoose(int index) {
+        mLogger.nBestChoose(index);
+    }
+
+    public void logInputEnded() {
+        mLogger.inputEnded();
+    }
+    
+    public void flushLogs() {
+        mLogger.flush();
+    }
+    
+    private static Intent makeIntent() {
+        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
+
+        // On Cupcake, use VoiceIMEHelper since VoiceSearch doesn't support.
+        // On Donut, always use VoiceSearch, since VoiceIMEHelper and
+        // VoiceSearch may conflict.
+        if (Build.VERSION.RELEASE.equals("1.5")) {
+            intent = intent.setClassName(
+              "com.google.android.voiceservice",
+              "com.google.android.voiceservice.IMERecognitionService");
+        } else {
+            intent = intent.setClassName(
+              "com.google.android.voicesearch",
+              "com.google.android.voicesearch.RecognitionService");
+        }
+
+        return intent;
+    }
+
+    /**
+     * Bind to the recognition service if necessary.
+     * @return true if we are bound or binding to the service, false if
+     *     the recognition service is unavailable.
+     */
+    private boolean bindIfNecessary() {
+        if (mRecognitionConnection.mService != null) {
+            return true;
+        }
+        return mContext.bindService(
+            makeIntent(), mRecognitionConnection, Context.BIND_AUTO_CREATE);
+    }
+
+    /**
+     * Cancel in-progress speech recognition.
+     */
+    public void cancel() {
+        switch (mState) {
+        case LISTENING:
+            mLogger.cancelDuringListening();
+            break;
+        case WORKING:
+            mLogger.cancelDuringWorking();
+            break;
+        case ERROR:
+            mLogger.cancelDuringError();
+            break;
+        }
+        mState = DEFAULT;
+
+        // Remove all pending tasks (e.g., timers to cancel voice input)
+        for (Runnable runnable : mExecutor.getQueue()) {
+            mExecutor.remove(runnable);
+        }
+
+        if (mRecognitionConnection.mService != null) {
+            try {
+                mRecognitionConnection.mService.cancel();
+            } catch (RemoteException e) {
+                Log.e(TAG, "Exception on cancel", e);
+            }
+        }
+        mUiListener.onCancelVoice();
+        mRecognitionView.finish();
+    }
+
+    private int getErrorStringId(int errorType, boolean endpointed) {
+        switch (errorType) {
+            // We use CLIENT_ERROR to signify that voice search is not available on the device.
+            case RecognitionResult.CLIENT_ERROR:
+                return R.string.voice_not_installed;
+            case RecognitionResult.NETWORK_ERROR:
+                return R.string.voice_network_error;
+            case RecognitionResult.NETWORK_TIMEOUT:
+                return endpointed ?
+                        R.string.voice_network_error : R.string.voice_too_much_speech;
+            case RecognitionResult.AUDIO_ERROR:
+                return R.string.voice_audio_error;
+            case RecognitionResult.SERVER_ERROR:
+                return R.string.voice_server_error;
+            case RecognitionResult.SPEECH_TIMEOUT:
+                return R.string.voice_speech_timeout;
+            case RecognitionResult.NO_MATCH:
+                return R.string.voice_no_match;
+            default: return R.string.voice_error;
+        }
+    }
+
+    private void onError(int errorType, boolean endpointed) {
+        Log.i(TAG, "error " + errorType);
+        mLogger.error(errorType);
+        onError(mContext.getString(getErrorStringId(errorType, endpointed)));
+    }
+
+    private void onError(String error) {
+        mState = ERROR;
+        mRecognitionView.showError(error);
+        // Wait a couple seconds and then automatically dismiss message.
+        mExecutor.schedule(new Runnable() {
+            public void run() {
+                cancel();
+            }}, 2000, TimeUnit.MILLISECONDS);
+    }
+
+    private class IMERecognitionListener extends IRecognitionListener.Stub {
+        // Waveform data
+        final ByteArrayOutputStream mWaveBuffer = new ByteArrayOutputStream();
+        int mSpeechStart;
+        private boolean mEndpointed = false;
+
+        public void onReadyForSpeech(Bundle noiseParams) {
+            mRecognitionView.showListening();
+        }
+
+        public void onBeginningOfSpeech() {
+            mEndpointed = false;
+            mSpeechStart = mWaveBuffer.size();
+        }
+
+        public void onRmsChanged(float rmsdB) {
+            mRecognitionView.updateVoiceMeter(rmsdB);
+        }
+
+        public void onBufferReceived(byte[] buf) {
+            try {
+                mWaveBuffer.write(buf);
+            } catch (IOException e) {}
+        }
+
+        public void onEndOfSpeech() {
+            mEndpointed = true;
+            mState = WORKING;
+            mRecognitionView.showWorking(mWaveBuffer, mSpeechStart, mWaveBuffer.size());
+        }
+
+        public void onError(int errorType) {
+            mState = ERROR;
+            VoiceInput.this.onError(errorType, mEndpointed);
+        }
+
+        public void onResults(List<RecognitionResult> results, long token) {
+            mState = DEFAULT;
+            List<String> resultsAsText = new ArrayList<String>();
+            for (RecognitionResult result : results) {
+                resultsAsText.add(result.mText);
+            }
+
+            Map<String, List<CharSequence>> alternatives =
+                new HashMap<String, List<CharSequence>>();
+            if (resultsAsText.size() >= 2 && ENABLE_WORD_CORRECTIONS) {
+                String[][] words = new String[resultsAsText.size()][];
+                for (int i = 0; i < words.length; i++) {
+                    words[i] = resultsAsText.get(i).split(" ");
+                }
+
+                for (int key = 0; key < words[0].length; key++) {
+                    alternatives.put(words[0][key], new ArrayList<CharSequence>());
+                    for (int alt = 1; alt < words.length; alt++) {
+                        int keyBegin = key * words[alt].length / words[0].length;
+                        int keyEnd = (key + 1) * words[alt].length / words[0].length;
+
+                        for (int i = keyBegin; i < Math.min(words[alt].length, keyEnd); i++) {
+                            List<CharSequence> altList = alternatives.get(words[0][key]);
+                            if (!altList.contains(words[alt][i]) && altList.size() < 6) {
+                                altList.add(words[alt][i]);
+                            }
+                        }
+                    }
+                }
+            }
+
+            if (resultsAsText.size() > 5) {
+                resultsAsText = resultsAsText.subList(0, 5);
+            }
+            mUiListener.onVoiceResults(resultsAsText, alternatives);
+            mRecognitionView.finish();
+
+            destroy();
+        }
+    }
+}
diff --git a/src/com/android/inputmethod/voice/VoiceInputLogger.java b/src/com/android/inputmethod/voice/VoiceInputLogger.java
new file mode 100644
index 0000000000..07d4d1c8c6
--- /dev/null
+++ b/src/com/android/inputmethod/voice/VoiceInputLogger.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.voice;
+
+import android.content.Context;
+import android.content.Intent;
+
+/**
+ * Provides the logging facility for voice input events. This fires broadcasts back to
+ * the voice search app which then logs on our behalf.
+ * 
+ * Note that debug console logging does not occur in this class. If you want to
+ * see console output of these logging events, there is a boolean switch to turn
+ * on on the VoiceSearch side.
+ */
+public class VoiceInputLogger {
+    private static final String TAG = VoiceInputLogger.class.getSimpleName();
+
+    private static VoiceInputLogger sVoiceInputLogger;
+    
+    private final Context mContext;
+    
+    // The base intent used to form all broadcast intents to the logger
+    // in VoiceSearch.
+    private final Intent mBaseIntent;
+    
+    /**
+     * Returns the singleton of the logger.
+     *
+     * @param contextHint a hint context used when creating the logger instance.
+     * Ignored if the singleton instance already exists.
+     */
+    public static synchronized VoiceInputLogger getLogger(Context contextHint) {
+        if (sVoiceInputLogger == null) {
+            sVoiceInputLogger = new VoiceInputLogger(contextHint);
+        }
+        return sVoiceInputLogger;
+    }
+
+    public VoiceInputLogger(Context context) {
+        mContext = context;
+        
+        mBaseIntent = new Intent(LoggingEvents.ACTION_LOG_EVENT);
+        mBaseIntent.putExtra(LoggingEvents.EXTRA_APP_NAME, LoggingEvents.VoiceIme.APP_NAME);
+    }
+    
+    private Intent newLoggingBroadcast(int event) {
+        Intent i = new Intent(mBaseIntent);
+        i.putExtra(LoggingEvents.EXTRA_EVENT, event);
+        return i;
+    }
+
+    public void flush() {
+        Intent i = new Intent(mBaseIntent);
+        i.putExtra(LoggingEvents.EXTRA_FLUSH, true);
+        mContext.sendBroadcast(i);
+    }
+    
+    public void keyboardWarningDialogShown() {
+        mContext.sendBroadcast(newLoggingBroadcast(
+                LoggingEvents.VoiceIme.KEYBOARD_WARNING_DIALOG_SHOWN));
+    }
+    
+    public void keyboardWarningDialogDismissed() {
+        mContext.sendBroadcast(newLoggingBroadcast(
+                LoggingEvents.VoiceIme.KEYBOARD_WARNING_DIALOG_DISMISSED));
+    }
+
+    public void keyboardWarningDialogOk() {
+        mContext.sendBroadcast(newLoggingBroadcast(
+                LoggingEvents.VoiceIme.KEYBOARD_WARNING_DIALOG_OK));
+    }
+
+    public void keyboardWarningDialogCancel() {
+        mContext.sendBroadcast(newLoggingBroadcast(
+                LoggingEvents.VoiceIme.KEYBOARD_WARNING_DIALOG_CANCEL));
+    }
+
+    public void settingsWarningDialogShown() {
+        mContext.sendBroadcast(newLoggingBroadcast(
+                LoggingEvents.VoiceIme.SETTINGS_WARNING_DIALOG_SHOWN));
+    }
+    
+    public void settingsWarningDialogDismissed() {
+        mContext.sendBroadcast(newLoggingBroadcast(
+                LoggingEvents.VoiceIme.SETTINGS_WARNING_DIALOG_DISMISSED));
+    }
+
+    public void settingsWarningDialogOk() {
+        mContext.sendBroadcast(newLoggingBroadcast(
+                LoggingEvents.VoiceIme.SETTINGS_WARNING_DIALOG_OK));
+    }
+
+    public void settingsWarningDialogCancel() {
+        mContext.sendBroadcast(newLoggingBroadcast(
+                LoggingEvents.VoiceIme.SETTINGS_WARNING_DIALOG_CANCEL));
+    }
+    
+    public void swipeHintDisplayed() {
+        mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.SWIPE_HINT_DISPLAYED));
+    }
+    
+    public void cancelDuringListening() {
+        mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.CANCEL_DURING_LISTENING));
+    }
+
+    public void cancelDuringWorking() {
+        mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.CANCEL_DURING_WORKING));
+    }
+
+    public void cancelDuringError() {
+        mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.CANCEL_DURING_ERROR));
+    }
+    
+    public void punctuationHintDisplayed() {
+        mContext.sendBroadcast(newLoggingBroadcast(
+                LoggingEvents.VoiceIme.PUNCTUATION_HINT_DISPLAYED));
+    }
+    
+    public void error(int code) {
+        Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.ERROR);
+        i.putExtra(LoggingEvents.VoiceIme.EXTRA_ERROR_CODE, code);
+        mContext.sendBroadcast(i);
+    }
+
+    public void start(String locale, boolean swipe) {
+        Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.START);
+        i.putExtra(LoggingEvents.VoiceIme.EXTRA_START_LOCALE, locale);
+        i.putExtra(LoggingEvents.VoiceIme.EXTRA_START_SWIPE, swipe);
+        mContext.sendBroadcast(i);
+    }
+    
+    public void voiceInputDelivered() {
+        mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.VOICE_INPUT_DELIVERED));
+    }
+
+    public void textModified() {
+        mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.TEXT_MODIFIED));
+    }
+
+    public void nBestChoose(int index) {
+        Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.N_BEST_CHOOSE);
+        i.putExtra(LoggingEvents.VoiceIme.EXTRA_N_BEST_CHOOSE_INDEX, index);
+        mContext.sendBroadcast(i);
+    }
+    
+    public void inputEnded() {
+        mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.INPUT_ENDED));
+    }
+    
+    public void voiceInputSettingEnabled() {
+        mContext.sendBroadcast(newLoggingBroadcast(
+                LoggingEvents.VoiceIme.VOICE_INPUT_SETTING_ENABLED));
+    }
+    
+    public void voiceInputSettingDisabled() {
+        mContext.sendBroadcast(newLoggingBroadcast(
+                LoggingEvents.VoiceIme.VOICE_INPUT_SETTING_DISABLED));
+    }
+}
diff --git a/src/com/android/inputmethod/voice/WaveformImage.java b/src/com/android/inputmethod/voice/WaveformImage.java
new file mode 100644
index 0000000000..08d87c8f30
--- /dev/null
+++ b/src/com/android/inputmethod/voice/WaveformImage.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2008-2009 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.voice;
+
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+
+import java.io.ByteArrayOutputStream;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.ShortBuffer;
+
+/**
+ * Utility class to draw a waveform into a bitmap, given a byte array
+ * that represents the waveform as a sequence of 16-bit integers.
+ * Adapted from RecognitionActivity.java.
+ */
+public class WaveformImage {
+    private static final int SAMPLING_RATE = 8000;
+
+    private WaveformImage() {}
+
+    public static Bitmap drawWaveform(
+        ByteArrayOutputStream waveBuffer, int w, int h, int start, int end) {
+        final Bitmap b = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
+        final Canvas c = new Canvas(b);
+        final Paint paint = new Paint();
+        paint.setColor(0xFFFFFFFF); // 0xRRGGBBAA
+        paint.setAntiAlias(true);
+        paint.setStrokeWidth(0);
+
+        final ShortBuffer buf = ByteBuffer
+            .wrap(waveBuffer.toByteArray())
+            .order(ByteOrder.nativeOrder())
+            .asShortBuffer();
+        buf.position(0);
+
+        final int numSamples = waveBuffer.size() / 2;
+        final int delay = (SAMPLING_RATE * 100 / 1000);
+        int endIndex = end / 2 + delay;
+        if (end == 0 || endIndex >= numSamples) {
+            endIndex = numSamples;
+        }
+        int index = start / 2 - delay;
+        if (index < 0) {
+            index = 0;
+        }
+        final int size = endIndex - index;
+        int numSamplePerPixel = 32;
+        int delta = size / (numSamplePerPixel * w);
+        if (delta == 0) {
+            numSamplePerPixel = size / w;
+            delta = 1;
+        }
+
+        final float scale = 3.5f / 65536.0f;
+        // do one less column to make sure we won't read past
+        // the buffer.
+        try {
+            for (int i = 0; i < w - 1 ; i++) {
+                final float x = i;
+                for (int j = 0; j < numSamplePerPixel; j++) {
+                    final short s = buf.get(index);
+                    final float y = (h / 2) - (s * h * scale);
+                    c.drawPoint(x, y, paint);
+                    index += delta;
+                }
+            }
+        } catch (IndexOutOfBoundsException e) {
+            // this can happen, but we don't care
+        }
+
+        return b;
+    }
+}
diff --git a/src/com/android/inputmethod/voice/Whitelist.java b/src/com/android/inputmethod/voice/Whitelist.java
new file mode 100644
index 0000000000..167b688caf
--- /dev/null
+++ b/src/com/android/inputmethod/voice/Whitelist.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2009 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.voice;
+
+import android.os.Bundle;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A set of text fields where speech has been explicitly enabled.
+ */
+public class Whitelist {
+    private List<Bundle> mConditions;
+
+    public Whitelist() {
+        mConditions = new ArrayList<Bundle>();
+    }
+
+    public Whitelist(List<Bundle> conditions) {
+        this.mConditions = conditions;
+    }
+
+    public void addApp(String app) {
+        Bundle bundle = new Bundle();
+        bundle.putString("packageName", app);
+        mConditions.add(bundle);
+    }
+
+    /**
+     * @return true if the field is a member of the whitelist.
+     */
+    public boolean matches(FieldContext context) {
+        for (Bundle condition : mConditions) {
+            if (matches(condition, context.getBundle())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * @return true of all values in condition are matched by a value
+     *     in target.
+     */
+    private boolean matches(Bundle condition, Bundle target) {
+        for (String key : condition.keySet()) {
+          if (!condition.getString(key).equals(target.getString(key))) {
+            return false;
+          }
+        }
+        return true;
+    }
+}
diff --git a/src/com/google/android/voicesearch/LatinIMEWithVoice.java b/src/com/google/android/voicesearch/LatinIMEWithVoice.java
new file mode 100644
index 0000000000..8a339d14a4
--- /dev/null
+++ b/src/com/google/android/voicesearch/LatinIMEWithVoice.java
@@ -0,0 +1,29 @@
+/*
+ *
+ * Copyright (C) 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+* License for the specific language governing permissions and limitations under
+* the License.
+*/
+
+package com.google.android.voicesearch;
+
+import android.content.Intent;
+
+import com.android.inputmethod.latin.LatinIME;
+
+public class LatinIMEWithVoice extends LatinIME {
+    @Override
+    protected void launchSettings() {
+        launchSettings(LatinIMEWithVoiceSettings.class);
+    }
+}
diff --git a/src/com/google/android/voicesearch/LatinIMEWithVoiceSettings.java b/src/com/google/android/voicesearch/LatinIMEWithVoiceSettings.java
new file mode 100644
index 0000000000..a53cebfd90
--- /dev/null
+++ b/src/com/google/android/voicesearch/LatinIMEWithVoiceSettings.java
@@ -0,0 +1,5 @@
+package com.google.android.voicesearch;
+
+import com.android.inputmethod.latin.LatinIMESettings;
+
+public class LatinIMEWithVoiceSettings extends LatinIMESettings {}
-- 
GitLab