2012-08-22 23 views
8

Esta pregunta se refiere en Android solamente 2,2:¿Cómo saber si un motor TTS específico está marcado (habilitado)?

La siguiente captura de pantalla muestra 3 motores diferentes de texto a voz instalados:

  1. Pico TTS (por defecto de Android como de Froyo 2.2)
  2. IVONA Text-to-Speech HQ
  3. SVOX TTS Classic

En esta pantalla, usted co Observe que no todos los 3 están marcados (habilitados). En cambio, IVONA no está marcado, dejando solo Pico (implícita, ya que está codificado) y SVOX (marcado).

enter image description here

Me gustaría ser capaz de consultar mediante programación desde mi aplicación si un motor TTS específica (por ejemplo IVONA) es checked (suponiendo que sé en el momento de la codificación de sus nombres de paquetes, por supuesto).

En Android 2.2 todo lo que tengo esgetDefaultEngine() que no puede realmente ayudar en una situación en la que Pico se selecciona por defecto y SVOX está activada (en otras palabras, ¿cómo sé que SVOX se comprueba si Pico es el valor por defecto?)

¿Cómo lograr eso en Android 2.2 ?

¿Es esto posible?

P.S. Android 4.x (API> = 14) presentó getEngines() que le puede llevar a creer que este problema se resuelve para ICS + pero un examen más detallado revela que:

  1. getEngines() sólo enumera instalado, no comprobado (habilitado) paquetes.
  2. El EngineInfo que viene con cada paquete enumerado solo proporciona nombre, etiqueta, icono, prioridad y si es parte de la imagen del sistema. En otras palabras, la misma limitación que en Android 2.2.

Respuesta

0

Véase el Android TextToSpeech API guide

getEngines() dará una lista de todos los motores que se instalan, con algo de información acerca de cada uno.

getDefaultEngine() dará el nombre del paquete de cualquier motor que el usuario haya elegido por defecto.

Al comparar el nombre del paquete de cada motor (o una lista que tenga por adelantado) con el nombre del paquete del motor predeterminado, podrá ver cuál está seleccionado.

Tenga en cuenta que la antigua función sólo está disponible desde el nivel del API 14, aunque el segundo se encuentra disponible desde el nivel del API 8.

+0

Lo siento, se olvidó de subrayar que estoy buscando un Android 2.2 ** ** solución compatible . Como notó correctamente, 'getEngines()' solo está disponible en la API 14. 'getDefaultEngine()' no puede ayudar en una situación en la que * Pico * está seleccionado como predeterminado y * SVOX * está marcado. ¿Cómo sé que * SVOX * está marcado si * Pico * es el valor predeterminado? – an00b

+2

En el futuro, por favor diga en un comentario que está editando una pregunta: mi respuesta acaba bajada y supongo que es porque la pregunta ahora dice todas las cosas en la respuesta. No puedo ver nada en los documentos de Android que te indiquen sobre los motores comprobados en la API 8, así que creo que podría ser imposible. – Hbcdev

+0

Perdón por eso. En mi humilde opinión, debe eliminar esta respuesta porque ni 'getEngines()' ni 'getDefaultEngine()' son capaces de ayudar a indicar si un motor TTS específico ** está marcado **. Es mejor que esta pregunta permanezca sin respuesta, de modo que la gente sepa que ** no es posible ** decir si un motor TTS específico ** está marcado **. +1 por tu comentario. – an00b

Cuestiones relacionadas