Android 文本到语音转换似乎不起作用,logCat中没有错误消息

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

这段代码似乎有问题,每次它都说我没有在create上安装texttoSpeech,而且我已经安装了,当我单击start read按钮时,应用程序崩溃,没有错误消息。。。这是密码

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方法受到保护!!!。。。无论如何,谢谢你的帮助: