Verwenden des Android RecognizerIntent mit einem Bluetooth-Headset
Ich verwende den folgenden Code, um die Spracherkennung in Android zu starten:
PackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if (activities.size() == 0) {
displayWarning("This device does not support speech recognition");
return;
}
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
Das funktioniert gut. Es scheint jedoch keine Spracheingabe von einem Bluetooth-Headset zu akzeptieren, das über das Profil "Telefon-Audio" gekoppelt und verbunden ist.
Ich kann eine App namens verwendenSoundAbout um "Media Audio" auf "Bluetooth (mono) (SCO)" zu setzen. Mit diesem App-Set funktioniert meine Spracherkennung jetzt, indem ich die Spracheingabe von meinem Headset übernehme.
Wie kann ich RecognizerIntent verwenden und Spracheingabe von einem Bluetooth-Headset erhalten?
Ich sehe in API-Level 16 eine neue Intent-AktionACTION_VOICE_SEARCH_HANDS_FREE. Dies ist zu neu für mich, aber würde dies mein Problem lösen?
Muss ich im AudioManager herumspielen (wie ich es bei SoundAbout annehme), um den Audioeingang mit zu routen?setBluetoothScoOn() oderstartBluetoothSco()?