sexta-feira, 21 de março de 2014

Usando o "Ok, Google" em português (ou outro idioma)

De tempo em tempo saem novas atualizações pro sistema operacional mais utilizado em smartphones: o Android. A mais nova e deliciosa versão (4.4) chama-se Kit Kat e, junto a novos aparelhos, foram lançadas funcionalidades interessantes, como ativar o Google Now apenas por comando de voz, sem precisar encostar um dedinho no celular. Basta dizer "Ok, Google" e pronto, o aplicativo abre e aguarda por mais comandos. Aliás, muitos comandos já foram implementados para o português. :D

Muito legal, né? Só que nem tanto... Pois a funcionalidade "Ok, Google" está disponível apenas para o idioma inglês e é usando em poucos países, como EUA, Canadá e outros que não lembro o nome agora... Se você quisesse usar essa funcionalidade, teria que fazer tudo falando em inglês. Só que eu vou ajudar vocês a utilizar essa belezinha em português. Detalhe: você vai precisar de root!

[05/07/2014 - ATUALIZADO!] Finalmente não precisamos mais fazer gambiarra. O recurso de detecção de hotword já foi implementado para nós, brasileiros. Basta atualizar o Google Search! :D

O processo é simples e você vai precisar apenas de:

- Aparelho com Kit Kat, que suporte o Google Now Launcher
- Root e gerenciador de arquivos com suporte a root
- Hex Editor instalado no PC

Primeiro, você precisa habilitar o Google Now e depois, nas configurações, trocar o idioma para inglês e se certificar de que a detecção de "hotword" esteja ativada. Isso vai fazer o aplicativo gerar uma pasta com o arquivo que precisaremos.


Agora você deve, com o celular devidamente rooteado, navegar até a pasta /data/data/com.google.android.googlequicksearchbox/app_shared_prefs/ e enviar o arquivo "StartupSettings.bin" para seu PC. Você pode fazer um backup dele também, se quiser, embora não haja nenhum perigo, caso perca o arquivo original. Ele será gerado novamente ao usar o Google Now.

Abra o arquio "StartupSettings.bin" com o Hex Editor e localize a linha com o seguinte código:

micro_hotword.data,OK Google,en-CA,en-US/

Em hexadecimais, o idioma em questão (en-CA - inglês do Canadá) corresponde à 65 6e 2d 43 41. O que você vai fazer, é trocar esses números hexadecimais pelo correspondente à linguagem que deseja usar, de acordo com a relação que segue abaixo:

af-ZA Afrikaans-SouthAfrica 61 66 2d 5a 41
sq-AL Albanian-Albania 73 71 2d 41 4c
ar-DZ Arabic-Algeria 61 72 2d 44 5a
ar-BH Arabic-Bahrain 61 72 2d 42 48
ar-EG Arabic-Egypt 61 72 2d 45 47
ar-IQ Arabic-Iraq 61 72 2d 49 51
ar-JO Arabic-Jordan 61 72 2d 4a 4f
ar-KW Arabic-Kuwait 61 72 2d 4b 57
ar-LB Arabic-Lebanon 61 72 2d 4c 42
ar-LY Arabic-Libya 61 72 2d 4c 59
ar-MA Arabic-Morocco 61 72 2d 4d 41
ar-OM Arabic-Oman 61 72 2d 4f 4d
ar-QA Arabic-Qatar 61 72 2d 51 41
ar-SA Arabic-SaudiArabia 61 72 2d 53 41
ar-SY Arabic-Syria 61 72 2d 53 59
ar-TN Arabic-Tunisia 61 72 2d 54 4e
ar-AE Arabic-UnitedArabEmirates 61 72 2d 41 45
ar-YE Arabic-Yemen 61 72 2d 59 45
hy-AM Armenian-Armenia 68 79 2d 41 4d
Cy-az-AZ Azeri(Cyrillic)-Azerbaijan 43 79 2d 61 7a 2d 41 5a
Lt-az-AZ Azeri(Latin)-Azerbaijan 4c 74 2d 61 7a 2d 41 5a
eu-ES Basque-Basque 65 75 2d 45 53
be-BY Belarusian-Belarus 62 65 2d 42 59
bg-BG Bulgarian-Bulgaria 62 67 2d 42 47
ca-ES Catalan-Catalan 63 61 2d 45 53
zh-CN Chinese-China 7a 68 2d 43 4e
zh-HK Chinese-HongKong 7a 68 2d 48 4b
zh-MO Chinese-Macau 7a 68 2d 4d 4f
zh-SG Chinese-Singapore 7a 68 2d 53 47
zh-TW Chinese-Taiwan 7a 68 2d 54 57
zh-CHS Chinese(Simplified) 7a 68 2d 43 48 53
zh-CHT Chinese(Traditional) 7a 68 2d 43 48 54
hr-HR Croatian-Croatia 68 72 2d 48 52
cs-CZ Czech-CzechRepublic 63 73 2d 43 5a
da-DK Danish-Denmark 64 61 2d 44 4b
div-MV Dhivehi-Maldives 64 69 76 2d 4d 56
nl-BE Dutch-Belgium 6e 6c 2d 42 45
nl-NL Dutch-TheNetherlands 6e 6c 2d 4e 4c
en-AU English-Australia 65 6e 2d 41 55
en-BZ English-Belize 65 6e 2d 42 5a
en-CA English-Canada 65 6e 2d 43 41
en-CB English-Caribbean 65 6e 2d 43 42
en-IE English-Ireland 65 6e 2d 49 45
en-JM English-Jamaica 65 6e 2d 4a 4d
en-NZ English-NewZealand 65 6e 2d 4e 5a
en-PH English-Philippines 65 6e 2d 50 48
en-ZA English-SouthAfrica 65 6e 2d 5a 41
en-TT English-TrinidadandTobago 65 6e 2d 54 54
en-GB English-UnitedKingdom 65 6e 2d 47 42
en-US English-UnitedStates 65 6e 2d 55 53
en-ZW English-Zimbabwe 65 6e 2d 5a 57
et-EE Estonian-Estonia 65 74 2d 45 45
fo-FO Faroese-FaroeIslands 66 6f 2d 46 4f
fa-IR Farsi-Iran 66 61 2d 49 52
fi-FI Finnish-Finland 66 69 2d 46 49
fr-BE French-Belgium 66 72 2d 42 45
fr-CA French-Canada 66 72 2d 43 41
fr-FR French-France 66 72 2d 46 52
fr-LU French-Luxembourg 66 72 2d 4c 55
fr-MC French-Monaco 66 72 2d 4d 43
fr-CH French-Switzerland 66 72 2d 43 48
gl-ES Galician-Galician 67 6c 2d 45 53
ka-GE Georgian-Georgia 6b 61 2d 47 45
de-AT German-Austria 64 65 2d 41 54
de-DE German-Germany 64 65 2d 44 45
de-LI German-Liechtenstein 64 65 2d 4c 49
de-LU German-Luxembourg 64 65 2d 4c 55
de-CH German-Switzerland 64 65 2d 43 48
el-GR Greek-Greece 65 6c 2d 47 52
gu-IN Gujarati-India 67 75 2d 49 4e
he-IL Hebrew-Israel 68 65 2d 49 4c
hi-IN Hindi-India 68 69 2d 49 4e
hu-HU Hungarian-Hungary 68 75 2d 48 55
is-IS Icelandic-Iceland 69 73 2d 49 53
id-ID Indonesian-Indonesia 69 64 2d 49 44
it-IT Italian-Italy 69 74 2d 49 54
it-CH Italian-Switzerland 69 74 2d 43 48
ja-JP Japanese-Japan 6a 61 2d 4a 50
kn-IN Kannada-India 6b 6e 2d 49 4e
kk-KZ Kazakh-Kazakhstan 6b 6b 2d 4b 5a
kok-IN Konkani-India 6b 6f 6b 2d 49 4e
ko-KR Korean-Korea 6b 6f 2d 4b 52
ky-KZ Kyrgyz-Kazakhstan 6b 79 2d 4b 5a
lv-LV Latvian-Latvia 6c 76 2d 4c 56
lt-LT Lithuanian-Lithuania 6c 74 2d 4c 54
mk-MK Macedonian(FYROM) 6d 6b 2d 4d 4b
ms-BN Malay-Brunei 6d 73 2d 42 4e
ms-MY Malay-Malaysia 6d 73 2d 4d 59
mr-IN Marathi-India 6d 72 2d 49 4e
mn-MN Mongolian-Mongolia 6d 6e 2d 4d 4e
nb-NO Norwegian(Bokmål)-Norway 6e 62 2d 4e 4f
nn-NO Norwegian(Nynorsk)-Norway 6e 6e 2d 4e 4f
pl-PL Polish-Poland 70 6c 2d 50 4c
pt-BR Portuguese-Brazil 70 74 2d 42 52
pt-PT Portuguese-Portugal 70 74 2d 50 54
pa-IN Punjabi-India 70 61 2d 49 4e
ro-RO Romanian-Romania 72 6f 2d 52 4f
ru-RU Russian-Russia 72 75 2d 52 55
sa-IN Sanskrit-India 73 61 2d 49 4e
Cy-sr-SP Serbian(Cyrillic)-Serbia 43 79 2d 73 72 2d 53 50
Lt-sr-SP Serbian(Latin)-Serbia 4c 74 2d 73 72 2d 53 50
sk-SK Slovak-Slovakia 73 6b 2d 53 4b
sl-SI Slovenian-Slovenia 73 6c 2d 53 49
es-AR Spanish-Argentina 65 73 2d 41 52
es-BO Spanish-Bolivia 65 73 2d 42 4f
es-CL Spanish-Chile 65 73 2d 43 4c
es-CO Spanish-Colombia 65 73 2d 43 4f
es-CR Spanish-CostaRica 65 73 2d 43 52
es-DO Spanish-DominicanRepublic 65 73 2d 44 4f
es-EC Spanish-Ecuador 65 73 2d 45 43
es-SV Spanish-ElSalvador 65 73 2d 53 56
es-GT Spanish-Guatemala 65 73 2d 47 54
es-HN Spanish-Honduras 65 73 2d 48 4e
es-MX Spanish-Mexico 65 73 2d 4d 58
es-NI Spanish-Nicaragua 65 73 2d 4e 49
es-PA Spanish-Panama 65 73 2d 50 41
es-PY Spanish-Paraguay 65 73 2d 50 59
es-PE Spanish-Peru 65 73 2d 50 45
es-PR Spanish-PuertoRico 65 73 2d 50 52
es-ES Spanish-Spain 65 73 2d 45 53
es-UY Spanish-Uruguay 65 73 2d 55 59
es-VE Spanish-Venezuela 65 73 2d 56 45
sw-KE Swahili-Kenya 73 77 2d 4b 45
sv-FI Swedish-Finland 73 76 2d 46 49
sv-SE Swedish-Sweden 73 76 2d 53 45
syr-SY Syriac-Syria 73 79 72 2d 53 59
ta-IN Tamil-India 74 61 2d 49 4e
tt-RU Tatar-Russia 74 74 2d 52 55
te-IN Telugu-India 74 65 2d 49 4e
th-TH Thai-Thailand 74 68 2d 54 48
tr-TR Turkish-Turkey 74 72 2d 54 52
uk-UA Ukrainian-Ukraine 75 6b 2d 55 41
ur-PK Urdu-Pakistan 75 72 2d 50 4b
Cy-uz-UZ Uzbek(Cyrillic)-Uzbekistan 43 79 2d 75 7a 2d 55 5a
Lt-uz-UZ Uzbek(Latin)-Uzbekistan 4c 74 2d 75 7a 2d 55 5a
vi-VN Vietnamese-Vietnam 76 69 2d 56 4e

Então, se quiser ativar o "Ok, Google" para o idioma brasileiro, substitua os valores para 70 74 2d 42 52. A linha alterada deve ficar dessa forma:

micro_hotword.data,OK Google,pt-BR,en-US/


Só pra avisar, eu estava relutante em usar esse programa só pra alterar uma linha do arquivo. Mas eu tentei de várias formas antes e nenhuma deu certo, como editar no bloco de notas ou em um editor no próprio celular...

Bom, salve o arquivo e copie de volta para a pasta original, substituindo o arquivo antigo, se ele ainda estiver lá. Agora você precisa dar todas as permissões para o arquivo, caso contrário, ele pode voltar ao normal, após reiniciar o telefone.


Reinicie o celular, abra o Google Now, vá nas configurações e selecione português. Pronto: a opção de detecção de hotword estará habilitada. Você pode dizer "Ok Google" quando estiver em qualquer homescreen ou com o Google Now aberto. Se por acaso a tal opção ainda não estiver habilitada, faça o contrário: copie novamente o arquivo para a pasta, coloque o idioma em português e depois reinicie. Quando o telefone ligar, certeza que já poderá dizer as palavras mágicas. :)


Segundo a fonte, o procedimento foi testado com sucesso nos seguintes aparelhos: Nexus 4 e Galaxy S4 com 4.4; Xperia Z com Nexperia rom; Galaxy Nexus 4.4; HTC One S 4.2; HTC One X Sense 5.0 e 4.2; Galaxy S4 com CM 11; e Nexus S com Slimbean 4.3.1. Eu testei apenas no meu Nexus 4, com a rom Paranoid 4.2 Beta 1.

Vale dar uma olhada nos principais comandos de voz suportados em português clicando aqui. Achei muito úteis, principalmente quando se está no carro, você pode fazer chamadas, enviar mensagens, ou traçar rotas sem precisar tirar as mãos do volante. :)

Espero ter ajudado e pra qualquer dúvida os comentários estão aí.

Fontes:
Fórum XDA Developers
MJD