2012-02-28 15 views
5

TextToSpeech.setEngineByPackageName() बनाने के लिए this answer करने के लिए धन्यवाद काम करते हैं, मैं अब "विपरीत" समस्या हो रही प्रबंध करने के बाद नहीं है:TextToSpeech.setEngineByPackageName() सफलता देता है तब भी जब पैकेज उपलब्ध

tts.setEngineByPackageName("com.ivona.tts.voicebeta.eng.usa.kendra"); हमेशा TextToSpeech देता है। SUCCESS, भले ही वह पैकेज डिवाइस में बिल्कुल इंस्टॉल न हो।

चूंकि पैकेज डिवाइस पर उपलब्ध नहीं है, इसलिए टीटीएस एंड्रॉइड के डिफ़ॉल्ट pico के साथ बात करने की उम्मीद करता है, लेकिन मुझे समझ में नहीं आता कि setEngineByPackageName() सफलता क्यों देता है।

यह कैसे हो सकता है?

उत्तर

4

सब के उपयोग के लिए, मैं एक अलग (लेकिन संबंधित) के सवाल पर @Nikolay Elenkov द्वारा प्रदान की उत्तर पोस्ट कर रहा हूँ:()

कॉलिंग setEngineByPackageName जब पैकेज मौजूद नहीं है एक अच्छा विचार नहीं है। इसके बजाय, जाँच अगर यह स्थापित किया गया है और अगर यह स्थापित नहीं कर रहा है इसका इस्तेमाल करने की कोशिश मत करो:

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

यह कैसे किया जाता का एक अच्छा उदाहरण में देखा जा सकता

संबंधित मुद्दे