gpt4 book ai didi

android - 为什么 UtteranceProgressListener 不是接口(interface)?

转载 作者:行者123 更新时间:2023-12-03 21:40:14 24 4
gpt4 key购买 nike

我正在使用 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 , 然后将调用 MainActivity小号 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 */ }


}

最佳答案

我不知道我认为它也应该是一个界面。我使用此代码来解决它。可用here也是。

另外,投票给 this bug我前段时间提交了。

public void setTts(TextToSpeech tts)
{
this.tts = tts;
if (Build.VERSION.SDK_INT >= 15)
{
tts.setOnUtteranceProgressListener(new UtteranceProgressListener()
{
@Override
public void onDone(String utteranceId)
{
onDoneSpeaking(utteranceId);
}

@Override
public void onError(String utteranceId)
{
}

@Override
public void onStart(String utteranceId)
{
}
});
}
else
{
Log.d(TAG, "set utternace completed listener");
tts.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener()
{
@Override
public void onUtteranceCompleted(String utteranceId)
{
onDoneSpeaking(utteranceId);
}
});
}
}

关于android - 为什么 UtteranceProgressListener 不是接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20787636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com