Android TTS sucht nach unterstützten Ländereinstellungen mit fehlenden / nicht heruntergeladenen Sprachdaten

8

Ich verwende Androids TextToSpeech-Klasse. Alles funktioniert normal. Es gibt jedoch Sprachen / Gebietsschemata, die nicht standardmäßig installiert sind, aber von der TTS-Engine unterstützt werden, und ich kann den Status fehlender Sprachdaten nicht erfassen.

Wenn ich im Internet versuche, Language auf ein neues Gebietsschema zu setzen, dessen Sprachdaten nicht heruntergeladen wurden, lädt es einfach die Sprachdaten herunter und führt die Sprachmethode normal / erfolgreich aus.

Wenn jedoch bei ausgeschaltetem Internet versucht wird, Language auf ein neues Gebietsschema zu setzen, dessen Sprachdaten nicht heruntergeladen wurden, versucht es, die Sprachdaten herunterzuladen. Aber ohne Internet zeigt es nur "Download" auf dem Einstellungsbildschirm "TTS-Sprachdaten" unter "Sprache und Eingabe" für das ausgewählte Gebietsschema ohne Fortschritt an. Und wie erwartet funktioniert die Sprechmethode nicht, da die Sprachdaten nicht heruntergeladen werden. Wenn dies passiert, würde ich denken, dass die TTS-Methoden setLanguage / isLanguageAvailable LANG_MISSING_DATA zurückgeben, damit ich diesen Status erfassen kann, es gibt jedoch einfach LANG_COUNTRY_AVAILABLE zurück. Die Situation wird in diesem Bild gezeigt:

Ich möchte erkennen können, wenn die Sprachdaten des gewählten Gebiets nicht heruntergeladen werden / fehlen und entweder eine Toast-Nachricht oder einen direkten Benutzer zum Herunterladen geben. Ich habe mehrere Beiträge gesehen, in denen die Verwendung von isLanguageAvailable wie folgt vorgeschlagen wurde: eins . Ich schaute auch auf die Android-Dokumentation und es scheint so Die Rückgabewerte von isLanguageAvailable sollten den Status fehlender Sprachdaten mit LANG_MISSING_DATA erfassen.

Ich habe auch versucht, eine Absicht mit ACTION_CHECK_TTS_DATA zu senden, um nach fehlenden Daten zu suchen, wie in der verknüpften Android-Dokumentation vorgeschlagen. Der resultCode hat jedoch erneut nicht erfasst, dass die Sprachdaten fehlen (CHECK_VOICE_DATA_FAIL), sondern CHECK_VOICE_DATA_PASS zurückgegeben.

Wie sollte ich in diesem Fall den Status einer Sprache / eines Gebietsschemas erfassen, die verfügbar / unterstützt sind, wobei die Sprachdaten fehlen? Ich bin auch neugierig, warum CHECK_VOICE_DATA_PASS und LANG_MISSING_DATA nicht die zurückgegebenen Werte sind. Wenn die Sprachdaten fehlen, sollten sie diese Werte nicht zurückgeben? Vielen Dank! Unten ist der Rückgabewert, wenn ich versuche, setLanguage und isLanguageAvailable für Gebietsschemata zu verwenden, bei denen die Sprachdaten nicht heruntergeladen wurden (0 und 1 sind die zurückgegebenen Werte der Methode in den Protokollen, -1 entspricht der fehlenden Stimme) Daten):

    
Charles Li 18.06.2017, 20:13
quelle

2 Antworten

5

Sie können alle verfügbaren Ländereinstellungen des Geräts mit der folgenden Funktion finden. Ich hoffe, dieser Code wird Ihnen helfen.

%Vor%     
Guru raj 22.06.2017 17:27
quelle
0

Es sieht wie eine lange wartende Frage aber irgendwie aus. Es scheint, dass Sie Sprachfeatures überprüfen müssen, um es herauszufinden:

%Vor%     
Maxim 14.12.2017 07:56
quelle