android通過MediaProjection獲取螢幕內容
在android5.0之後,android官方提供了擷取螢幕的新手段,那就是MediaProjection,它是一個准許應用擁有擷取螢幕內容以及記錄系統音訊的功能
其使用方法大致可以分為:
-
獲取MediaProjection的例項
private val mediaProjectionManager by lazy { fa.activity?.getSystemService(Context.MEDIA_PROJECTION_SERVICE) as? MediaProjectionManager }
(by lazy可以讓我們在需要使用到的時候再初始化)
-
通過MediaProjection的管理類 MediaProjectionManager的createVirtualDisplay建立
VirtualDisplay
virtualDisplay = mediaProjection?.createVirtualDisplay( "Name", width, height, displayMetrics.densityDpi, DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, surface, null, null )
-
將VirtualDisplay當做一個 虛擬的呈現器
-
用
VirtualDisplay
捕獲螢幕的內容 -
將捕捉到的內容渲染到surface上面
-
通過MediaRecord封裝成MP4檔案
mediaRecorder?.start()
(mediarecord開始記錄)
在最後結束並儲存完檔案後,要記得將mediarecord關閉
需要注意的是,mediarecord的關閉需要先stop再reset,否則在執行的時候就會報異常
而如果想要錄製環境音,在setaudiosource中可以設定
setAudioSource(MediaRecorder.AudioSource.MIC)
這個時候,其實想到一個需求,就是使用者可能回想著在錄製視訊的時候直接新增背景音樂,而直接新增音樂會使環境音和背景音樂重疊,那麼,一個較好的解決方案就是,剝離環境音再將背景音樂和沒有音訊的視訊檔案合併處理
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2739831/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- android螢幕適配三:通過畫素密度適配Android
- Android 通過名稱獲取資源IDAndroid
- 通過反射獲取私有內部類物件反射物件
- 獲取各種螢幕高度寬度(工作)
- Android三種方式擷取任意介面螢幕Android
- 短視訊平臺原始碼,Android獲取螢幕的高度和寬度原始碼Android
- Android -- 工具類(七):[ScreenUtil] (截圖,獲取螢幕寬高,顯示、隱藏虛擬鍵盤,調節螢幕亮度)Android
- Flutter 中獲取螢幕以及 Widget 的寬高Flutter
- android 螢幕適配一:通過自定義View的方式實現適配AndroidView
- android 螢幕適配Android
- android 喚醒螢幕Android
- uniapp獲取通知欄內容 監聽通知欄內容APP
- WIN32API:獲取螢幕的解析度Win32API
- jQuery - 獲取內容和屬性jQuery
- php獲取xml檔案內容PHPXML
- python tkinter如何獲取label內容?Python
- 如何通過一個SAPGUI螢幕反查這個螢幕對應的事務碼GUI
- 怎麼透過Python獲取檔案指定行的內容?Python
- C++--Win32--列表編輯--獲取列表內容--獲取列表行數--修改列表內容C++Win32
- FreeWheel報告:在多螢幕世界中發現內容
- 螢幕上內容究竟是怎樣畫出來的 —— Android View 工作原理詳解AndroidView
- Android螢幕適配方案Android
- Android 禁止螢幕旋轉Android
- android螢幕適配方法Android
- Android 螢幕自適應Android
- 通過用shellcode獲取shell
- 小程式獲取當前元素在螢幕中的位置
- JavaScript獲取瀏覽器、元素、螢幕的寬高尺寸JavaScript瀏覽器
- JS,Jquery獲取各種螢幕的寬度和高度JSjQuery
- C#獲取Windows10螢幕的縮放比例C#Windows
- PHP獲取HTTP body內容的方法PHPHTTP
- JavaScript 獲取td單元格內容JavaScript
- VB 獲取剪貼簿的內容
- jQuery捕獲-獲取DOM元素內容和屬性jQuery
- Flutter使用ScreenUtil獲取螢幕寬高初始化報錯Flutter
- Android 主流螢幕以及適配Android
- Android螢幕適配方案分析Android
- Grails通過sessionId獲取session物件AISession物件