0

TextToSpeech 機能のアプリを作成しています。
私はコードを書いて実行しますが、音声は生成されません。logcat にいくつかのエラーが表示されます。ここにlogcatがあります

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() メソッドから開始する必要があります。

どんな助けでも大歓迎です。

4

1 に答える 1

0

呼ばれるttsまで使えません。onInit

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

ttsまた、 2 回作成しています。最初に存在することを確認しているため、 のものonActivityResultが最も理にかなっています。で作成したものを削除しonCreate、実際の会話をすべて に入れますonInit

于 2012-08-02T21:42:36.547 に答える