2012-02-28 1 views
5

利用できない場合でも、成功を返しますが)this answerのおかげで動作し、私は今、「反対」の問題が生じています:TextToSpeech.setEngineByPackageName()パッケージはTextToSpeech.setEngineByPackageName(作るために管理した後

tts.setEngineByPackageName("com.ivona.tts.voicebeta.eng.usa.kendra");は常にテキスト読み上げを返します。 SUCCESS、そのパッケージがデバイスにまったくインストールされていない場合でも。

パッケージはデバイスで利用できないので、TTSはAndroidのデフォルトのpicoと話しますが、これは期待していますが、なぜsetEngineByPackageName()がSUCCESSを返すのか分かりません。

どうすればいいですか?パッケージが存在しない場合にsetEngineByPackageName()を呼び出す

は良いアイデアではありません。すべての利益のために

答えて

4

は、私は別の(しかし関連)質問に@Nikolay Elenkovが提供する答えを投稿しています。それがインストールされているとは、それがをインストールしていない場合は、それを使用しようとしていない場合は代わりに、チェック:

http://code.google.com/p/wwwjdic/source/browse/branches/2.0/wwwjdic/src/org/nick/wwwjdic/TtsManager.java

boolean isPackageInstalled(String packageName) { 
    PackageManager pm = context.getPackageManager(); 
    try { 
    PackageInfo pi = pm.getPackageInfo(packageName, 0); 

    return pi != null; 
    } catch (NameNotFoundException e) { 
    return false; 
    } 
} 

これがどのように行われるかの良い例はで見ることができます

関連する問題