2012-12-18 58 views
3

我正在试着做口语词典。未绑定到TTS引擎

logcat的显示“成功绑定到com.android.tts”但当按钮点击后,显示“失败讲:不绑定到TTS引擎”

但是在AVD上它运行平稳,为什么?

这是我goTranslator类:

package sk.team; 

import android.app.Activity; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.RadioButton; 
import android.speech.tts.TextToSpeech; 
import android.widget.Toast; 
import android.content.Intent; 
import android.content.res.Configuration; 

import java.util.Locale; 

public class goTranslator extends Activity implements TextToSpeech.OnInitListener{ 

    private int MY_DATA_CHECK_CODE = 0; 
    private TextToSpeech tts; 
    private SQLiteDatabase db = null; 
    private Cursor translatorCursor = null; 
    private EditText txtSearch; 
    private EditText txtResult; 
    private AppDatabase dbtranslator = null; 
    private RadioButton Eng,Ind; 
    private Button Translate,Speak; 
    public static final String ENGLISH = "english"; 
    public static final String INDONESIA = "indonesia"; 

    public void onInit(int status) { 
     if (status == TextToSpeech.SUCCESS) { 
      Toast.makeText(goTranslator.this, 
        "Text-To-Speech engine is initialized", Toast.LENGTH_LONG).show(); 
     } else if (status == TextToSpeech.ERROR) { 
      Toast.makeText(goTranslator.this, 
        "Error occurred while initializing Text-To-Speech engine", 
        Toast.LENGTH_LONG).show(); 
     } 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == MY_DATA_CHECK_CODE) { 
      if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { 
       tts = new TextToSpeech(this, this); 
      } else { 
       Intent installIntent = new Intent(); 
       installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
       startActivity(installIntent); 
      } 
     } 
    } 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     dbtranslator = new AppDatabase(this); 
     db = dbtranslator.getWritableDatabase(); 
     setContentView(R.layout.main); 

     dbtranslator.createTable(db); 
     dbtranslator.generateData(db); 

     Eng = (RadioButton) findViewById(R.id.Eng); 
     Ind = (RadioButton) findViewById(R.id.Ind); 
     Translate = (Button) findViewById(R.id.Translate); 
     Speak = (Button) findViewById(R.id.Speak); 
     txtSearch = (EditText) findViewById(R.id.txtSearch); 
     txtResult = (EditText) findViewById(R.id.txtResult); 

     Intent checkIntent = new Intent(); 
     checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
     startActivityForResult(checkIntent, MY_DATA_CHECK_CODE); 

     Speak.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       String text = txtResult.getText().toString(); 

       if (text!=null && text.length()>0) { 
        Toast.makeText(goTranslator.this, "Saying: " + text, 
          Toast.LENGTH_LONG).show(); 
        tts.speak(text, TextToSpeech.QUEUE_ADD, null); 
       } 
      } 
     }); 
    } 

    public void Translate (View view) { 
     if (view == Translate) { 
      if (Eng.isChecked()) { 
       txtSearch.setHint("Masukkan Kata"); 

       Locale loc = new Locale ("es_ES"); 
       tts.setLanguage(loc); 

       String result = ""; 
       String englishword = txtSearch.getText().toString().trim().toLowerCase(); 
       translatorCursor = db.rawQuery("SELECT ID, ENGLISH, INDONESIA " 
         + "FROM translator where ENGLISH='" + englishword 
         + "' ORDER BY ENGLISH", null); 

       if (translatorCursor.moveToFirst()) { 
        result = translatorCursor.getString(2); 
        for (; !translatorCursor.isAfterLast(); translatorCursor.moveToNext()) { 
         result = translatorCursor.getString(2); 
        } 
       } 
       if (result.equals("")) { 
        result = "Kata Tidak Tersedia"; 
       } 
       txtResult.setText(result); 
      } 

      if (Ind.isChecked()) { 
       txtSearch.setHint("Enter Word"); 

       Locale loc = new Locale ("en_US"); 
       tts.setLanguage(loc); 

       String result = ""; 
       String indonesiaword = txtSearch.getText().toString().trim().toLowerCase(); 
       translatorCursor = db.rawQuery("SELECT ID, ENGLISH, INDONESIA " 
         + "FROM translator where INDONESIA='" + indonesiaword 
         + "' ORDER BY INDONESIA", null); 

       if (translatorCursor.moveToFirst()) { 
        result = translatorCursor.getString(1); 
        for (; !translatorCursor.isAfterLast(); translatorCursor.moveToNext()) { 
         result = translatorCursor.getString(1); 
        } 
       } 
       if (result.equals("")) { 
        result = "Result Not Found"; 
       } 
       txtResult.setText(result); 
      } 
     } 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     setContentView(R.layout.main); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 

     if (tts != null) { 
      tts.stop(); 
      tts.shutdown(); 
     } 

     if (translatorCursor != null) { 
      translatorCursor.close(); 
      db.close(); 
     } 
    } 
} 
+0

尝试在这里探索此问题:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/speech/tts/TextToSpeech。 java – pvllnspk

+1

你正在测试哪个设备 - 设备出现故障... –

+0

请发布你的'AndroidManifest.xml'。 – Phil

回答

1
Log.w(TAG, method + " failed: not bound to TTS engine"); 

我造成

mServiceConnection; 

被空

请问您的测试设备缺乏互联网连接?

相关问题