我的 TextToSpeech 返回错误 W/TextToSpeech:说话失败:未绑定到 TTS 引擎。
将 targetSdkVersion 更改为 28 并不能帮助解决此问题(现在我当前的版本是 32。我也尝试过 30)。
在 onInit 方法中我看到 status = -1(错误)
请帮助解决这个问题,或者可能会得到建议,如何使用其他一些实现来执行语音功能。
MainActivity.java
public class MainActivity extends Activity {
private TextView myTextView;
private MainActivityListeners listeners = new MainActivityListeners(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.myTextView = findViewById(R.id.tv_myView);
this.myTextView.setOnClickListener(this.listeners.getTranslateClickListener(this.myTextView));
}
MainActivityListeners.java
public class MainActivityListeners implements TextToSpeech.OnInitListener {
private MainActivity activity;
private TextToSpeech myTextToSpeech;
private boolean mIsInit;
public MainActivityListeners(MainActivity activity) {
this.activity = activity;
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
Locale locale = new Locale("eng");
int result = mTextToSpeech.setLanguage(locale);
if (result == TextToSpeech.LANG_MISSING_DATA) {
mIsInit = false;
} else {
mIsInit = true;
}
} else {
mIsInit = false;
}
}
View.OnClickListener getTranslateClickListener(TextView myTextView) {
return x -> {
this.myTextToSpeech = new TextToSpeech(this.activity, this);
this.myTextToSpeech.speak("Hello", TextToSpeech.QUEUE_FLUSH, null, "someId");
}
};
}
}
您的设备上应该安装有文本转语音引擎。它是一个单独的应用程序(隐藏与否,取决于制造商)。它通常预装在大多数手机上,但并非所有 Android 模拟器都有它(尤其是自定义皮肤)。您可以检查系统设置中是否可以找到并选中“文本转语音设置”,如果它丢失(比如有零个引擎可用),您可以从 PlayStore 下载它(我通常采用这个一个)。