首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TextToSpeech:服务未启动?

TextToSpeech:服务未启动?
EN

Stack Overflow用户
提问于 2012-04-11 23:01:19
回答 1查看 685关注 0票数 0

嘿,我正在创建一个应用程序,这是TextToSpeech的功能。我写代码并运行,但什么也没有

生成语音。一些错误显示在logcat中。这是logcat

代码语言:javascript
复制
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

我不明白如何解决this...here是我的完整代码。

代码语言:javascript
复制
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()方法。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2012-08-03 05:42:37

在调用onInit之前,您不能使用tts

现在,您创建了它并尝试在onCreate方法中使用它,但到那时它还没有完成初始化。

您还创建了两次ttsonActivityResult中的方法最有意义,因为您首先要检查它是否存在。我去掉了在onCreate中的创建,把所有实际的对话都放到了onInit中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10108631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档