天天看點

Xamarin TTS Speak執行失敗,且一直傳回操作錯誤(TTS - BUG調試血淚史)Xamarin TTS Speak執行失敗,且一直傳回操作錯誤

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)
  • 從單例模式到直接執行個體化
  • 閱讀各種内容(從字母數字到拼音漢字)
  • 能想到和能做到的我已經盡力了。唯一沒做的就是通過軟體設定語音引擎了(未完待續待驗證)
求助大佬無數,解決無門,甚至官方文檔對于錯誤的解釋也隻不過什麼都沒說
Xamarin TTS Speak執行失敗,且一直傳回操作錯誤(TTS - BUG調試血淚史)Xamarin TTS Speak執行失敗,且一直傳回操作錯誤

最終實作辦法

鑒于之前BUG1解決過程中隻能使用Click事件調用成功,嘗試添加點選事件調用試試

添加的點選事件代碼塊:

prob = FindViewById<ProgressBar>(Resource.Id.progressBar_Init);
        prob.Click += Prob_Click;
        private void Prob_Click(object sender, EventArgs e)
        {
            Thread.Sleep();

            TTS.GetTTSInstance(this).Speak("記憶體中存儲");
        }
           

事實證明,這是有效的,并且,并且,“并且”當我再次注釋掉點選事件相關代碼,回退到之前代碼,也可以發聲了,一切恢複了正常,一切恢複了平靜,就像什麼事情沒發生一樣。

可能是某一種類似激發的機制,是Xamarin的坑,也可能是自己太年輕,技術不夠深入,忽略了什麼細節。如果,我是說“如果”這是Xamarin的BUG,一定要打開任督二脈才能好好程式設計,那麼和我一樣在Xamarin爬坑的大佬們得仔細了。

我打坑裡走過

2018年7月19日

Dawn

繼續閱讀