Xamarin TTS Speak执行失败,且一直返回操作错误
最近用Xamarin做TTS开发,被一个BUG卡住项目进度:
ModelTest(只有两个类,测试TTS用),Monitor(现有项目,需要将TTS模块移植到该项目)
从ModelTest移植到Monitor无法进入TTS的oninit初始化函数,通过强制调用发现的确未初始化完成。为什么不执行初始化函数,如何解决?欢迎评论。
结论:目前问题解决了但原因仍未知,遇到同样问题的大佬可以参考下,希望可以帮到大家
调试开始时间:2018.7.16.17:30
调试完成时间:2018年7月19日01:25:16
调试耗时:一天半(累计TTS-BUG1(暂未分享)合计三天半)
##解决方案尝试:
- 各种多线程调用
- 各种打断点
- 各种清理
- 各种配置尝试
- 各种权限申请
- 各种函数调用(从OnCreate到OnResume)
- 从单例模式到直接实例化
- 阅读各种内容(从字母数字到拼音汉字)
- 能想到和能做到的我已经尽力了。唯一没做的就是通过软件设置语音引擎了(未完待续待验证)
求助大佬无数,解决无门,甚至官方文档对于错误的解释也只不过什么都没说
最终实现办法
鉴于之前BUG1解决过程中只能使用Click事件调用成功,尝试添加点击事件调用试试
添加的点击事件代码块:
prob = FindViewById<ProgressBar>(Resource.Id.progressBar_Init);
prob.Click += Prob_Click;
private void Prob_Click(object sender, EventArgs e)
{
Thread.Sleep(100);
TTS.GetTTSInstance(this).Speak("内存中存储");
}
事实证明,这是有效的,并且,并且,“并且”当我再次注释掉点击事件相关代码,回退到之前代码,也可以发声了,一切恢复了正常,一切恢复了平静,就像什么事情没发生一样。
可能是某一种类似激发的机制,是Xamarin的坑,也可能是自己太年轻,技术不够深入,忽略了什么细节。如果,我是说“如果”这是Xamarin的BUG,一定要打开任督二脉才能好好编程,那么和我一样在Xamarin爬坑的大佬们得仔细了。
我打坑里走过
2018年7月19日
Dawn