Diese Frage bezieht sich auf Android 2.2:Wie kann ich feststellen, ob eine bestimmte TTS-Engine aktiviert (aktiviert) ist? nur
Der folgende Screenshot zeigt 3 verschiedene Text-to-Speech-Engines installiert:
- PICO TTS (Androids Standard ab Froyo 2.2)
- IVONA Text-to-Speech HQ
- SVOX TTS Klassik
In diesem Screenshot, co Sie achte darauf, dass nicht alle 3 aktiviert (aktiviert) sind. Stattdessen ist IVONA deaktiviert und es bleiben nur Pico (impliziert, da es fest codiert ist) und SVOX (aktiviert).
Ich möchte in der Lage sein, programmatisch aus meiner Anwendung zur Abfrage, ob ein bestimmtes TTS-Engine (z IVONA) ist checked (vorausgesetzt, ich Codierung Zeit ihre Paketnamen kennen, natürlich).
In Android 2.2 alles, was ich habe, ist getDefaultEngine()
, die nicht wirklich in einer Situation helfen kann, wo Pico als Standard und SVOX ausgewählt ist geprüft (in anderen Worten, wie ich weiß, dass SVOX wenn Pico ist die Standardeinstellung aktiviert ist?)
Wie kann ich erreichen, dass in Android 2.2 ?
Ist das überhaupt möglich?
P.S. Android 4.x (API> = 14) eingeführt getEngines(), die Sie führen zu glauben, dass dieses Problem für ICS + gelöst wird, aber genauere Untersuchung zeigt, dass:
- getEngines() listet nur installiert ist, nicht geprüft (aktiviert).
- Die EngineInfo, die mit jedem aufgeführten Paket kommt, bietet nur Namen, Beschriftung, Symbol, Priorität und ob es Teil des Systemabbilds ist. Mit anderen Worten, die gleiche Einschränkung wie in Android 2.2.
Sorry, ich vergaß zu betonen, dass ich für ein Android-Suche ** 2,2 ** kompatible Lösung . Wie Sie richtig bemerkt haben, ist 'getEngines()' nur von API 14 verfügbar. 'GetDefaultEngine()' kann nicht wirklich helfen in einer Situation, in der * Pico * als Standard ausgewählt ist und * SVOX * aktiviert ist. Woher weiß ich, dass * SVOX * geprüft wird, wenn * Pico * die Standardeinstellung ist? – an00b
In Zukunft sagen Sie bitte in einem Kommentar, dass Sie eine Frage bearbeiten - meine Antwort wurde gerade abgelehnt und ich vermute, es ist, weil die Frage jetzt alles in der Antwort sagt. Ich kann nichts in den Android-Dokumenten sehen, die Ihnen über die APIs von checked engines erzählen würden, also denke ich, dass es unmöglich sein könnte. – Hbcdev
Entschuldigung. IMHO, sollten Sie diese Antwort löschen, weil weder 'getEngines()' noch 'getDefaultEngine()' helfen, zu erkennen, ob eine bestimmte TTS-Engine ** aktiviert ist **. Es ist besser, dass diese Frage unbeantwortet bleibt, damit die Leute wissen, dass es ** nicht möglich ist zu sagen, ob eine bestimmte TTS-Maschine ** kontrolliert wird **. +1 für deinen Kommentar – an00b