Android原生項目中涉及到錄屏相關的內(nèi)容(MediaProjectionManager),就嘗試寫了Forms版本的錄屏功能,系統(tǒng)要求Android 5.0+,iOS 9.0+。
iOS錄屏實現(xiàn)
iOS下實現(xiàn)錄屏比較簡單,通過RPScreenRecorder.SharedRecorder.StartRecording
方法調(diào)用iOS9.0中加入的錄屏功能。
首次調(diào)用錄屏會提示用戶是否允許錄屏,用戶允許后接下來的8分鐘都不會再提示。
調(diào)用RPScreenRecorder.SharedRecorder.StopRecording
停止錄屏,錄屏結(jié)束后可以通過RPPreviewViewController
來預覽錄制的視頻內(nèi)容,也可以調(diào)用RPScreenRecorder.SharedRecorder.DiscardRecording
丟棄錄制的視頻。
結(jié)束錄屏后的預覽界面:
預覽界面點擊Cancel或者Save都會調(diào)用iOS中RPPreviewViewControllerDelegate
委托 的兩個DidFinish
方法。點擊Cancel操作調(diào)用DidFinish(RPPreviewViewController previewController)
方法,保存和分享操作調(diào)用重載方法DidFinish(RPPreviewViewController previewController, Foundation.NSSet<Foundation.NSString> activityTypes)
。
Android錄屏
原生參考:http://www.truiton.com/2015/05/capture-record-android-screen-using-mediaprojection-apis/
初始化MediaProjectionManager
對象,調(diào)用MediaProjectionManager對象的CreateScreenCaptureIntent
方法創(chuàng)建意圖,通過StartActivityForResult
方法啟動系統(tǒng)提供的錄屏功能。
屏蔽麥克風聲音沒有實現(xiàn)
在Activity的OnActivityResult
方法中接收錄屏數(shù)據(jù)。
Android項目中通過繼承DialogFragment
自定義了兩個Dialog,PromptDialog
和PreviewDialog
,PromptDialog用來確認用戶的操作,是否放棄以錄制視頻。PreviewDialog模仿iOS端實現(xiàn)的視頻預覽,以達到相似的用戶體驗。
目前已知的問題是VideoView被Toolbar遮擋,布局無效。MediaController播放控制不能顯示。
項目地址:https://github.com/MyueX/ScreenRecorder
獲取最新咨詢請關注公眾號:XamarinTop或掃描如下二維碼