SpeechRecognizer
は、Google Apps(GApps)を搭載したAndroidでうまく機能します。しかし、中国では、ほとんどのAndroid搭載端末がこれらのGoogle Appsを削除します。 SpeechRecognizer
を使用するとどうなりますか?実際のデバイスなしでどうすればテストできますか? CustomListener()
はRecognitionListener
を実装Google Appsを使用しないAndroidデバイスのSpeechRecognizer
speechRecognizer = SpeechRecognizer.createSpeechRecognizer(getApplicationContext());
speechRecognizer.setRecognitionListener(new CustomListener());
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "zh_HK");
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, false);
intent.putExtra("android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{"zh_HK", "en-US"});
speechRecognizer.startListening(intent);
。
'Gapps'が例えば' com.android.vending'のチェックによってインストールされているかどうかPackageManagerを介してチェックすることができます。そうでなければ、音声認識のための別の方法は、スフィンクスである可能性があります:http://cmusphinx.sourceforge.net/ – Opiatefuchs
良いアイデア。しかし、スフィンクスの言語ファイルは多くのスペースを占めています。チェックが追加されない場合、上記のコードはクラッシュしますか? – Raptor
それは非常に良い質問です、もし私ができるなら、私はこれにもっとアップフォースを与えるでしょう。しかし、実際には.....私は知らない。通常のケースから開始すると、これを行うパッケージがない場合、何らかのアクションを処理するインテントがクラッシュします。私はgappsがないことと同じだと思います、なぜ別の方法で扱われるべきなのでしょうか?これを避けるには、intent.resolveActivity(pckManager)!= null'で行うことができます。 – Opiatefuchs