2012-08-22 125 views
8

這個問題是指在Android 只有2.2如何判斷是否檢查(啓用)特定的TTS引擎?

下面的截圖顯示安裝了3個不同的文本到語音引擎:

  1. 微微TTS(Android的默認的升級Froyo 2.2)
  2. IVONA文本到語音HQ
  3. SVOX經典TTS

在這個截圖中,你合作看到並不是所有的3都被檢查(啓用)。相反,IVONA沒有被檢查,只剩下Pico(暗示,因爲它是硬編碼的)和SVOX(檢查)。

enter image description here

我希望能夠以編程方式從我的應用程序查詢特定的TTS引擎(如IVONA)是否checked(假設我知道在編碼時的包名,當然)。

在Android中2.2我只有getDefaultEngine()不能在微微被選定爲默認和SVOX情況真正幫助檢查(換句話說,我怎麼知道SVOX檢驗是否微微是默認?)

如何實現,在安卓2.2

這是可能的嗎?

P.S.的Android 4.x版(API> = 14)推出getEngines()這可能導致你相信這個問題解決了ICS +,但仔細觀察發現是:

  1. getEngines()只列出安裝,不檢查(啓用)包。
  2. 附帶每個列出的包中的EngineInfo僅提供名稱,標籤,圖標,優先級和它是否是系統圖像的一部分。換句話說,與Android 2.2相同的限制。

回答

0

Android TextToSpeech API guide

getEngines()會給已安裝的所有引擎的列表,以及關於每個一些信息。

getDefaultEngine()會給任何一個引擎的用戶選擇默認包名。

比較每個引擎(或提前你有一個清單)使用默認引擎的包名的包名,你就可以看到它被選中。

注意,前者功能只能從API級別14,但第二個是從API級別8

+0

對不起,我忘了強調的是,我要尋找的是Android 2.2 ** **兼容的解決方案。正如您正確指出的那樣,'getEngines()'僅適用於API 14.'getDefaultEngine()'在選擇* Pico *作爲默認值並檢查* SVOX *的情況下無法真正起作用。如果* Pico *是默認值,我如何知道* SVOX *被選中? – an00b

+2

未來,請在評論中說你正在編輯一個問題 - 我的答案剛剛被降低,我猜這是因爲現在的問題說明了答案中的所有內容。 我看不出有什麼會在API文檔中告訴你有關API 8檢查過的引擎,所以我認爲這可能是不可能的。 – Hbcdev

+0

對不起。恕我直言,你應該刪除這個答案,因爲'getEngines()'和'getDefaultEngine()'都不能幫助判斷一個特定的TTS引擎是否被**檢查**。這個問題最好還是沒有答案,這樣人們就會知道**不可能告訴**特定的TTS引擎是否被**檢查**。爲您的評論+1。 – an00b

相關問題