Wie kann ich feststellen, ob eine bestimmte TTS-Engine aktiviert (aktiviert) ist?

8

Diese Frage bezieht sich nur auf Android 2.2 :

Der folgende Screenshot zeigt 3 verschiedene Text-zu-Sprache-Engines installiert:

  1. PIco TTS (Android-Standard ab Froyo 2.2)
  2. IVONA Text-zu-Sprache-HQ
  3. SVOX Klassisches TTS

In diesem Screenshot konnten Sie sehen, 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 abzufragen, ob eine bestimmte TTS-Engine (z. B. IVONA) geprüft (vorausgesetzt, ich kenne zur Zeit der Programmierung natürlich ihre Paketnamen).

In Android 2.2 habe ich nur getDefaultEngine() , was in einer Situation, in der Pico als Standard und SVOX wird überprüft (mit anderen Worten, woher weiß ich, dass SVOX überprüft wird, wenn Pico die Standardeinstellung ist?)

Wie erreiche ich das in Android 2.2 ?

Ist das überhaupt möglich?

PS Android 4.x (API & gt; = 14) eingeführt getEngines () , was zu der Annahme führen kann, dass dieses Problem gelöst ist ICS + aber genauere Untersuchung zeigt, dass:

  1. getEngines () enthält nur installierte , nicht markierte (aktivierte) Pakete.
  2. Die EngineInfo , das zu jedem aufgeführten Paket gehört, enthält nur Namen, Label, Symbol, Priorität und ob es Teil des Systemabbilds ist. Mit anderen Worten, die gleiche Beschränkung wie in Android 2.2.
an00b 22.08.2012, 14:07
quelle

1 Antwort

0

Weitere Informationen finden Sie im Android TextToSpeech API-Leitfaden

>

getEngines() gibt eine Liste aller installierten Module mit einigen Informationen zu jedem.

getDefaultEngine() gibt den Paketnamen der Engine an, die der Benutzer als Standard ausgewä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 vorherige Funktion nur von API-Ebene 14 verfügbar ist, die zweite jedoch von API-Ebene 8 verfügbar ist.

    
Hbcdev 22.08.2012, 14:37
quelle