2012-08-22 11 views
8

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:

  1. PICO TTS (Androids Standard ab Froyo 2.2)
  2. IVONA Text-to-Speech HQ
  3. 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).

enter image description here

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:

  1. getEngines() listet nur installiert ist, nicht geprüft (aktiviert).
  2. 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.

Antwort

0

Siehe Android TextToSpeech API guide

getEngines() eine Liste aller Motoren geben, die installiert sind, mit ein paar Informationen über die einzelnen.

getDefaultEngine() gibt den Paketnamen der Engine, die der Benutzer als Standard gewählt hat.

Wenn Sie den Paketnamen jeder Engine (oder einer Liste, die Sie im Voraus haben) mit dem Paketnamen der Standard-Engine vergleichen, können Sie sehen, welche ausgewählt ist.

Beachten Sie, dass die frühere Funktion von API-Ebene nur dann verfügbar ist 14, obwohl die zweite von API-Ebene zur Verfügung 8.

+0

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

+2

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

+0

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

Verwandte Themen