0
A
回答
0
任何解決方案例如,您可以通過一個有效的Context
你的簡單類的構造函數中,然後你可以從簡單的類使用TTS:
public class MySimpleClass implements TextToSpeech.OnInitListener {
private TextToSpeech tts;
private boolean ttsOk;
// The constructor will create a TextToSpeech instance.
MySimpleClass(Context context) {
tts = new TextToSpeech(context, this);
}
@Override
// OnInitListener method to receive the TTS engine status
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
ttsOk = true;
}
else {
ttsOk = false;
}
}
// A method to speak something
@SuppressWarnings("deprecation") // Support older API levels too.
public void speak(String text, Boolean override) {
if (ttsOk) {
if (override) {
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
else {
tts.speak(text, TextToSpeech.QUEUE_ADD, null);
}
}
}
// Other code goes here...
}
And de待確切的應用程序設計Context
可能是Activity
或應用程序上下文。如果接收上下文引用的類的生命週期超過提供它的類的生命週期,則應該使用後者。例如,Activity
可能會被銷燬,而引用它的類仍然存在。這會影響垃圾回收和泄漏內存。
另一種選擇是保持所有TTS在Activity
代碼當使用「簡單類」代碼,其被示出,通過「簡單的類」到Activity
的引用,並具有在Activity
的公共方法來接收需要文字說出:
public class MySimpleClass {
private MyActivity myActivity;
// The constructor receives a reference to the Activity.
MySimpleClass(MyActivity activity) {
myActivity = activity;
}
// Other code goes here...
myActivity.speak("Hello, Stackoverflow!");
}
並再次路過時的參考一Activity
這樣一個應該考慮的類的生命週期和避免仍然可以存在於類參考後Activity
是銷燬。
另一種選擇是爲TTS代碼設置一個單獨的類。這將需要一個Context
作爲構造函數參數,並提供一種方法來說出任何給定的文本。 this answer to another question有一個簡單的例子。
相關問題
- 1. 無法從非活動類獲得文本到語音的工作
- 2. 語音到文本API(非移動)
- 3. 如果從非活動類開始活動,如果第一個活動是簡單的java類?
- 4. 需要一個簡單的語音文本軟件
- 5. Android文本語音切斷另一個文本到語音
- 6. 用於非常簡單的語音/語音識別的算法
- 7. 找一個簡單的語音引擎
- 8. 語音/語音到文本
- 9. 從一個非活動類別開始新的活動
- 10. 爲一個小語音子集實現語音到文本轉換的最快和最簡單的方法
- 11. Windows Phone 7.5文本到語音的簡單實現?
- 12. 在所有活動中啓動文本到語音?
- 13. 從服務發送一個簡單的消息到活動
- 14. 文本到語音(語音生成)和語音到文本(語音識別)API?
- 15. 如何在android中從非活動類移動到活動類?
- 16. 轉到上一個活動在非活動類
- 17. 開始一個活動並從一個非活動的descadent類捕獲結果
- 18. 從非活動類啓動Android活動
- 19. 將文本從一個活動移動到另一個
- 20. 如何在單擊TextView時激活文本到語音?
- 21. 用於「文本到語音」和「語音到文本」的C++ API
- 22. 如何從語音打開活動以文本輸出
- 23. 直接從音頻/轉錄語音到文本(語音識別)
- 24. 文本到語音
- 25. 文本到語音
- 26. 從AppWidgetProvider發送的文本到語音
- 27. 從編輯文本中獲取文本到另一個活動
- 28. Android:如何將對象從簡單的類傳遞到活動
- 29. Android文本到語音男性語音
- 30. 通用文本到語音語音
對於我的情況不是一個很好的解決方案與類的構造器 仍然我有一個解決方案,我不知道它是否會工作或不能我可以創建一個靜態方法,我將調用speechClass它擴展了Activity並從我的類中調用speechClass? – islamoc
當然,不用使用構造函數,你可以在你的類中有一個單獨的'setContext(Context ctx)'方法並以這種方式接收它。如果你的意思是讓你的類擴展Activity,並用'speechClass = new SpeechClass()'實例化它,那麼我會說它不起作用。上下文將是'null'。它必須是一個「真正的」活動「」,它實際上是由Android系統構建的,並顯示在用戶界面上。一個'Service'也可以訪問'Context',所以如果你想通過擴展一個類來獲得上下文,你可以有一個'SpeechClass'服務。也許過度殺傷... –