TTS Ausgabe immer A2DP
Mein Android-tutorial-Staaten, das kann ich ausdrücklich sagen, die TTS-engine, die Strom zu verwenden:
Für Musik-Wiedergabe:
params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC));
Und für Anrufe:
params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_VOICE_CALL));
Mein Verständnis ist, dass das audio-routing zu einem Bluetooth-headset funktioniert, so dass STREAM_MUSIC
geht A2DP
(aka "media audio" in den Android-Bluetooth-Einstellungen) und STREAM_VOICE_CALL
geht HSP
(auch bekannt als "Telefon-audio" in den Android-Bluetooth-Einstellungen).
Aber egal ob ich STREAM_MUSIC
oder STREAM_VOICE_CALL
in meiner kleinen Anwendung, die audio geht immer aus irgendeinem Grund zu A2DP
.
Was ich falsch mache? Gibt es eine Möglichkeit, die route TTS-Ausgabe auf headset HSP
Profil?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich diese Arbeit für die meisten Teil, auf den meisten Geräten. Hier ist der Teil, der beginnt die TTS auf den voice-call-stream über Bluetooth SCO statt A2DP.
Jetzt habe ich nur ein problem, den stream wieder zurück, wenn Sie fertig sind. Es funktioniert alles fein zu Lesen TTS. Es wird unterbrechen Sie die Musik, spielen die TTS, und dann wieder auf die Musik in Ordnung. Wenn ich allerdings die app verlassen später den Strom für die Medien spielt nun durch den Telefon Hörer, bis ich neu starte. Ich habe geschrieben, dass die Frage hier: Audio-stream bleibt auf Hörer nach über AudioManager
Können Sie sehen mein ganzes Projekt hier: http://code.google.com/p/a2dpvolume/
Wenn Ihr headset ist kompatibel mit dem Bluetooth Profil a2dp, dann mit
AudioManager.STREAM_MUSIC
und damit die audio-Wiedergabe durch den Strom bekommen sollte den job zu erledigen.Ich würde auch hinzufügen, dass, wenn Sie derzeit in einem Aufruf, und spielen Sie audio über den voice-stream, dann headset (a2dp oder anderweitig) hören Sie die audio. Leider müssen Sie in einem Aufruf.
Leider habe ich festgestellt, dass Sie den Modus, um
MODE_IN_CALL
nichts.Um es zusammenzufassen:
Wenn alle, die Sie versuchen zu tun ist, Musik spielen (wenn kein Anruf aktiv ist), dann verwenden Sie die
AudioManager.STREAM_MUSIC
- und wenn das headset A2DP-kompatibel ist, dann wird es die Musik hört.Werfen Sie auch einen Blick auf
AudioManager.isBluetoothA2dpOn()
, um sicherzustellen, dass das system denkt, dass Ihr headeset angeschlossen ist.Ja, es ist möglich, spielen die TTS (text-to-speech) Ausgang über eine nicht-A2DP-headset wie jroal sagt mithilfe von SCO.
Verwenden AudioManager startBluetoothSco zu aktivieren SCO. Dann hören AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED Sendung mit der EXTRA_SCO_AUDIO_STATE eingestellt SCO_AUDIO_STATE_CONNECTED.
Wenn Sie jetzt tun, TextToSpeech, um die STREAM_VOICE_CALL Strom, es wird am Ende in das headset (auch das Billig nicht A2DP-Geräten).