項目記錄 | Unity-Android錄屏實踐

記錄原因

  1. Android端實現錄屏功能非常簡單.詳情可以參考Android實現錄屏直播(一)ScreenRecorder的簡單分析
  2. 這篇文章主要介紹瞭如何用Unity調用Android實現錄屏. 難點在於之前沒作用,不理解. 當實現了之後發現還挺簡單的.

普通Android程序實現錄屏

  • ActivityT1正常情況下爲我們的MainActivity。
  • ActivityT2爲錄屏申請的系統會自己去調用的Activity,不可見。那麼很快T2就自己結束掉了,finish後會調用T1的OnActivityResult
  • 一般情況下就是在這個回調函數中,我們獲得了MediaProjection,它在屏幕刷新時,我們將獲得屏幕是Surface,接着使用MediaCodec進行編碼寫文件。
    在這裏插入圖片描述
    而這樣在Unity實現的時候就出現了問題.
    原因在於我們的MainActivity繼承了Unity的Activity,這個父類實現了自己的OnActivityResult回調,進行了自己的一些處理,導致無法進入MainActivity中的回調。

Unity-Android實現錄屏

所以更新了一下實現方式:

  • Unity調用Android. 但是MainActivity不直接申請錄屏的權限.
  • 而是啓動一個新的Activity去申請錄屏啓動.然後通過T1的OnActivityResult獲得結果.
    在這裏插入圖片描述

其中的難點就是一開始不知道存在的這些問題。真正實現起來還算簡單。
關鍵的幾個點:
1)Unity-Android調用;
2)Android的MainActivity要使用Unity傳入的上下文;
3)ActivityT1這個子Activity配置問題,如去掉UI等。
通過以上的方法,成功實現了Unity-Android錄屏。

參考文檔

【1】 Using a child activity to wait for onActivityResult with Unity3D
【2】 unity-android-plugins-and-onactivityresult-callback

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章