Android 文本到语音转换似乎不起作用,logCat中没有错误消息
这段代码似乎有问题,每次它都说我没有在create上安装texttoSpeech,而且我已经安装了,当我单击start read按钮时,应用程序崩溃,没有错误消息。。。这是密码Android 文本到语音转换似乎不起作用,logCat中没有错误消息,android,text-to-speech,Android,Text To Speech,这段代码似乎有问题,每次它都说我没有在create上安装texttoSpeech,而且我已经安装了,当我单击start read按钮时,应用程序崩溃,没有错误消息。。。这是密码 public class CBrecipeReader extends Activity{ public Cursor cursor; CBDataBaseHelper data; public static int ReadData = 1; public TextToSpeech Speak = null; pu
public class CBrecipeReader extends Activity{
public Cursor cursor;
CBDataBaseHelper data;
public static int ReadData = 1;
public TextToSpeech Speak = null;
public boolean SpeakInit = false;
public TextView Speech;
public TextView rowIDText2;
CBListAdapter adapter;
String RowID;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.texttospeech);
Bundle extras = getIntent().getExtras();
Button StartSpeech = (Button)findViewById(R.id.startSpeech);
rowIDText2 = (TextView)findViewById(R.id.rowID2);
Speech = (TextView) findViewById(R.id.sayThis);
if (extras != null) {
RowID = extras.getString("SELECTED3");
rowIDText2.setText(RowID);
}
if (rowIDText2.getText() != ""){
data = new CBDataBaseHelper(this);
String s = rowIDText2.getText().toString();
int ID = Integer.parseInt(s);
data.open();
Cursor cursor = data.fetchRow(ID);
if (cursor.moveToFirst()){ // data?
Speech.setText(cursor.getString(1) + " " + cursor.getString(2) + " " + cursor.getString(3));
}
data.close();
}
//+ " " + cursor.getString(2) + "" + cursor.getString(3)
initSpeak();
speakButtons(StartSpeech);
}
protected void initSpeak(){
Intent intent = new Intent(Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(intent, ReadData);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if (requestCode == ReadData){
if (resultCode == Engine.CHECK_VOICE_DATA_PASS){
Speak = new TextToSpeech(this, new OnInitListener() {
public void onInit(int status) {
// TODO Auto-generated method stub
if (status == TextToSpeech.SUCCESS){
SpeakInit = true;
if(Speak.isLanguageAvailable(Locale.UK) >= 0){
Speak.setLanguage(Locale.UK);
Speak.setPitch(0.8f);
Speak.setSpeechRate(1.1f);
}
}
}
});
}else {
Intent installVoice = new Intent(Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installVoice);
}
}
}
protected void speakButtons(View view){
boolean diditwork;
try {
Speech = (TextView) findViewById(R.id.sayThis);
if (Speak != null && SpeakInit){
Speak.speak("test", TextToSpeech.QUEUE_ADD, null);
} else if (SpeakInit == false){
Toast.makeText(getApplicationContext(), "No Text to speech Installed ", Toast.LENGTH_SHORT).show();
}
}catch(Exception e){
diditwork = false;
String error = e.toString();
Dialog d = new Dialog(this);
d.setTitle("darn");
TextView tv = new TextView(this);
tv.setText(error);
d.setContentView(tv);
d.show();
}
}
}
你的代码似乎和我的非常相似,我能看到的唯一区别是 我呼吁: Speak.speaktest,TextToSpeech.QUEUE_FLUSH,null 你打电话:
Speak.speaktest,TextToSpeech.QUEUE_ADD,null 我会添加一些日志记录,以便在每个步骤后给自己反馈,这样您就可以知道它在哪里崩溃,以及它崩溃时的当前值。不,它仍然显示一个祝酒词,表示没有安装TTS引擎。。然而,我第一次运行这段代码时,它确实是从市场上安装的。。当我点击按钮时仍然崩溃,我在调试模式下连接到我的计算机,而不是用diskdrive,所以它应该会看到它,它是崩溃还是不工作?你看到烤面包了吗?然后它就崩溃了?如果您正在调试,那么在onActivityResult中放置一个断点,看看它是否会返回。你能卸载市场上安装的东西吗?我的天哪,整个错误都是因为我的speakButtons方法受到保护!!!。。。无论如何,谢谢你的帮助: