TTS未在服务中停止:停止失败:未绑定到TTS引擎

时间:2015-08-03 16:54:28

标签: android service text-to-speech

我的服务TTS没有停止并且说两次。 在logcat中,错误是“停止失败:未绑定到TTS引擎” 我被困在这里,为什么TTS没有停止。什么我会在这里做什么来突然停止它。 这是我的代码

 public class Speaker extends Service implements TextToSpeech.OnInitListener {
        public static TextToSpeech mtts;
        String speech = "";

        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }

        @Override
        public void onCreate() {
        }

        @Override
        public void onStart(Intent intent, int startid) {
            speech=intent.getExtras().getString("speech");
           mtts = new TextToSpeech(getApplicationContext(), this);
        }


            @Override
        public void onDestroy() {
             if (mtts != null) {
                Log.e("Destroy", "Service");
                 mtts.stop();
                 mtts.shutdown();
                }

                super.onDestroy();
        }

        @Override
        public void onInit(int status) {

            if (status == TextToSpeech.SUCCESS)
                    mtts.speak(speech, TextToSpeech.QUEUE_ADD, null);
                }
            Log.e("onInit ends", "Service");
        }


        }
    }

1 个答案:

答案 0 :(得分:1)

一个原因是,当有电话呼入时,此时您的广播接收器会一次又一次地呼叫此活动,除非您选择电话 如果你想让它说话一次后停止这项服务。 停止服务的代码。

Intent in = new Intent(this, Speaker.class);
 stopService(in); 

在onDestroy()或onStart()方法中使用此代码。 为什么要使用TTS服务?,您可以使用任何活动或类等。