2012-04-11 10 views
0

안녕하세요, 저는 TextToSpeech 기능인 작성 앱입니다. 나는 코드를 작성하고 실행하지만 아무런 코드도 생성하지 않습니다.
speech가 생성됩니다. 일부 오류가 logcat에 표시됩니다. 여기 logcat입니다TextToSpeech : 서비스가 시작되지 않았습니까?

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

ttsonInit이 호출 될 때까지 사용할 수 없습니다.

지금 작성한 후 onCreate 메서드 내에서 사용하려고 시도하지만 그때까지 초기화가 완료되지는 않습니다.

또한 tts을 두 번 생성합니다. onActivityResult에있는 것이 가장 먼저 감지됩니다. 왜냐하면 당신이 먼저 존재하는지 확인하기 때문입니다. 나는 onCreate에 창조물을 없애고 모든 실제 말을 onInit에 넣었습니다.

관련 문제