Почему UtteranceProgressListener не является интерфейсом?

Я играю с функциями Android TTS, и класс TextToSpeech имеет этот метод для установки прослушивателя, который получает уведомление после завершения воспроизведения TextToSpeech :

public int setOnUtteranceCompletedListener(TextToSpeech.OnUtteranceCompletedListener listener)

. Но OnUtteranceCompletedListenerопределяется как public abstract class. Поскольку мой MainActivityуже расширяет Activity, он также не может расширять OnUtteranceCompletedListener. Я мог бы использовать старый метод с OnUtteranceCompletedListener, но он устарел :

public int setOnUtteranceCompletedListener (TextToSpeech.OnUtteranceCompletedListener listener)`

. Почему OnUtteranceCompletedListenerне определяется как public static interface? Я думаю написать свой собственный UtteranceProgressListenerImpl, который будет просто вызывать метод MainActivitys onDone. Это правильный путь или есть лучшая/более чистая альтернатива?

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 */ }


}
5
задан Benedikt Köppel 28 July 2012 в 18:35
поделиться