HTMLから渡されたテキストを話すコードがあります。以下のコードを使用して動作させることができました。
コードは次のとおりです。
tts = new TextToSpeech(this, this);
myWebView = (WebView) findViewById(R.id.webviewid);
//The html text is from the server.
myWebView.loadDataWithBaseURL(null,
"<html>" +
"<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">" +
"</head>" +
"<body>" +
"<input class=\"textBox\" id=\"pass\" type=\"text\" maxlength=\"30\" required/>" +
"<input type=\"button\" value=\"Say hello\" onClick=\"androidSpeak('Hello Android!')\" />" +
"<script type=\"text/javascript\">" +
" function androidSpeak(texttospeak) {" +
" Android.textToSpeak(texttospeak);" +
" }" +
"</script>" +
"</body>" +
"</html>", "text/html", "UTF-8", null);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.addJavascriptInterface(new WebAppInterface(this), "Android");
これが私のJavaスクリプトインターフェースです:
protected class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void textToSpeak(String texttospeak) {
Toast.makeText(mContext, texttospeak, Toast.LENGTH_SHORT).show();
speakOut(texttospeak);
}
}
private void speakOut(String text) {
tts.speak(text, TextToSpeech.QUEUE_ADD, null);
}
上記のコードは期待どおりに機能します。私の質問は、javascript を介して TTS またはその他の機能 (アラームや電話をかけるなど) を呼び出す方法です。つまり、javascript から tts.speak() メソッドを呼び出すことができます。または、別の方法で、Java Script Interface (上記のように) を作成する代わりに、javascript を介して Android TTS を呼び出したいと考えました。このようにして、追加するすべての機能についてユーザーに更新を提供する必要はありません。
例: 注意: 以下は例であり、私はこれが間違っていることを知っています。これは、私が必要とするものの概要を説明するためのものです。
//The html text is from the server.
myWebView.loadDataWithBaseURL(null,
"<html>" +
"<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">" +
"</head>" +
"<body>" +
"<input class=\"textBox\" id=\"pass\" type=\"text\" maxlength=\"30\" required/>" +
"<input type=\"button\" value=\"Say hello\" onClick=\"androidSpeak('Hello Android!')\" />" +
"<script type=\"text/javascript\">" +
" function androidSpeak(texttospeak) {" +
" tts = new TextToSpeech(this, this);" +
" tts.speak(text, TextToSpeech.QUEUE_ADD, null);" + <<< directly invoke the android's TTS.
" }" +
"</script>" +
"</body>" +
"</html>", "text/html", "UTF-8", null);
追加する必要があるプラグインはありますか。私にお知らせください。どんな助けでも大歓迎です。