我有一个网站(www.myexamplewebsite.com(,看起来像这样简化:
<html>
<head>
</head>
<body>
<img src="img/speaker-icon.png" onclick="speakerFunction()">
<script>
function speakerFunction() {
var text = new SpeechSynthesisUtterance("This is a test.");
text.lang = 'en-US';
window.speechSynthesis.speak(text);
}
</script>
</body>
</html>
我还有一个简单的Android应用程序,它基本上是一个显示我的网站的web视图:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView myWebView = (WebView) findViewById(R.id.myWebView);
myWebView.loadUrl("www.myexamplewebsite.com");
myWebView.setWebViewClient(new MyWebViewClient());
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
}
// Use when the user clicks a link from a web page in the WebView
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals("www.myexamplewebsite.com")) {
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}
}
我的问题如下:
当我在我的台式电脑上使用普通浏览器(Chrome、Firefox(访问示例网站时,它的工作方式应该如何工作。如果我点击网站上的图像,我可以听到文字"这是一个测试"。
如果我在智能手机上使用适用于Android的Chrome-App访问示例网站,它也可以工作。但是,如果我使用 Firefox-App 访问网站,或者在我自己的应用程序中使用 Web 视图访问网站(见上文(,那么它就不起作用。
更新 1:我明确指定了语言,并使用人行横道框架进行了尝试,但这也没有解决问题。
SpeechSynthesisUtterance 不受 Android webview 支持https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance
虽然支持SpeechSynation,但由于SpeechSyn基于传递给它的SpeechSynthesisUtterance对象工作,因此它不会全部工作。
https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis