Como tomar ditado de voz em seu wearable android

Você tem um relógio Android Wear? Se assim for, você provavelmente amá-lo, e você já reparou que ele não tem um teclado. Se não, tente olhar para um. Eu vou esperar.

Se você é um desenvolvedor Android Wear, você deve saber que a maioria dos aplicativos do Android Wear são geralmente somente leitura. Aplicativos Android Wear são úteis para se notificado sobre determinadas coisas que você precisa fazer, mas se você quiser fazer alguma coisa complicada, você provavelmente vai puxar o seu telefone e fazê-lo lá em vez de no seu relógio.

controle de voz é uma exceção emocionante a esta regra. Com ditado de voz, você pode facilmente “tipo” informações em seu relógio sem ter que usar um teclado.

Aqui, você vai aprender como adicionar novos itens para seu banco de dados utilizando a sua voz.

Três tipos de controle de voz

Android Wear oferece três tipos de controle de voz para fora da caixa.

  • ações de voz fornecido pelo sistema, como “Dê uma nota” ou “chamar um táxi / táxi”.

  • voz “Iniciar” comandos App-fornecidos, como “Iniciar Tarefas” ou “Start MyRunningApp”

  • ditado de voz de forma livre

    Video: Ditado de voz no Android 4.1

As ações de voz fornecidas pelo sistema são os mais convenientes para os usuários. Eles não exigem que o usuário a aprender quaisquer novos comandos de voz, e eles “simplesmente funcionar” de qualquer lugar. Se um dos Android do ações internas de voz é apropriado para a sua aplicação, este é o melhor caminho a percorrer.

Os comandos de voz em “Iniciar” fornecido pelo aplicativo são uma forma viável, mas menos potente para adicionar comandos de voz para a sua aplicação. Cada atividade em seu aplicativo pode ter um nome de início separado especificado pela etiqueta da atividade. Por exemplo, se você definir sua etiqueta atividade Tarefas para MyTasksApp, então a sua actividade Tarefas iria lançar quando o usuário diz “Start MyTasksApp”. Ao contrário das ações de voz fornecido pelo sistema, que reconhecem alternativas comuns para a ação de voz, o usuário deve corresponder à etiqueta exatamente. Dizer “Iniciar TasksApp” não irá iniciar a sua aplicação, por exemplo.

A opção de ditado de voz de forma livre é uma opção muito poderoso, mas exige que o usuário já estar em sua aplicação, a fim de tirar proveito dela. Porque não é sempre óbvio como para lançar um app Android Wear, esta opção é uma boa, mas menos comum.

Video: Top 10 Android Wear Watch Faces

Android Wear vem com um “Dê uma nota” ação fornecido pelo sistema, então vamos usar isso para adicionar uma tarefa para nosso aplicativo.

Configuração da Intenção Filtro

Quando o usuário diz “Dê uma nota” para seu relógio Android, o texto resultante é enviado para a sua aplicação através de uma Intenção. Para capturar essa intenção, você deve criar uma atividade e um filtro de intenção que coincide com a intenção.

Adicionar um TakeVoiceNote actividade para o AndroidManifest.xml do seu aplicativo desgaste, e registrar um filtro de intenção de capturar o SELF_NOTE intenção:

Obtendo o texto de voz

É a coisa mais fácil do mundo para obter a saída da atividade reconhecedor de voz. Você só precisa adicionar o TakeVoiceNote atividade e recuperar o texto da intenção, assim:

classe pública TakeVoiceNote estende Atividade {. @Overrideprotected vazio onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) -String VoiceNote = getIntent () getStringExtra (Intent.EXTRA_TEXT) -}}

É isso aí! Seja qual for o usuário disse foi transcrito e colocada no VoiceNote variável.

Agora a parte difícil é o que fazer com esse texto.

Abre uma conexão com o Google Play

As APIs ação de voz são bastante simples, mas para usá-los você precisa configurar A Google Play APIs de serviços, e esses são um pouco mais complicado de usar.

Para adicionar o Google Play Services Location API para seu projeto, coloque o seguinte dependência em seu build.config Arquivo:

dependências {compile`com.google.android.gms: play-serviços-wearable: 6.5.87` }

Em seguida, adicione o seguinte ao seu AndroidManifest.xml:



 android: name ="com.google.android.gms.version" android: value ="@ Inteiro / GOOGLE_PLAY_SERVICES_VERSION"/ Gt;

Para estabelecer uma conexão com o Google Play Services, adicione o seguinte à sua atividade:

// oGoogleAPIcliente,paravestívelServiçosGoogleApiClientgoogleApiClient-@Overridepublic vazio onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) - googleApiClient=NovoGoogleApiClient.Builder (este) .addConnectionCallbacks (este) .addOnConnectionFailedListener (este) .addApi (Wearable.API) .construir()- &hellip -} @ Overridepublic vazio onStart () {super.onStart () - googleApiClient.connect () -} @Overridepublic anular onStop () { googleApiClient.disconnect () -super.onStop () -}

Lembre-se que o ID do aplicativo de seu telefone app eo app Wear deve ser o mesmo! Se forem diferentes, não será estabelecida a conexão.

Esse código cria um novo GoogleApiClient objeto em seu onCreate () para se conectar ao Google Play Services, e, em seguida, ele tenta se conectar em sua onStart () e desligue na sua onStop (). o GoogleApiClient precisa de um objeto de retorno de chamada a informá-lo quando uma conexão foi estabelecida, então você vai precisar adicionar chamadas de retorno à sua atividade.

classe pública TakeVoiceNote estende implementos Atividade GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ @Sobrepor públicovazioOnConnected (BundleconnectionHint){ //ConectadoparaGoogleToqueServiços! //esteéOndevocêvaiEscrevaseuNovotarefaparaa //base de dados. } @Sobrepor públicovazioonConnectionSuspended (intcausa){ //oGoogleToqueconexãotemfuiinterrompido. //incapacitarqualquerUIcomponentesaqueledependeremGoogle //APIsatéOnConnected ()échamado. // //esteexemplodoesn`tnecessidadeparaFazqualquer coisaAqui. } @Sobrepor públicovazioonConnectionFailed (ConnectionResultresultado) { //esteligue de voltaéimportanteparamanipulaçãoerros //aquelepodeocorrerenquantotentativaparaconectarcom //Google. // //ParaMaisem formaçãosobrecomoparalidar comerros, //Vejo //https://developer.android.com/google/auth/api-client.html }}

Parabéns! Você agora corretamente configurado uma conexão com o Google Play Services, que irá desligar automaticamente quando sua atividade é interrompida. O próximo passo é pedir o telefone para criar uma nova tarefa.

Pedindo o telefone para adicionar uma nova tarefa

Agora que você tem uma conexão com o Google Play, o próximo passo é enviar o texto de voz para o seu telefone para que o telefone pode adicionar uma nova tarefa para seu banco de dados.

atualizar o OnConnected () método de sua atividade para enviar uma mensagem para o seu telefone com o conteúdo do ditado de voz:

classe pública TakeVoiceNote estende Activityimplements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {// O caminho (como uma espécie de URI) que identifica a operação // você deseja executar no aparelho. private static final String PATH_ADD_TASK = "/ addTask"- &hellip- @Sobrepor public void OnConnected (pacote Bundle) {Log.d ("TakeVoiceNote", "OnConnected") - // O texto de reconhecimento de fala é passado através da // intençãoCorda VoiceNote = getIntent (). GetStringExtra ( Intent.EXTRA_TEXT) -// Converte a string para bytesbyte final [] = voiceNoteBytes voiceNote.getBytes (Charset.forName ("utf-8")) -// Obter uma lista de todos os dispositivos que você`// conectado a. Normalmente, esta será apenas a sua // telefone. Quaisquer outros dispositivos irá ignorar a sua mensagem.Wearable.NodeApi.getConnectedNodes (googleApiClient) .setResultCallback (nova ResultCallback() { @Sobrepor onResult public void (nós GetConnectedNodesResult)  {para (nó Node: nodes.getNodes ()) { // Enviar o telefone uma mensagem solicitando que //-lo adicionar a tarefa ao banco de dados Wearable.MessageApi.sendMessage (googleApiClient,node.getId (),PATH_ADD_TASK,voiceNoteBytes) -} terminar()- }} ) - }}

Criar a nova tarefa no telefone

A única coisa que resta a fazer é ouvir a mensagem em seu telefone para que você possa criar uma nova tarefa quando solicitado. Você vai fazer isso com um simples WearableListenerService.

Em seu telefone aplicativo, criar uma nova classe chamada AddTaskWearableListenerService e adicione o seguinte código:

classe pública AddTaskWearableListenerService extendsWearableListenerService {// deve coincidir com a corda no TakeVoiceNoteprivate PATH_ADD_TASK static final String = "/ addTask"- @ Overridepublic vazio onMessageReceived (MessageEvent messageEvent) {if (PATH_ADD_TASK.equals (messageEvent.getPath ())) {// criar o contentValues ​​objeto que armazena todos os // das informações para o título taskString = new String (messageEvent.getData ( ), Charset.forName ("utf-8")) - contentValues ​​valores = novos contentValues ​​() - values.put (COLUMN_TITLE, título) -values.put (COLUMN_NOTES, ") -values.put (COLUMN_DATE_TIME, System.currentTimeMillis ()) - // inserir a tarefa no databasegetContentResolver () insert (CONTENT_URI, valores) -.}}}

Você precisará registrar o serviço no AndroidManifest.xml seu telefone app, então adicione o seguinte ao seu nó de aplicativo:

Testá-lo!

Se você estiver usando um emulador para o seu dispositivo Android Wear, você vai querer conectá-lo ao seu telefone Android.

Uma vez que é instalado e funcionando, vá em frente e toque o seu Android Wear para abrir o menu de ações, em seguida, clique no botão Take uma opção de nota.

Se você estiver usando um emulador de relógio, em seguida, digite sua resposta.

Uma vez que a nota salva, puxar para cima o aplicativo Tarefas no seu telefone e você deve ver o novo item:

Parabéns! Você ditada com sucesso uma nota de voz e salva-lo para as suas tarefas de aplicativos.

Há todos os tipos de coisas interessantes que você pode fazer com controles de voz nas plataformas Android Wear e Android. Para mais algumas ideias, consulte a Adicionando recursos de voz e Recebendo entrada de voz em uma Notificação artigos no site do desenvolvedor Android. pirataria feliz!


Publicações relacionadas