Como fazer exame de voz Ditado no 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.
Menu
Se você é um desenvolvedor Android Wear, você deve saber que a maioria dos aplicativos no Android Wear são geralmente somente leitura. Aplicativos Android Wear são úteis para obter notificado sobre determinadas coisas que você precisa fazer, mas se você quer fazer nada complicado, você provavelmente vai retirar 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ção em seu relógio sem ter que usar um teclado.
Aqui, você 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 em "Iniciar" comandos App-fornecidos, como "Iniciar Tarefas" ou "Start MyRunningApp"
ditado de voz de forma livre
As ações de voz fornecidos 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 separada especificado pela etiqueta da atividade. Por exemplo, se você definir a sua etiqueta atividade Tarefas para MyTasksApp, em seguida, sua atividade Tarefas iria lançar quando o usuário diz "Start MyTasksApp". Ao contrário das ações de voz fornecidos 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.
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 de Intenção Filtro
Quando o usuário diz "Dê uma nota" ao 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 Wear, 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 de reconhecimento 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í! Qualquer que seja o utilizador que o referido foi transcrito e colocado 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 ao 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: valor ="@ Inteiro / GOOGLE_PLAY_SERVICES_VERSION"/>
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 (this) .addConnectionCallbacks (this) .addOnConnectionFailedListener (this) .addApi (Wearable.API) .construir()- ...} OnStart @Overridepublic void () {super.onStart () - googleApiClient.connect () -} @Overridepublic Anular onStop () { googleApiClient.disconnect () -super.onStop () -}
Lembre-se que a identificação do aplicativo de seu telefone app eo app Wear deve ser o mesmo! Se forem diferentes, não vai ser estabelecida a ligação.
Este 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, assim que você vai precisar adicionar retornos de chamada para sua atividade.
classe pública TakeVoiceNote estende implementos Atividade GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ @Sobrepor públicovazioOnConnected (BundleconnectionHint){ //ConectadoparaGoogleToqueServiços! //esteéOndevocêvontadeEscrevaseunovotarefaparaa //banco de dados. } @Sobrepor públicovazioonConnectionSuspended (intcausa){ //oGoogleToqueconexãotemfuiinterrompido. //incapacitarqualquerUIcomponentesaqueledependeremGoogle //APIsatéOnConnected ()échamado. // //esteexemplodoesn'tnecessidadeparaFazqualquer coisaAqui. } @Sobrepor públicovazioonConnectionFailed (ConnectionResultresultado) { //esteligue de voltaéimportanteparamanuseioerros //aquelepodeocorrerenquantotentativaparaconectarcom //Google. // //ParaMaisem formaçãosobrecomoparamanusearerros, //Vejo //https://developer.android.com/google/auth/api-client.html }}
Parabéns! Você já devidamente configurado uma conexão com serviços do Google Play 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 no 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"- ... @Sobrepor public void OnConnected (bundle Bundle) {Log.d ("TakeVoiceNote", "OnConnected") -// O texto de reconhecimento de voz é passado através do // intençãoCordas VoiceNote = getIntent (). GetStringExtra ( Intent.EXTRA_TEXT) -// Converte a cadeia para bytesbyte final [] = voiceNoteBytes voiceNote.getBytes (Charset.forName ("utf-8")) -// Obter uma lista de todos os dispositivos que você'ré // Conectado. Normalmente, este será apenas o seu // Telefone. Quaisquer outros dispositivos irão ignorar a sua mensagem.Wearable.NodeApi.getConnectedNodes (googleApiClient) .setResultCallback (nova ResultCallback() { @Sobrepor onResult public void (nós GetConnectedNodesResult) {para (nó Node: nodes.getNodes ()) { // Envia 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 app, criar uma nova classe chamada AddTaskWearableListenerService e adicione o seguinte código:
classe pública AddTaskWearableListenerService extendsWearableListenerService {// deve coincidir com a corda no TakeVoiceNoteprivate estática PATH_ADD_TASK 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 = new contentValues () - values.put (COLUMN_TITLE, título) -values.put (COLUMN_NOTES, "") -values.put (COLUMN_DATE_TIME, System.currentTimeMillis ()) -. // inserir a tarefa para o databasegetContentResolver () insert (CONTENT_URI, valores) -}}}
Você precisará registrar o serviço no AndroidManifest.xml o telefone do 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 app.
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, veja a Adicionando recursos de voz e Recebendo entrada de voz em uma Notificação artigos no site Android Developer. pirataria feliz!