2010-07-01 18 views
10

Ho un'applicazione che utilizza il motore tts in Android, ora all'avvio dell'attività, voglio mostrare agli utenti le impostazioni presenti nel telefono per il motore tts in cui possono cambiare il pitch, testare il motore, ecc. che è già presente nell'emulatore.Come visualizzare le impostazioni per la sintesi vocale nella mia app?

Quindi, come posso presentare loro questa schermata?

risposta

9

Ho avuto lo stesso problema per la mia app e ho trovato questo post. Sono riuscito a farlo da solo, quindi questa risposta è per coloro che potrebbero averne bisogno.

ComponentName componentToLaunch = new ComponentName(
     "com.android.settings", 
     "com.android.settings.TextToSpeechSettings"); 
Intent intent = new Intent(); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 
intent.setComponent(componentToLaunch); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

Abbiamo creare un intento esplicito, e dobbiamo avviare il componente com.android.settings.TextToSpeechSettings. È possibile utilizzare LogCat in eclissi per trovare qualsiasi pacchetto o componente si stia tentando di avviare. Dai un'occhiata ai messaggi di attività di Avvio di ActivityManager e vedrai il nome del pacchetto e del componente di qualsiasi attività.

UPDATE

Come di Android ICS si dovrebbe utilizzare la soluzione che il Forza postato qui sotto.

intent = new Intent(); 
intent.setAction("com.android.settings.TTS_SETTINGS"); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
this.startActivity(intent); 
+1

Sembra che questa versione non funzioni più (almeno su Samsung note 2 (API 18)). La risposta di Force funziona però. '' ' intent = new Intent(); intent.setAction ("com.android.settings.TTS_SETTINGS"); intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity (intent); '' ' – Jani

+0

Grazie a @Jani. Ho aggiornato la mia risposta per indicare anche la soluzione di Force. – Bandreid

2

Creare un intent per aprire le impostazioni. Penso che sarebbe.

Intent i = new Intent(android.provider.Settings.ACTION_INPUT_METHOD_SETTINGS); 
startActivityForResult(i); // to come back to your activity. 
+0

grazie, ma questo darebbe le impostazioni della tastiera utente. Volevo mostrare questa schermata che si trova in Impostazioni-> Sintesi vocale. Ecco la schermata: http://picasaweb.google.com/113593639172348814875/ScreenShots#5489006879503683298 – pranay

16

Per gli utenti ICS chiamata di Bandreid non funziona più. Devi usare questo codice:

intent = new Intent(); 
intent.setAction("com.android.settings.TTS_SETTINGS"); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
this.startActivity(intent); 
3

ho unito risposta di di Bandreid e forza per supportare tutte le versioni di Android.

di questo codice:

//Open Android Text-To-Speech Settings 
if (Build.VERSION.SDK_INT >= 14){ 
    Intent intent = new Intent(); 
    intent.setAction("com.android.settings.TTS_SETTINGS"); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
}else { 
    Intent intent = new Intent(); 
    intent.addCategory(Intent.CATEGORY_LAUNCHER); 
    intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.TextToSpeechSettings")); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
} 

O in una sola riga:

//Open Android Text-To-Speech Settings 
startActivity(Build.VERSION.SDK_INT >= 14 ? 
     new Intent().setAction("com.android.settings.TTS_SETTINGS").setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) : 
     new Intent().addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.android.settings", "com.android.settings.TextToSpeechSettings")).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); 

Speranza mia risposta aiuto!

Problemi correlati