Dlaczego UtteranceProgressListener nie jest interfejsem?
Bawię się funkcjami TTS Androida, a klasa TextToSpeech ma tę metodę, aby ustawić słuchacza, który zostanie powiadomiony po zakończeniu gry TextToSpeech:
public int setOnUtteranceCompletedListener(TextToSpeech.OnUtteranceCompletedListener listener)
AleOnUtteranceCompletedListener
jest zdefiniowany jakopublic abstract class
. Jako mójMainActivity
już rozszerza działanie, nie może się przedłużaćOnUtteranceCompletedListener
także. Mogłem użyć starszej metody zOnUtteranceCompletedListener
, ale jest to przestarzałe:
public int setOnUtteranceCompletedListener (TextToSpeech.OnUtteranceCompletedListener listener)`
Dlaczego jestOnUtteranceCompletedListener
nie zdefiniowany jakopublic static interface
? Myślę o napisaniu własnegoUtteranceProgressListenerImpl
, który po prostu zadzwoni doMainActivity
s onDone
metoda. Czy jest to właściwy sposób, czy istnieje lepsza / czystsza alternatywa?
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 */ }
}