ユーザーの発話を聞いているインテントを止めることはできますか? たとえば、次のリスナーがあります。
@Override
public boolean onTouch(View v, MotionEvent event) {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "es");
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
return true;
case MotionEvent.ACTION_UP:
//Code to stop listening user speech
return true;
}
私の考えでは、Whatsapp のマイク ボタンのように、ユーザーが特定のボタンを押し続けて、アプリが音声を聞くようにする必要があります。
編集
@brandallが私に指示したことはすでに試したと思います。コードの変更は次のとおりです。
public boolean onTouch(View v, MotionEvent event) {
SpeechRecognizer speechRecognizer = createSpeechRecognizer(context);
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "es");
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
speechRecognizer.startListening(intent);
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
return true;
case MotionEvent.ACTION_UP:
speechRecognizer.stopListening();
return true;
}
return false;
}
});