feat(tts): ensure Android default TTS engine is set before speaking
This commit is contained in:
@@ -79,6 +79,7 @@ class TextToSpeechService {
|
||||
}) async {
|
||||
_deviceEngineAvailable = false;
|
||||
try {
|
||||
await _ensureAndroidDefaultEngine();
|
||||
await _tts.awaitSpeakCompletion(false);
|
||||
await _tts.setVolume(volume);
|
||||
await _tts.setSpeechRate(speechRate);
|
||||
@@ -108,6 +109,20 @@ class TextToSpeechService {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _ensureAndroidDefaultEngine() async {
|
||||
if (kIsWeb || !Platform.isAndroid) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
final engine = await _tts.getDefaultEngine;
|
||||
if (engine is String && engine.isNotEmpty) {
|
||||
await _tts.setEngine(engine);
|
||||
}
|
||||
} catch (e) {
|
||||
_onError?.call(e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
bool _computeAvailability() {
|
||||
final serverAvailable = _api != null;
|
||||
switch (_engine) {
|
||||
@@ -808,6 +823,7 @@ class TextToSpeechService {
|
||||
|
||||
var configured = false;
|
||||
try {
|
||||
await _ensureAndroidDefaultEngine();
|
||||
Map<String, dynamic>? defaultVoice;
|
||||
bool voiceSet = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user