Text To Speech is not working in Ginger Bread - Android 2.3 -
i developing text speech application. code working fine in android 4.0 ice cream sandwich , above. in android 2.3 ginger bread no voice coming without error. voice coming in emulator not in phone. have checked app on 2 handsets:
- xperia x10 ,
- galaxy pop mini having ginger bread.
here's code:
import java.util.locale; import android.view.viewgroup; import android.app.activity; import android.content.context; import android.graphics.typeface; import android.os.bundle; import android.speech.tts.texttospeech; import android.speech.tts.texttospeech.oninitlistener; import android.util.log; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.view.onclicklistener; import android.widget.adapterview; import android.widget.adapterview.onitemselectedlistener; import android.widget.arrayadapter; import android.widget.edittext; import android.widget.imagebutton; import android.widget.spinner; import android.widget.textview; import android.widget.toast; public class tts extends activity implements oninitlistener{ context context; private texttospeech tts; private imagebutton playtts,stoptts,cleartts; private edittext texttts; private spinner selectvoices; public static int spinnerpos; private string spinnerlist[] = {"...select voices..."," voice 1"," voice 2"," voice 3"}; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.tts); tts = new texttospeech(this, this); selectvoices = (spinner) findviewbyid(r.id.spinner); playtts = (imagebutton) findviewbyid(r.id.b_playtts); stoptts = (imagebutton) findviewbyid(r.id.b_stoptts); cleartts = (imagebutton) findviewbyid(r.id.b_cleartts); texttts = (edittext) findviewbyid(r.id.et_entertext); typeface mface = typeface.createfromasset(this.getassets(),"mvboli.ttf"); texttts.settypeface(mface); arrayadapter<string> aa = new arrayadapter<string>(tts.this, r.layout.spinnerlayout, spinnerlist){ public view getview(int position, view convertview, viewgroup parent) { view v = super.getview(position, convertview, parent); typeface externalfont=typeface.createfromasset(getassets(), "mvboli.ttf"); ((textview) v).settypeface(externalfont); return v; } public view getdropdownview(int position, view convertview, viewgroup parent) { view v =super.getdropdownview(position, convertview, parent); typeface externalfont=typeface.createfromasset(getassets(), "mvboli.ttf"); ((textview) v).settypeface(externalfont); return v; } }; selectvoices.setadapter(aa); // spinner on item click event selectvoices.setonitemselectedlistener(new onitemselectedlistener() { @override public void onitemselected(adapterview<?> parent, view view, int position, long id) { // todo auto-generated method stub spinnerpos = position; } @override public void onnothingselected(adapterview<?> arg0) { // todo auto-generated method stub } }); // button on click event playtts.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { switch (spinnerpos) { case 0: toast.maketext(getbasecontext(), "please choose voice type !", toast.length_short).show(); break; case 1: tts.setpitch(1.0f); speakout(); log.d("texttospeech","in onclick1"); break; case 2: tts.setpitch(0.2f); speakout(); log.d("texttospeech","in onclick2"); break; case 3: //pitch = 0.2f; tts.setpitch(2.0f); speakout(); log.d("texttospeech","in onclick3"); break; default: break; } } }); // clear button click event stoptts.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { tts.stop(); } }); // button click event cleartts.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { // todo auto-generated method stub texttts.settext(""); } }); } @override public void ondestroy() { // don't forget shutdown tts! if (tts != null) { tts.stop(); tts.shutdown(); } super.ondestroy(); } private void speakout() { string text = texttts.gettext().tostring(); log.d("texttospeech","in spkout"); tts.speak(text,tts.queue_flush,null); } @override public void oninit(int status) { // todo auto-generated method stub if (status == texttospeech.success) { int result = tts.setlanguage(locale.getdefault()); if (result == texttospeech.lang_missing_data || result == texttospeech.lang_not_supported) { log.e("tts", "this language not supported"); } else{ if (tts.islanguageavailable(locale.getdefault()) == texttospeech.lang_available || tts.islanguageavailable(locale.getdefault()) == texttospeech.lang_country_available) tts.setlanguage(locale.getdefault()); } } else { log.e("tts", "initilization failed!"); } } }
please help.
yes, there way not without user consent.
private void installvoicedata() { intent intent = new intent(texttospeech.engine.action_install_tts_data); intent.addflags(intent.flag_activity_new_task); intent.setpackage("com.google.android.tts"/*replace package name of target tts engine*/); try { log.v(tag, "installing voice data: " + intent.touri(0)); startactivity(intent); } catch (activitynotfoundexception ex) { log.e(tag, "failed install tts data, no acitivty found " + intent + ")"); } }
originally posted here
Comments
Post a Comment