完成 setOnUtteranceProgressListener 后启动服务?

Start service after setOnUtteranceProgressListener on done?

我有一个问题,我想在 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) {
                        }
                    });;
                }
            }

请帮帮我....

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

您需要使用

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

如果您使用 Activity,您可以使用

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

还有很多examples on this question. You can of course create an intent and add extras to it,再这样使用。