English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Usar Intent para chamar o programa de reconhecimento de voz
Explicação
No Android, o reconhecimento de voz é principalmente implementado pelo RecognizerIntent, o código é relativamente simples, mas se não encontrar o dispositivo de reconhecimento de voz, será lançada a exceção ActivityNotFoundException, então precisamos capturar essa exceção. Além disso, o reconhecimento de voz não pode ser testado no simulador, pois o reconhecimento de voz acessa dados na nuvem do Google, então se o telefone não tiver a rede ativada, não será possível realizar o reconhecimento da voz! Certifique-se de que a rede do telefone esteja ativada, se o telefone não tiver a função de reconhecimento de voz, também não será possível ativar a identificação!
Atenção: antes de usar, é necessário instalar o programa de reconhecimento de voz. Por exemplo, o 'Voice Search', que usa a tecnologia de reconhecimento de voz do Google, o Intent pode reconhecer o programa.
Este exemplo é referência ao exemplo android:
desenvolvimento/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java
Código nuclear e descrição
package com.example.test; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.speech.RecognizerIntent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends Activity implements OnClickListener { private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button) findViewById(R.id.btn); // Botão de reconhecimento PackageManager pm = getPackageManager(); List activities = pm.queryIntentActivities(new Intent( RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); // programa de reconhecimento local // new Intent(RecognizerIntent.ACTION_WEB_SEARCH), 0); // programa de reconhecimento de rede /* * Aqui não há uso de captura de exceções, mas verifica-se se há programas de reconhecimento de voz * também pode capturar a exceção ActivityNotFoundException no método startRecognizerActivity() */ if (activities.size() != 0) { btn.setOnClickListener(this); } else { // Se não for possível detectar o programa de reconhecimento de voz instalado no dispositivo, o botão será desativado btn.setEnabled(false); btn.setText("Nenhum dispositivo de reconhecimento de voz detectado"); } } public void onClick(View v) { if (v.getId() == R.id.btn) { startRecognizerActivity(); } } // iniciar reconhecimento private void startRecognizerActivity() { // passar o modo de reconhecimento de voz por meio de Intent, iniciando a voz Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); // modelos de linguagem e reconhecimento de voz em modo livre intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); // indicar o início da voz intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Iniciar voz"); // iniciar reconhecimento de voz startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); // chamar a interface de reconhecimento de voz } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // obter dados recebidos do Google if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) // Obter os caracteres da voz ArrayList<String> results = data .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); String resultString = ""; for (int i = 0; i < results.size(); i++) { resultString += results.get(i); } Toast.makeText(this, resultString, Toast.LENGTH_SHORT).show(); } // Callback após o reconhecimento de voz, exibir a string reconhecida como Toast super.onActivityResult(requestCode, resultCode, data); } }
Seu principal princípio é enviar a voz para a nuvem do Google, processar na nuvem e匹配相应的数据,发送到客户端。
Não se esqueça de adicionar permissão de acesso à rede no manifest:
<uses-permission android:name="android.permission.INTERNET" />
Efeito após a execução:
Aqui está a compilação de materiais para a implementação de reconhecimento de voz em Android. Continuaremos a complementar materiais relacionados, obrigado pelo apoio da comunidade!
Declaração: O conteúdo deste artigo é extraído da Internet, pertence ao autor original, foi contribuído e carregado voluntariamente pelos usuários da Internet. Este site não possui direitos de propriedade, não foi editado artificialmente e não assume responsabilidade por responsabilidades legais relacionadas. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar, e forneça provas relevantes. Em caso de verificação, o site deletará imediatamente o conteúdo suspeito de violação de direitos autorais.)