我的服务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");
}
}
}
答案 0 :(得分:1)
一个原因是,当有电话呼入时,此时您的广播接收器会一次又一次地呼叫此活动,除非您选择电话 如果你想让它说话一次后停止这项服务。 停止服务的代码。
Intent in = new Intent(this, Speaker.class);
stopService(in);
在onDestroy()或onStart()方法中使用此代码。 为什么要使用TTS服务?,您可以使用任何活动或类等。