2012-04-11 6 views
0

こんにちは私はTextToSpeech機能である作成アプリです。私はコードを書いて実行するが、何もない
スピーチは生成されます。 logcatに何らかのエラーが表示されます。ここlogcatTextToSpeech:サービスは開始されていませんか?

04-11 20:21:30.099: VERBOSE/TtsService(481): TtsService.setLanguage(eng, USA,) 
04-11 20:21:30.109: INFO/TextToSpeech.java - speak(849): speak text of length 41 
04-11 20:21:30.109: ERROR/TextToSpeech.java - speak(849): service isn't started 

私はこれを解決する方法を理解していない...ここに私の完全なコードです。

public class ExamAppearingActivity extends Activity implements OnInitListener 
{ 
private int MY_DATA_CHECK_CODE = 0;  
private TextToSpeech tts; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.examquestionscreen); 
      if (isVoiceEnabled==1) 
     { 

      tts = new TextToSpeech(this, this); 

      final List<ObjectiveWiseQuestion> QuestionWiseProfile1= db.getOneQuestion(examId);  

      for (final ObjectiveWiseQuestion cn : QuestionWiseProfile1) 
      { 
       Intent checkIntent = new Intent(); 
       checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
       startActivityForResult(checkIntent, MY_DATA_CHECK_CODE); 

       db=new MySQLiteHelper(getBaseContext()); 
       db.getWritableDatabase();  
       counter=cn.getCounter(); 

       String question="Question is "+cn.getQuestion(); 
       String option1="Option A is "+cn.getOptionA(); 
       String option2="Option B is "+cn.getOptionB(); 
       String option3="Option C is "+cn.getOptionC(); 
       String option4="Option D is "+cn.getOptionD(); 
       tts.speak(question, TextToSpeech.QUEUE_ADD, null); 
       tts.speak(option1, TextToSpeech.QUEUE_ADD, null); 
       tts.speak(option2, TextToSpeech.QUEUE_ADD, null); 
       tts.speak(option3, TextToSpeech.QUEUE_ADD, null); 
       tts.speak(option4, TextToSpeech.QUEUE_ADD, null); 
       } 
     } 
    } 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == MY_DATA_CHECK_CODE) { 
      if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { 
       // success, create the TTS instance 
       tts = new TextToSpeech(this, this); 

      } 
      else { 
       // missing data, install it 
       Intent installIntent = new Intent(); 
       installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 

       //tts.isLanguageAvailable(Locale.INDIA_HINDI); 
       startActivity(installIntent); 

      } 
     } 

    } 

    @Override 
    public void onInit(int status) 
    {   
     if (status == TextToSpeech.SUCCESS) 
     { 
      // tts.setLanguage(Locale.US); 

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

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

    } 

このコードは、私がボタンのクリックでそれを追加しますが、私は
のonCreate()メソッドからそれを起動する必要があるときにのみ実行されます。

何か助けていただければ幸いです。

答えて

0

ttsは、onInitが呼び出されるまで使用できません。

現時点では、作成してonCreateメソッド内で使用しようとしましたが、それまでに初期化が完了していません。

また、ttsを2回作成しています。 onActivityResultにあるものは、最初に存在するかどうかをチェックしているため、最も意味があります。私はonCreateの作成を取り除き、onInitに実際のすべての話しを入れます。

関連する問題