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:
- Pico TTS (di default di Android come di Froyo 2.2)
- IVONA Text-to-Speech HQ
- 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).
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:
- getEngines() elenca solo installato, non controllato (abilitato) pacchetti.
- 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.
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
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
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