アプリケーションからAndroid音声認識サービスを使用しています。
2つのクライアントが同時にリクエストを送信しようとすると(たとえば、ユーザーがアプリから1つの音声検索を開始し、検索がまだアクティブな間に別のアプリケーションに切り替えて、別の検索を開始した場合)、サービスは機能しなくなります。 。
音声認識セッションが進行中であることを確認して、別のセッションの開始を拒否できるようにする方法はありますか?
アプリケーションからAndroid音声認識サービスを使用しています。
2つのクライアントが同時にリクエストを送信しようとすると(たとえば、ユーザーがアプリから1つの音声検索を開始し、検索がまだアクティブな間に別のアプリケーションに切り替えて、別の検索を開始した場合)、サービスは機能しなくなります。 。
音声認識セッションが進行中であることを確認して、別のセッションの開始を拒否できるようにする方法はありますか?
おそらく、onError ハンドラで ERROR_RECOGNIZER_BUSY をトラップする必要があります。
@Override
public void onError(int error) {
switch (error) {
case SpeechRecognizer.ERROR_RECOGNIZER_BUSY:
// do something reasonable
…
}
}
リスニングを開始する要求でそれを受け取る可能性が最も高い (だけ?)。残念ながら、試してみずにこの状態をテストする方法を私は知りません (たとえば、マイク ボタンを削除するためにアクティブになっている別のプロセスのリスナーを事前に検出することはできないと思います)。
(リッスンを停止すると、別のプロセスのリスナーを強制終了しようとした場合にのみ、このエラーが発生します。)