我正在使用 Android 的 TTS 功能,TextToSpeech 类有这个方法来设置一个监听器,一旦 TextToSpeech 完成播放就会得到通知:
public int setOnUtteranceCompletedListener(TextToSpeech.OnUtteranceCompletedListener listener)
但是OnUtteranceCompletedListener
被定义为public abstract class
。由于我MainActivity
已经扩展了 Activity,它也不能扩展OnUtteranceCompletedListener
。我可以将旧方法与 a 一起使用OnUtteranceCompletedListener
,但这已被弃用:
public int setOnUtteranceCompletedListener (TextToSpeech.OnUtteranceCompletedListener listener)`
为什么OnUtteranceCompletedListener
不定义为public static interface
?我正在考虑编写自己UtteranceProgressListenerImpl
的 s 方法,然后调用MainActivity
sonDone
方法。这是正确的方法还是有更好/更清洁的选择?
private class UtteranceProgressListenerImpl extends UtteranceProgressListener {
private MainActivity mainActivity;
UtteranceProgressListenerImpl(MainActivity mA) {
mainActivity = mA;
}
@Override
public void onDone(String utteranceId) {
mainActivity.onDone(utteranceId);
}
@Override
public void onError(String utteranceId) { /* empty */ }
@Override
public void onStart(String utteranceId) { /* empty */ }
}