android屏幕錄制代碼
Ⅰ 安卓錄屏怎麼用安卓手機錄制屏幕
現在大部分的安卓手機廠商都在手機中加入錄制屏幕的功能,功能設置選項都大同小異,只需要進入屏幕錄制軟體即咐冊孝可開啟這項功能。接下來我就以安卓手機中用戶最多的小姿遲米手機為例,告訴大家如何錄制手機屏幕。
- 01
我們首先找到手機的屏幕錄制軟體,點擊進入。
- 02
進入軟體後,點擊右上角的設置圖標,可以設置錄制視頻的解析度、畫質、幀數和視頻方向等
- 03
設置完成之後,點擊右下方的錄制按鈕,准備開始錄制屏幕。
- 04
進入到需要錄制的界面,點擊右下方的「開始」按鈕,即可開始錄制。在錄制過程中點擊錄制按鈕表示暫停錄制,點擊兩下按鈕就可以完成錄衡稿制。
- 05
最後我們回到手機錄屏軟體里,就能看見將才錄制好的屏幕視頻。
Ⅱ android 4.4 怎麼實現屏幕錄制功能
你好!滿意請採納
Android系統如何錄制屏幕(錄製成mp4格式) 如果能將Android手機(或平板)的屏幕錄製成視頻文件,那是一件非常酷的事(iOS8已經提供了這一功能,能通過OSX直接在Mac上錄制iPad、iPhone的屏幕,windows沒試過,不知可不可以)。不過以前的方法都是通過截屏錄制的,效果極差。幸好Android4.4以上版本提供判知了這一功能。但無法在手機上直接啟動,需鏈鎮要通過adb使用命令行啟動。
大家可以進入shell。或乾脆直接用adbshell執行命掘喚消令。該命令是screenrecord,可以輸入screenrecord --help,看看幫助,如下所示。
Usage: screenrecord [options]
Android screenrecord v1.2. Records the device's display to a .mp4 file.
Options:
--size WIDTHxHEIGHT
Set the videosize, e.g. "1280x720". Defaultis the device's main
displayresolution (if supported), 1280x720 if not. For best results,
use a sizesupported by the AVC encoder.
--bit-rate RATE
Set thevideo bit rate, in bits per second. Value may be specified as
bits ormegabits, e.g. '4000000' is equivalent to '4M'. Default 4Mbps.
--bugreport
Addadditional information, such as a timestamp overlay, that is helpful
in videoscaptured to illustrate bugs.
--time-limit TIME
Set themaximum recording time, in seconds. Default / maximum is 180.
--verbose
Displayinteresting information on stdout.
--help
Show thismessage.
Recording continues until Ctrl-C is hit or the timelimit is reached.
從這些幫助信息可以了解到,screenrecord需要後面跟一個mp4文件名。最簡單的形式如下:
screenrecord /sdcard/game.mp4
但要注意,mp4要寫入的目錄必須是可寫的。
輸入完命令後,直接按回車,命令會被阻塞,默認什麼都不會輸出,這是正在錄制呢。操作手機的所有畫面都會被錄制下來。如果要輸出相應的信息,需要加--verbose命令行參數,加該命令行參數,整個錄制過程可能會輸出如下類似的信息。
Main display is 1080x1920 @60.00fps (orientation=0)
Configuring recorder for 1080x1920 video/avc at4.00Mbps
Content area is 1080x1920 at offset x=0 y=0
^CEncoder stopping; recorded 68 frames in 12 seconds
Stopping encoder and muxer
Executing: /system/bin/am broadcast -aandroid.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/test.mp4
Broadcasting: Intent {act=android.intent.action.MEDIA_SCANNER_SCAN_FILE dat=file:///sdcard/test.mp4 }
Broadcast completed: result=0
當然,可以跟很多選項,常用的就是--size(尺寸)、--bit-rate(比特率)和--time-limit(錄制最大時間)
尺寸默認是當前手機屏幕解析度、比特率是默認4Mbps、錄制時間默認是3分鍾(180秒)
screenrecord --time-limit 100 /sdcard/game.mp4
上面的命令最大可錄制100秒的視頻。如果想中途停止錄制,可按Ctrl C,終止錄制,game.mp4仍然會生成,但只會錄制從開始錄制到按Ctrl-C這段時間的視頻。
Ⅲ ADB錄制視頻 Android 視頻錄制命令 screenrecord
在Android 4.4(Kitkat - API level 19)上集成了一個比較好用的視頻(.mp4格式)錄制功能 – screenrecord 。
使用方法
1. 基本用法
$ adb shell screenrecord /sdcard/myscreenrecord.mp4
/sdcard/myscreenrecord.mp4 為視頻錄制文件路徑
錄制默認解析度,默認4Mbps,默認180s的視頻,保存到sdcard上名為myscreenrecord.mp4
2. 旋轉(參數:–rotate)
$ adb shell screenrecord --rotate /sdcard/myscreenrecord.mp4
旋轉90度
3. 指定解析度(參數:–size)
$adb shell screenrecord --size 112x112 /sdcard/myscreenrecord.mp4
解析度為112x112,建議不要指定解析度,使用默認解析度效果最佳;
注意,解析度不是完全可以隨意定製的,比如在我手機上錄制100x100的會提示錯誤:
The max width/height supported by codec is1920x1088
100x100is not supported by codec, suggest to set it as112x112
4. 指定比特率(參數:–bit-rate)
$adb shell screenrecord --bit -rate 8000000 /sdcard/myscreenrecord.mp4
設置比特率為8Mbps,比特率越大,文件越大,畫面越清晰;
5. 限制錄制時間 (參數: –time-limit)
$adb shell screenrecord --time -limit 10 /sdcard/myscreenrecord.mp4
限制視頻錄制時間為10s,如果不限制,默認180s
6. 導出視頻
$adb pull /sdcard/myscreenrecord.mp4
7. 注意
請關注視頻文件生成大小,根據自身情況而定;
暫不支持聲音;
咱時不支持模擬器錄制( 模擬器錄制看這里 ),出現如下提示:Unable to get output buffers (err=-38)
Encoder failed (err=-38),可認為是此原因;
8. 命令查看
adb shell screenrecord --help
Usage: screenrecord [options]
Records the device's display to a .mp4 file.
Options:
--size WIDTHxHEIGHT
Set the video size, e.g."1280x720". Default is the device's main
display resolution (if supported), 1280x720if not. For best
results,use a size supported by the AVC encoder.
--bit -rate RATE
Set the video bit rate, in megabits per second. Default4Mbps.
--time -limit TIME
Set the maximum recording time, in seconds. Default / maximum is180.
--rotate
Rotate the output90 degrees.
--verbose
Display interesting information on stdout.
--help
Showthis message.
Recording continues until Ctrl-C is hit or the time limit is reached.
Ⅳ Android錄屏命令screenrecord命令的使用
adb shell screenrecord --time-limit 20 /sdcard/春悄test.mp4
--time-limit 設置時間長度,默認180秒
Ctrl+C 結束錄屏
通過扒畝渣耐旦screenrecod --help幫助命令查看提示選項:
Ⅳ Android實現錄屏MediaProjection以及相關異常解決
需要實現一個手機的錄屏功能,於是從網上找了些相關資料和源碼,發現跑不起來,於是開始bug,發現坑還是很多的,這里記錄一下實現過程和一些些遇到的異常以及一個我調整完可以跑的Demo。
首先在AndroidManifest中靜態配置許可權:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
然後在Activity中動態申請
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, STORAGE_REQUEST_CODE);
}
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.RECORD_AUDIO)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[] {Manifest.permission.RECORD_AUDIO}, AUDIO_REQUEST_CODE);
}
因為項目中需要用到一個自定義的Application,所以要需要配置一個全局的Application,同樣在AndroidManiest中在application添加自定義的類名,如果在裡面啟動服務了也要一並配置。
<application
android:name=".RecordApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</application>
然後可以使用封裝好的實現其錄屏功能的service,這個封裝類是網上找的,看很多人在用,我解決了一些異常,並根據自己需求修改了一下。
其中主要異常有:
1.mediaRecorder報空指針,解決方案,在聲明的時候聲明為靜態
private static MediaRecorder mediaRecorder;
2.mediaRecorder.start()方法異常,在每次調用stop時要先調用
mediaRecorder.stop();
mediaRecorder.release();
兩個方法,並將
mediaRecorder = null。
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC)異常,這里是設置音頻源,可嘗試將參數改為
MediaRecorder.AudioSource.DEFAULT
4.stop方法異常,如果是running狀態不正常,可能是其狀態丟失,需要將聲明的running也改為靜態的
0.增加需求,在生成視頻時大部分人都會根據mediaRecorder.setVideoSize(width, height);方法來定死視頻大小,導致一些手機會解析不了,或者是視頻比屏幕小,這里提供一種根據屏幕大小動態設置視頻大小的方法。
這里就要用到我們之前定義的全局的Application,然後調用getInstance()獲取其實例,
然後通過
DisplayMetrics dm = RecordApplication.getInstance().getResources().getDisplayMetrics();
private int width = dm.widthPixels;
private int height = dm.heightPixels;
private int dpi = dm.densityDpi;
來獲取屏幕的長、寬和dpi的值,這里不用WindowsManager方法是因為我是在非Activity去獲取屏幕長寬的,所以用了getDisplayMetrics();
這樣這個功能基本就是實現了。
Demo地址: https://github.com/han103070/Screencap
Ⅵ 如何錄制Android屏幕內容
首先,下載adb工具到電腦本地並解壓縮到某個盤符的根目錄(本叢察腔文以G盤為例)。接下來,請打開手機的USB調試模式(在開發者選項中,如果設置中沒有找到,請進入系統版本信息界面狂點版本號即可進入開發者模式),通過USB線連接電腦,當屏幕出現「允許USB調試嗎」的提示時選擇是。
重新回到電腦滲衫端,同時按下「Win+R」鍵輸入「cmd」進入命令提示符界面,依次輸入「G:」(進入保存有adb工具的盤符),回車;「cd adb」(進入cdb文件夾),回車;「adb devices」(連接手機),回車;「adb shell screenrecord /sdcard/movie.mp4」(開始錄制,注意screenrecord與/間有空格,movie為文件名),回車。此時,你就可以對手機進行操作了,而屏幕所顯示的所有內容都將會被記錄成視頻。當你想結束錄制時,只需在電腦上按「ctrl+c」鍵即可沒睜,視頻文件會保存在手機的根目錄下。
Ⅶ 如何錄制Android屏幕內容
谷歌從Android 4.4開始,就加入了對屏幕進行錄制的功能,只是當時錄屏僅是面向開發者的試驗功能,所以實用性不算很高。步入Android 5.0後,新版系統正式開放了API android.media.projection介面,這意味著無需ROOT,我們即可實現對手機屏幕進行錄制操作了。因此,本文內容僅限Android 5.0或更高版本的手機。
http://jingyan..com/article/4e5b3e19385ae891901e24be.html
圖文教程,請參考,按步驟進行操作
Ⅷ Android 5.0+ 屏幕錄制實現
Android 從 4.0 開始就提供了手機錄屏方法,但是需要 root 許可權,比較麻煩不容易實現。但是從 5.0 開始,系統提供給了 app 錄制屏幕的一系列方法,不需要 root 許可權,只需要用戶授權即可錄屏,相對來說較為簡單。本文是在參考了網路上其他錄屏資料後完成的, 感謝 。以下將介紹開發錄屏功能的一系列步驟以及實現過程中所遇到的一些需要注意的事項。
因為錄制用到麥克風,所以需要加上 AUDIO 許可權,
如果開發的 app targetApi 在 6.0 以上時,還需要動態獲取許可權。
這里先介紹 MediaProjectionManager , MediaProjectionManager 是系統提供的一種服務,當我們拿到這個服務對象,可以創建一個 Intent ,通過這個 Intent 可以啟動一個彈框樣式的 Activity,如果用戶授權了,那我們便可以繼續下一步屏幕錄制。需要說明的是,Intent 是去啟動另一個 Activity 的,有極少極少的機型是沒有對應的授權Activity 的,所以這里需要多加判斷,防止應用奔潰。
即使用戶授權了,同意錄制操作,仍然需要捕獲異常,因為有可能會出現這樣一種情況,就是用戶在同意錄屏的時候系統也正在錄屏,錄屏操作沖突了。
這一步是整個錄屏操作最為關鍵的一步!我們初始化了 MediaRecorder,設置了是否錄上聲音、錄屏文件格式、錄屏文件路徑、音視頻的編碼器、比特率、視頻幀率等
然後將在步驟 3 中的 resultCode 以及 data 作為必要的參數通過 MediaProjectionManager 創建 VirtualDisplay。VirtualDisplay 可以理解為虛擬的呈現器,它可以捕獲屏幕上的內容,並將其捕獲的內容渲染到 Surface 上(Surace 由 MediaRecorder 提供,通過 getSurface() 方法得到),MediaRecorder 再進一步將其封裝處理為 Mp4 文件。
經過以上步驟 prepare 之後,當再次調用 MediaRecorder.start() 就可以開始錄屏了,這里同意也需要注意的時,調用 start() 方法開始錄屏之後,不能立即調用 stop()方法停止錄屏,否則會奔潰。測試在測試錄屏功能時立馬停止錄屏,應用奔潰,一直找不到原因。直到看到了源碼( API 26 )里的注釋
所以為了反正奔潰,在 stop 的時候捕獲異常,並且置空 MediaRecorder,下次錄屏的時候再重新生成 MediaRecorder。
由於知識水平有限,難免有錯誤遺漏,歡迎指正!項目地址為 屏幕錄制
Ⅸ 安卓屏幕錄制
怎麼錄制自己手機屏幕上的東西
步驟如下:
1、在手機應用商店搜索「屏幕錄像」並下載。
2、下載完成成功安裝之後,我們進入到手機的系統與安全」->;「授權管理」,因為該軟體需要獲得許可權,所以我們在root許可權中找到該軟體然後授權。
3、授權成功後,打開該軟體,點擊箭頭所示的圖標即可開始錄制手機屏幕。
4、錄制完成之後,我們可以直接在該軟體的錄制視頻列表中查看視頻,也可以直接在手機相冊的圖庫中查看或者在視頻播放軟體的列表中查看。
可以在設置中調整每秒幀數,如果想讓錄制的視頻更加流暢,那麼將幀數設置高一點即可,這里建議設置為40。
目前最好用的安卓手機屏幕錄像是什麼軟體?
現在用的人最多的是拍大師了
我現在用的也是這個
相對來說這個可以適配的手機機型比較多
而且界面也挺美的,比其他的要好很多
樓主要用的話可以在應用寶里找到這個軟體
下載的時候盡量用客戶端軟體來下載
可以和手機有比較高的兼容性,因為要是不適配的話
就有可能會出現拍的時候不流暢,卡屏這些現象的
還望可以對你有幫助哦
手機怎麼把屏幕動態錄製成視頻?
以安卓手機為例:一、系統內置1、錘子 Smartisan OS 點擊桌面上的錄屏圖標或者在下拉菜單中打開,頂部會彈出一個狀態欄。
打開設置按鈕,裡面可以選擇錄制聲音的模式,系統聲音就是只錄制內部產生的聲音,比如視頻或者游戲的音樂,下面也有提示。錄制麥克風聲音,會把系統聲音和麥克風一同錄下,這樣就可以方便在錄制游戲的時候實時加入解說詞,即便是帶了耳機也是可以的。
解析度有1080P和720P兩個選項。中間一個圖標是前置鏡頭的選項,可以在錄制的時候一並把自己的畫面錄進去,也是針對游戲解說使用的,並且在錄制過程中還可以隨時關閉或打開。
碼率和格式都不能設置,默認的是動態碼率,一般都在 20 M左右,這個是挺高的,我們一般網路上傳分享,4M這樣就足夠了,格式是MP4,幀率60fps。缺少了設置選項,讓操作變得簡單,但難免讓人感覺有些不夠人性化。
還有一個值得一提的是,錄制完成之後還可以單獨截取其中一部分生成 GIF ,這個小功能也很贊。缺點就是,錄制的時候狀態欄會一直顯示,而且無法下拉呼出通知欄,由於狀態欄區域比較大,所以也會遮擋一部分畫面。
但是好在功能比較豐富,軟體層面解決這兩個缺點也不是什麼難事兒,所以期待下次更新的時候能有改進。2、小米 MIUI 小米的MIUI目前只有開發版增加了屏幕錄制的功能,穩定版還需要再等一等。
打開系統工具文件夾,滑到底就可以看到屏幕錄制的圖標了。在設置選項中可以自定義調整參數,基本的功能都有。
點擊錄制按鈕,會在屏幕上出現一個非常小的圖標,這個相比 *** artisan OS就好很多了。開始錄制以後,會自動半透明,不會遮擋畫面,也不會影響手機的其他功能。
相比 *** artisan OS的屏幕錄制還是有幾個地方稍差一點的,第一,幀率最高只能選擇 30fps,雖然夠用,但是幀率肯定是越高越好;第二,錄制完畢之後不能直接生成 GIF;第三,不能在錄制的時候打開前置鏡頭,沒有主播模式;第四,錄音只能分開選擇麥克風和揚聲器,揚聲器的意思就是系統內部產生的聲音。如果你需要在錄制的時候加入旁白解說,可以選擇麥克風模式,這個時候游戲的聲音通過揚聲器播放出來,然後再讓麥克風錄制進去,等於翻錄的意思,所以效果會差很多,而且如果你戴上耳機的話,麥克風是無法錄制游戲內部的聲音,這樣看的話,就不太適用於游戲解說的錄制了。
3、其它 二、第三方錄屏軟體 如果你現在用的不是前面介紹的系統也不用擔心,只要你是安卓5.0 以上的系統,就可以下載第三方的錄屏軟體來使用。通過對比後發現,錄屏能手和豌豆莢錄屏無論是從功能還是操作方式來說都比其他幾款更好一些。
有些錄屏軟體簡直就是流氓軟體,裡面廣告和彈窗特別多,比如小鹿錄屏,錄屏大師,等等不建議大家下載。
手機屏幕視頻怎麼錄制
方法/步驟
1、很多手機是都有自帶的屏幕錄制功能,但是也有很多是無法錄制的,對於手機中有屏幕錄制功能的來說,打開設置,即可找到屏幕錄制。
2、手機中沒有自帶屏幕錄制功能的可以藉助第三方工具迅捷錄屏大師,錄制之後是可以直接通過窗口直接分享給好友的,不需要再保存至相冊。
3、在手機中運行點擊打開,第一次安裝會出現許可權設置,全部點擊允許即可。
4、進入即是錄屏功能,打開懸浮窗,然後可以選擇一下畫質以及屏幕方向,打開「我的」,右上角的有設置符號,點擊進去也可以修改解析度(畫質)和屏幕方向;
5、這些都設置好之後,就可以點擊點擊開始屏幕錄制了,點擊懸浮窗中的開始即可。
要在安卓手機錄制屏幕,可以用這幾種方法
因為手機的更新速度太快,有的手機功能還不能在所有的手機上使用,比如安卓手機錄制屏幕,下面我就來告訴你兩種手機錄屏的方法,一是手機自帶的錄屏工具,二是其他工具迅捷錄屏大師。
方法一:手機自帶錄屏
下拉手機通知欄,如圖所示:
方法二:其他工具錄屏
1.在手機的應用商城,搜索「迅捷錄屏大師」,點擊並安裝;
2.打開軟體,開啟懸浮窗,這樣可以在後台錄制同時顯示錄制的時長;
3.選擇錄屏的清晰度,有標清、高清、超清三種清晰度可選,如果手機內存容量小,高清模式就可以了;
4.選擇屏幕的錄制方向,為了觀看的效果,橫屏錄制最好;
5.最後就可以開始錄屏了,點擊「開始屏幕錄制」,然後就可以錄屏了,錄制完成後在視頻庫里就能看到成果。
什麼軟體可以在手機屏幕上錄制視頻
拍大師,步驟如下:
1、手機網路一下拍大師,下載並安裝「拍大師」軟體。
2、下載完成後,在手機上找到並打開拍大師,在打開的頁面上點擊選擇「錄屏」按鈕。
3、然後進入新的界面,點擊圖中所示的這個紅色的點,開始錄像。
4、錄像開始,現在開始在手機上執行的每一步操作都會被錄像下來,點擊立即開始。
5、錄制完成,即可看到已經完成的視頻,這樣就實現了錄制手機屏幕視頻的操作了。
屏幕視頻怎麼在手機上錄制
方法/步驟
1、首先在手機的設置中看是否自帶錄屏功能,如果有屏幕錄制功能,可以直接通過手機自帶的錄屏功能進行錄制,如果沒有可以藉助其他工具迅捷錄屏大師進行錄制。
2、首先在手機上使用第三方工具,之後在手機設置里找到許可權管理,允許該工具顯示懸浮窗。如果你的手機默認是允許打開懸浮窗的話,這一步可以省略的。
3、之後我們打開手機上的工具,在錄制主頁顯示橫屏、豎屏兩種不同的錄制模式,一般來說橫屏是用來錄制全屏游戲的,而豎屏主要用於展示手機軟體操作,顯而易見我們應當設置橫屏錄制。
4、然後就是設置視頻畫質,建議選擇高清和超清畫質錄制,視頻錄制的比較清楚的話,看起來也是比較賞心悅目的。
5、之後我們在右上角開啟錄屏懸浮窗並返回手機需要錄制界面。
6、然後我們點擊屏幕上的懸浮窗,將它舒展開之後,我們點擊開始即可錄制游戲視頻了,當游戲對局結束之後,即可點擊停止錄制,完成游戲視頻的錄制。
7、之後點擊底部導航欄上面的視頻庫,便能找到我們錄制好的游戲視頻。
8、如果想要分享錄制完成的游戲視頻,可以點擊右邊的「+」號,然後點擊分享進行分享。
什麼軟體可以手機屏幕錄像
三星近期上市的S7、S8支持內置錄屏功能,錄屏方法:
1.雙指下拉通知欄-點擊「截取屏幕」字樣-選擇錄制屏幕-點擊完成。
2.打開要錄制的界面-雙指下拉通知欄-點擊錄制屏幕「圖標」即開始錄屏。
3.點擊界面上圓圈時間圖標即可結束錄屏。
"安卓系統手機下載軟體方法有很多,為您提供以下幾種方式,請您參考:
1.通過手機中「三星應用商店」或「Galaxy特色訂制」搜索需要的軟體並下載安裝。
2.通過手機瀏覽器搜索需要的軟體下載安裝(若是自帶的瀏覽器,下載的安裝包保存在我的文件-Download文件夾中)。
3.通過第三方助手類軟體下載安裝需要的程序。
4.通過電腦下載APK格式的安裝包,然後傳輸到手機中安裝。
提醒注意:請甄別網站的安全性,以免上當受騙。"
Ⅹ Android截屏、錄屏工具
有時候會用到顏色拾取器這樣的東西來查看屏幕上的顏色值,一直是用Pixolor這個軟體來看顏色的;很方便,點哪裡顯示哪裡,也沒有延遲,以為是什麼黑科技;我注意到一個細節,如果只是切換屏幕,顏色拾取器不會更新,只有移動拾取器才更新選中;可以確定是截屏來實現的了,那就簡單了,截屏獲取像素點的顏色值就好了
網上看了一下,截屏大概分為保存View為圖像和調用錄屏服務兩種辦法,錄屏是比較好的辦法,可以在APP外截屏,所以簡單的封裝了一下
Step 1. Add the JitPack repository to your build file
Step 2. Add the dependency
主要分為兩步,第一步是開啟錄屏;第二步就可以直接獲取截屏,返回Bitmap
截圖的過程錄屏是開啟的,錄屏開啟就可以進行截屏,操作完需要關閉錄屏
截屏過程很快,效果很好
如果是APP外截屏則開啟懸浮窗服務,可以通過操作懸浮窗進行截屏
參考文章: Android 截屏方式整理 、 Android錄屏(5.0+)
1.初始化一個 MediaProjectionManager
2.創建並啟動 Intent
3.在 onActivityResult 中拿到MediaProjection
4.設置VirtualDisplay將圖像和展示的View關聯起來。一般來說我們會將圖像展示到SurfaceView,這里為了為了便於拿到截圖,我們使用ImageReader,他內置有SurfaceView。
5.通過ImageReader拿到截圖
6.注意截屏之後要及時關閉VirtualDisplay ,因為VirtualDisplay 是十分消耗內存和電量的。
錄屏和截屏差不多,只是截屏的時候只是設置了一個ImageReader去獲取圖像數據,而錄屏是設置一個 SurfaceView 去接收內容,獲取視頻流,然後通過 MediaCodec 來實現視頻的硬編碼,然後保存為視頻文件
初始化錄屏的大小和碼率
開始錄屏,設置輸出文件
停止錄屏
參考文章: Android視頻錄制--屏幕錄制
1.在 AndroidManifest 中添加許可權,Android 6.0 加入的動態許可權申請,如果應用的 targetSdkVersion 是 23,申請敏感許可權還需要動態申請
中間操作和截屏一樣,就是准備開啟錄屏
5.創建虛擬屏幕,這一步就是通過 MediaProject 錄制屏幕的關鍵所在, VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR 參數是指創建屏幕鏡像,所以我們實際錄制內容的是屏幕鏡像,但內容和實際屏幕是一樣的,並且這里我們把 VirtualDisplay 的渲染目標 Surface 設置為 MediaRecorder 的 getSurface ,後面我就可以通過 MediaRecorder 將屏幕內容錄制下來,並且存成 video 文件
6.錄制屏幕數據,這里利用 MediaRecord 將屏幕內容保存下來