3

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);

追加する必要があるプラグインはありますか。私にお知らせください。どんな助けでも大歓迎です。

4

3 に答える 3

1

Cordovaでは、JavaScript からカスタムのネイティブ android コードを呼び出すことができます。また、共通のハードウェア要素 (メニュー ボタン、ネイティブ通知など) を公開するライブラリからプラグインを使用することもできます。Cordova は完全なアプリケーション環境を作成するため、Android アプリケーションの詳細について心配する必要はなく、すべてのアプリケーション ロジックを html5/javascript で構築できます。 Phonegapは、非常に優れたビルド ツールを提供する Cordova の実装です。開発マシンに Android ビルド ツールをセットアップする必要さえありません。HTML サイトをアップロードするだけで、Android アプリがビルドされます。:P

于 2014-10-05T05:55:12.960 に答える
0

addJavascriptInterfaceはい、 WebViewのメソッドを見てください。詳細については、こちらこちらをご覧ください

于 2014-10-05T06:34:04.190 に答える
0

Intel XDK: https://software.intel.com/en-us/html5/toolsを見て、 http://xdk-software.intel.com/からダウンロードしてください。以前の回答への返信で言及したコルドバ ビルド オプションを提供します: https://software.intel.com/en-us/html5/articles/using-the-cordova-for-android-ios-etc-build -オプション

ありがとう

于 2014-10-02T18:24:05.030 に答える