在我的 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() 实际开始之前“等待”返回的布尔响应,那将毫无意义!还是在我开始监控之前就开始了麻烦的方法……
if(monitorThis) {
// react to lagging method by destroying TTS or Listener Object
} else {
// the troublesomeMethod behaved normally - do nothing
}
我希望在我的困惑中,我已经设法表达了我想要实现的目标。
我提前感谢您的帮助。