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()?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage