9

この質問はAndroid2.2のみを対象としています。

次のスクリーンショットは、インストールされている3つの異なるテキスト読み上げエンジンを示しています。

  1. PIco TTS(Froyo 2.2現在のAndroidのデフォルト)
  2. IVONAテキスト読み上げ本部
  3. SVOXクラシックTTS

このスクリーンショットでは、3つすべてがチェックされている(有効になっている)わけではないことがわかります。代わりに、IVONAはチェックされておらず、Pico(ハードコードされているため暗黙的に)とSVOX(チェックされている)のみが残ります。

ここに画像の説明を入力してください

特定のTTSエンジン(IVONAなど)がチェックされているかどうかをアプリケーションからプログラムで照会できるようにしたいと思います(もちろん、コーディング時にパッケージ名がわかっていると仮定します)。

Android 2.2では、 Picoがデフォルトとして選択され、SVOXがチェックされてgetDefaultEngine()いる状況では、実際には役に立ちません(つまり、 Picoがデフォルトである場合にSVOXがチェックされていることをどのように知ることができますか?)

Android 2.2でそれを達成するにはどうすればよいですか?

これは可能ですか?

PS Android 4.x(API> = 14)はgetEngines()を導入しました。これにより、この問題はICS +で解決されたと思われるかもしれませんが、詳しく調べると次のことがわかります。

  1. getEngines()は、インストールされているパッケージのみを一覧表示し、チェックされていない(有効な)パッケージは一覧表示しません。
  2. リストされた各パッケージに付属するEngineInfoは、名前、ラベル、アイコン、優先度、およびそれがシステムイメージの一部であるかどうかのみを提供します。つまり、Android2.2と同じ制限です。
4

1 に答える 1

0

AndroidTextToSpeechAPIガイドを参照してください

getEngines()インストールされているすべてのエンジンのリストと、それぞれに関する情報が表示されます。

getDefaultEngine()ユーザーがデフォルトとして選択したエンジンのパッケージ名を指定します。

各エンジンのパッケージ名(または事前に用意しているリスト)をデフォルトのエンジンのパッケージ名と比較すると、どちらが選択されているかを確認できます。

前者の関数はAPIレベル14からのみ使用できますが、2番目の関数はAPIレベル8から使用できることに注意してください。

于 2012-08-22T14:37:24.520 に答える