百度CarLife Android車機端黑屏問題
阿新 • • 發佈:2018-11-12
- 問題描述
手機端與車機端通過carlife連線後,車機端畫面與手機同步,在carlife軟體內點選退出後,在車機端再次點選APP,車機端黑屏,不能同步手機端畫面。
2.分析
在車機端點選退出時,呼叫了銷燬Activity的方法:
getActivity().finish();
只有carLife的後臺服務還沒銷燬,當再次啟動的時候這個Activity再次啟動,新建surfaceView,兩次日誌比較如下圖:
基本上沒什麼區別,但是第一次進有介面同步,第二次卻是黑屏。
後面發現與視訊頭幀sps和pps有關。
在ShowFragment裡獲取了視訊的頭幀sps和pps,在介面內退出時,銷燬了介面,也刪除了頭幀資訊,後面雖然有資料繼續傳輸到車機端,但是缺少了sps和pps就解不了碼,因此黑屏。
那為什麼手機USB線斷開後,再次連線就連得上呢?
因為手機USB斷開之後,車機端將重新開啟ADB,並反初始化各引數,而手機端則停止了視訊傳輸,當再一次連線時,會重發頭幀sps和pps,自然可以解碼成功。
3.解決
因為希望carlife介面內退出,carlife後臺服務繼續,所以不能像手機斷開USB後那樣處理,所以解決辦法是記下sps和pps資料,但是不能在Activity中記,因為退出時會被銷燬,這裡在AppManager這個管理Activity的類裡記,然後在顯示的ShowFragment裡需要視訊頭幀的時候取出,車機視訊就不在黑屏。