7

私のアプリケーションは視覚障害者が使用しているため、テキスト読み上げに大きく依存しています。アプリケーションは API を呼び出し、(android.speech.tts.TextToSpeech を使用して) いくつかの関連情報をユーザーに読み込みます。

テキスト読み上げの初期化に 10 秒以上かかる場合があり、これがアプリケーションの主要なボトルネックになっていることに気付いたことを除いて、すべてがうまく機能します。

この問題を軽減するためにコードを最適化する方法について、誰かアイデアがあるかどうか疑問に思っていました。

まず、私のアプリケーションは、TTS データをチェックするアクティビティを開始します。

    Intent checkIntent = new Intent();
    checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
    startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);

次に、このメソッドがアクティビティの結果とともに呼び出されます。結果に応じて、テキスト読み上げが初期化されるか (ほとんどの場合発生します)、テキスト読み上げがデバイスにインストールされます (非常にまれです)。

    private TextToSpeech mTts;

    @Override
    protected void onActivityResult(
            int requestCode, int resultCode, Intent data) {
        if (requestCode == MY_DATA_CHECK_CODE) {
            if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
                // success, create the TTS instance
                mTts = new TextToSpeech(this, this);
            } else {
                // missing data, install it
                Intent installIntent = new Intent();
                installIntent.setAction(
                        TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(installIntent);
            }
        }
    } 

最後に、これがすべて完了すると、アプリケーションは API を呼び出し、次のような行がいくつかあります。

    mTts.speak("<Useful output here>", TextToSpeech.QUEUE_FLUSH, null);   

お手伝いありがとう!

4

1 に答える 1

1

少し遅くなりましたが、デバイスで何が起こっているのかということです。プロセッサ時間を消費する優先度の高いその他のもの。目の不自由な人は、デバイスに多くのアプリを必要としないと思います。Auto Start アプリも検討してください。アプリを自動的に起動します。

于 2015-04-11T04:04:59.270 に答える