2012-08-22 25 views
8

Questa domanda si riferisce su Android solo 2.2:Come determinare se un motore TTS specifico è selezionato (abilitato)?

La seguente schermata mostra 3 motori text-to-speech diversi installati:

  1. Pico TTS (di default di Android come di Froyo 2.2)
  2. IVONA Text-to-Speech HQ
  3. SVOX Classic TTS

In questa immagine, è co Vediamo che non tutti i 3 sono controllati (abilitati). Invece, IVONA è deselezionato, lasciando solo Pico (implicito, in quanto è codificato in) e SVOX (controllato).

enter image description here

Mi piacerebbe essere in grado di interrogare programmazione dalla mia applicazione se una specifica motore TTS (ad esempio IVONA) è checked (supponendo So che a tempo di codifica i nomi dei pacchetti, ovviamente).

In Android 2.2 tutto quello che ho è getDefaultEngine() che non può davvero aiutare in una situazione in cui viene selezionato Pico come predefinita e SVOX viene controllato (in altre parole, come faccio a sapere che SVOX viene controllato se Pico è il default?)

Come posso realizzare questo in Android 2.2 ?

È possibile?

P.S. Android 4.x (API> = 14) ha introdotto getEngines() che potrebbe portare a credere che questo problema è risolto per ICS +, ma un esame più attento rivela che:

  1. getEngines() elenca solo installato, non controllato (abilitato) pacchetti.
  2. Il EngineInfo fornito con ciascun pacchetto elencato fornisce solo nome, etichetta, icona, priorità e se fa parte dell'immagine del sistema. In altre parole, la stessa limitazione di Android 2.2.

risposta

0

Vedi l'Android TextToSpeech API guide

getEngines() darà una lista di tutti i motori che vengono installati, con alcune informazioni su ciascuno.

getDefaultEngine() darà il nome del pacchetto di qualsiasi motore che l'utente ha scelto come predefinito.

Confrontando il nome del pacchetto di ciascun motore (o di un elenco in anticipo) con il nome del pacchetto del motore predefinito, sarete in grado di vedere quale è selezionato.

Nota che la prima funzione è disponibile solo dal livello di API 14, anche se il secondo è disponibile dal livello di API 8.

+0

Scusa, ho dimenticato di sottolineare che sto cercando un Android 2.2 ** soluzione compatibile ** . Come hai giustamente notato, 'getEngines()' è disponibile solo dall'API 14. 'getDefaultEngine()' non può davvero aiutare in una situazione in cui * Pico * è selezionato come predefinito e * SVOX * è selezionato. Come faccio a sapere che * SVOX * è selezionato se * Pico * è l'impostazione predefinita? – an00b

+2

In futuro, si prega di dire in un commento che si sta modificando una domanda - la mia risposta è appena stata downvoted e immagino che sia perché la domanda ora dice tutto nella risposta. Non riesco a vedere nulla nei documenti di Android che ti dicono di motori controllati in API 8, quindi penso che potrebbe essere impossibile. – Hbcdev

+0

Mi dispiace per quello. IMHO, dovresti eliminare questa risposta perché né 'getEngines()' né 'getDefaultEngine()' sono in grado di aiutare a capire se un motore TTS specifico è ** controllato **. È meglio che questa domanda rimanga senza risposta, in modo che le persone sappiano che ** non è possibile ** dire se un motore TTS specifico è ** controllato **. +1 per il tuo commento. – an00b

Problemi correlati