在我的Android應用程序中,我使用TTS和語音識別。儘管使用了所有可用的回調來了解它們所處的狀態,但我仍然遇到了無法處理的情況。示例:過程或方法的監視時間已過
1)TTS報告成功初始化,但未能說話(某些自定義TTS引擎的已知問題(未提及名稱))。
2)首次成功連接後,網絡訪問會丟失,這可能導致在網絡錯誤返回之前出現大量延遲。
還有其他的情況,我不會讓你生氣。
我已閱讀並消化時間監控線程如this和this讓我明白瞭如何準確判斷X & Y之間的時間,但它是一個監測方法是我後,我可以到當反應設定限制達到。
原諒我的僞代碼,但我認爲我的手,我不知道從哪裏開始對這個..
public boolean methodSuccess = false;
public void troublesomeMethod() {
if(// everything completed and I got a usual result) {
methodSuccess = true;
}
public boolean timeMonitor(int maxDuration) {
// use System.currentTimeMillis() here as start value
// monitor time elapsed here in loop
// monitor methodSuccess in loop
// return false if methodSuccess is set to true whilst in loop
// break if maxDuration reached and return true
}
再次,藉口上面的代碼,我根本想不出如何實現這個...
另外,如果我開始在上面:
boolean monitorThis = timeMonitor(5000); // let me know when 5 seconds have passed
startTroublesomeMethod(); // the one I want to monitor
那麼這將是毫無意義的,如果我不得不在布爾響應「等待」 startTroublesomeMethod前返回()實際上開始了!或troublesomeMethod開始之前,我開始監視它...
if(monitorThis) {
// react to lagging method by destroying TTS or Listener Object
} else {
// the troublesomeMethod behaved normally - do nothing
}
我在困惑希望我已經成功地表達我想要實現的。
我事先感謝您的幫助。
這看起來不錯,謝謝。我需要一段時間來了解如何保持對線程的引用或者實際上中斷它,但是我會回過頭來,並且在我的頭腦周圍標記出正確的答案(當然它也是有效的! )。乾杯 – brandall 2012-07-17 14:52:26
它工作完美。謝謝。標記爲正確。 – brandall 2012-07-28 21:51:11