【问题标题】:Start service after setOnUtteranceProgressListener on done?在 setOnUtteranceProgressListener 完成后启动服务?
【发布时间】:2016-07-30 18:21:40
【问题描述】:

我有一个问题,我想在 Text to Speech 完成讲话后启动 android 服务。

这是我的代码

HashMap<String, String> myHashAlarm = new HashMap<String, String>();
        myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM));
        myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "SOME MESSAGE");
        t1.speak(text, TextToSpeech.QUEUE_FLUSH, myHashAlarm);
        t1.speak("I can speak anything",TextToSpeech.QUEUE_ADD, null);

@Override
            public void onInit(int status) {
                if (status != TextToSpeech.ERROR) {
                    t1.setLanguage(Locale.US);
                    t1.setOnUtteranceProgressListener(new UtteranceProgressListener() {
                        @Override
                        public void onDone(String utteranceId) {
                            // Log.d("MainActivity", "TTS finished");
//here i want to start my service
startService(new Intent(this, MyService.class));// but its not working

                        }

                        @Override
                        public void onError(String utteranceId) {
                        }

                        @Override
                        public void onStart(String utteranceId) {
                        }
                    });;
                }
            }

请帮帮我....

【问题讨论】:

  • 我不确定我是否理解这个问题 - 为什么你不能在你想使用标准方法的地方启动服务? stackoverflow.com/a/12555333/1256219
  • startService(new Intent(this, MyService.class));无法解析构造函数 'Intent(anonymous android.speech.tts.utterenceProgressListener,java.lang.Class'
  • 您需要使用正确的上下文。请参阅我的回答和文档链接。

标签: android service text-to-speech


【解决方案1】:

您可以以标准方式启动服务,但startService() 需要上下文,如果您在您的ProgressListener 中,那将是上下文。

你需要使用

context.startService(new Intent(context, MyService.class));

如果您从 Activity 中使用,则可以使用

MyActivity.this.startService(new Intent(MyActivity.this, MyService.class));

还有更多examples on this question。你当然可以create an intent and add extras to it,在用这种方式之前。

【讨论】:

  • startService(new Intent(getApplicationContext(), MyService.class));你的答案是正确的伙伴......谢谢
  • @umair 很高兴它有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多