Я пытаюсь перенести приложение для Android в Chrome с помощью ARCWelder. Компонент TextToSpeech не работает. В одном действии у меня есть неопределенный ход, ожидающий, пока двигатель TTS не будет инициализирован. В Chrome он либо вращается навсегда, либо возвращает исключение NullPointerException. Является ли TTS недоступным в Chrome? Запуск ChromeOS на Chromebox.Android TextToSpeech в Chrome ARC
UtteranceProgressListener ttsListener = new UtteranceProgressListener() {
@Override
public void onStart(String s) {
Logg.d("speech started: " + s);
if (loadingDialog.isShowing()) {
loadingDialog.dismiss();
}
}
@Override
public void onDone(String s) {
Logg.d("speech done: " + s);
if (s.equals("1")) {
nextWord();
} else if (s.equals("2")) {
CheckLeave();
}
}
@Override
public void onError(String s) {
Logg.e("Text to Speech error speaking: " + s);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
showProgressDialog();
}
@Override
protected void onResume() {
if (tts==null) {
Logg.d("re-initializing TTS");
tts=new TextToSpeech(getApplicationContext(),
new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if(status != TextToSpeech.ERROR){
tts.setSpeechRate(.5f + .25f * (Integer)KVDB.GetValue("speechRate",2));
tts.setLanguage(Locale.US);
if (pauseTime != 0) {
//Paused. Say nothing.
} else if (currentWord == null) {
startTime = new ExcelDate();
nextWord();
} else if (currentWord.length() == 0) {
nextWord();
} else {
reSpeak();
}
}
}
});
tts.setOnUtteranceProgressListener(ttsListener);
}
super.onResume();
}
private void showProgressDialog() {
loadingDialog = new ProgressDialog(this);
loadingDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
loadingDialog.setTitle(getString(R.string.test_loading_msg));
loadingDialog.show();
}
Я скопировал этот вопрос в отчет об ошибке. Когда вы говорите, что нет провайдера услуг TTS по умолчанию, вы имеете в виду, что есть обходной путь для доступа к другому двигателю TTS или нет способа конвертировать текст в речь из ARC в это время? – Scott
Возможно, вы сможете включить другой движок TTS, включив его в свой пакет CRX (вы можете включить несколько APK). Из того, что я собрал в поисках кода Java, он должен работать, но это не то, что мы тестировали. При этом вам придется иметь дело с любыми условиями лицензирования для этого движка. –
Lloyd, я хотел бы попытаться реализовать обходное решение, подобное этому. Мне действительно нужно расширить доступ к моему приложению за пределами Android, если он будет жизнеспособным, и Chrome просто кажется идеальным вариантом для этого. Вы знаете, где я могу найти гидов или помочь в этом? Например, как я могу включить это? https://chrome.google.com/webstore/detail/multilingual-tts-engine/megclklaoidjbomplbhbdgbelkoebbdl – Scott