999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Android環境的屏幕錄制技術

2019-06-20 10:31:23張孟琦
電子技術與軟件工程 2019年5期

張孟琦

摘要??? 本文旨在為了方便各層級用戶群的使用,通過對手機安卓平臺下的屏幕錄制技術進行探究,對其中權限、安卓版本、創建虛擬屏幕等核心技術進行探究。

【關鍵詞】軟件開發 安卓 屏幕錄制

在移動互聯網的時代,手機、平板電腦、智能穿戴設備、定位導航等移動互聯客戶端的使用早已與人們日常生活建立了千絲萬縷的聯系。在當今的信息技術潮流中,PC端的操作系統中Windows、Linux、OSX占著絕對市場份額;而在移動端,則是以Android和iOS占著絕對龐大的用戶量。IOS系統是蘋果公司的核心技術,而谷歌公司的安卓系統,則是被全世界大多數的移動互聯網公司所使用,例如中國的華為和小米、韓國的三星、日本的索尼和夏普等。在如此之高的受歡迎程度之下,安卓系統迎來了Android9.0版本,這是一個更為人性化和智能化的系統環境。但是其用戶群不局限于年輕人,當老年用戶使用遇到問題而身邊沒有對象幫助他們時,一個屏幕錄制的手機應用就會發揮它獨特且實用的功能。本文旨在為了方便各層級用戶群的使用,通過對手機安卓平臺下的屏幕錄制技術進行探究,對其中權限、安卓版本、創建虛擬屏幕等核心技術進行探究。

1 屏幕錄制技術的概述

谷歌公司從Android4.4開始,在手機端添加了本地化的錄制功能,但當時的技術有限,需要獲取root權限才可以,谷歌的工程師在歷經一年的研發下,發布的Android5.0中正式引用MediaProjection,使用它可以在不用root的情況下錄制屏幕,但同時需要用戶對自動彈出的權限窗口進行操作,并且只有在用戶允許的情況下才可以,本文介紹的就是Android5.0中通過MediaProjection實現的屏幕錄制。

2 屏幕錄制技術的基本原理

在安卓5.0以及API21以上的版本中,谷歌公司的安卓環境均開放了視頻錄制和音頻錄制的接口,這樣的接口,也可以稱之為屏幕采集接口,即所謂的MediaProjection和MediaProjectionManager,需要用到的安卓四大組件僅有activity和service。

3 屏幕錄制技術的開發環境

軟件環境:Windows XP/Windows7/Windows10

硬件環境:E7500+4G內存+320G硬盤+百兆網卡+百兆局域網

開發工具:Android Studio 3.1.0

4 屏幕錄制軟件的模塊分析

根據軟件功能的需要,我們創建了三個Java類,其中MainActivity.java類主要完成了管理器模塊、權限申請模塊、連接模塊的設計。實現的功能主要有:點擊事件監聽、動態權限申請、解綁已綁定的服務、設計請求碼和結果碼、連接與取消連接等。RecordApplication.java類中主要實現的功能有:獲得上下文、啟動時綁定服務、創建記錄應用實例等。RecordService.java類中重寫了綁定、啟動、創建、銷毀四個方法。主要實現的功能有:設置錄制屏幕大小、開始記錄、結束錄制、創建虛擬屏幕、初始化記錄器、獲取存儲路徑等方法。如圖1功能模塊圖所示。

5 屏幕錄制技術的核心技術

5.1 屏幕錄制技術的權限申請

權限的設置,是通過對AndroidManifest.xml文件中添加用戶權限許可標簽,即標簽;實現屏幕錄制技術,有兩個核心思想,一是將當前屏幕發生的變化記錄下來,二是將用戶所發出的聲音記錄下來,并且兩者發生的時間也要一一對應,所以,我們這里僅需要獲得WRITE_EXTERNAL_STORAGE權限和RECORD_AUDIO權限,這兩個權限分別實現了,錄制完可以寫入手機內存以及將音頻通過手機的硬件設備錄制下來,擁有了這兩項權限即可完成后續所有的屏幕錄制方法。在Android6.0之后,谷歌公司加入了動態權限申請,在Android studio開發平臺中打開Gradle scripts目錄下的build.gradle(module:app)如果屬性targetSdkVersion目標SDK的版本是23,申請敏感權限還需要動態申請,即通過代碼的方式,在主activity.class文件中使用判斷語句,如果沒有獲得權限,則通過java代碼實現動態的權限申請。

5.2 MediaProjectionManager的使用

MediaProjectionManager從翻譯上來看,是媒體工程管理器的意思,實際上MediaProjectionManager也是系統服務的一種,它的實例必須是私有且用戶不可見的,MediaProjectionManager出現在主activity.class文件中,通過getSystemService方法來獲取實例,與媒體工程Service建立聯系。MediaProjectionManager在這項應用里起著管理器的作用,在對返回值結果分析的方法中,將結果碼和數據傳遞給MediaProjection的實例,使得記錄服務可以順利地進行。

5.3 MediaProjection的使用

MediaProjection從翻譯上來看,是媒

體工程的意思,可以看出它在整個屏幕錄制應用程序中起著核心作用,同樣它的實例也必須是私有且用戶不可見的。在本項目的service中通過setMediaProject方法將最初的project賦值給mediaProjection。在主活動的onActivityResult方法中,判斷如果請求碼與記錄請求碼相等或結果請求碼等于OK,這時MediaProjection的實例將正式獲得結果碼和數據。MediaProjectionManager和MediaProjection均出現在主activity中一起完成了事件的活動結果的響應分析。

5.4 發起屏幕捕捉請求

對手機界面變化的錄制,其直觀的感受就在于對屏幕的變化進行捕捉,這里就需要用到相應的Intent,屏幕捕捉本身就是一個意圖,在相應的API中就有createIntentCaptureIntent方法,通過MediaProjectionManager的實例初始化一個屏幕捕捉意圖(captureIntent),并將其作為開始活動的請求碼。這個Intent的定義是需要判斷的,如果當前的recordService不在運行,那么才去選擇創建這個Intent;如果recordService正在運行,那么我們此時正處于錄制過程中,在判斷語句里需要勒令其停止,并顯示具有開始錄制功能的按鈕,使得用戶可以進行重新錄制的操作。

5.5 創建虛擬屏幕

創建虛擬屏幕是通過MediaProject進行屏幕錄制的關鍵所在,虛擬屏幕的創建方法出現在相應的service中,且該方法只能在該service中進行調用,該方法的參數VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR是指創建屏幕鏡像,所以我們實際錄制內容的是屏幕鏡像而不是真實的屏幕,這也就是為什么進行屏幕錄制時,屏幕的顯示會發生失真等細微的變化,但錄制的內容和實際屏幕是一樣的,并且這里我們把VirtualDisplay的渲染目標Surface設置為MediaRecorder的getSurface,后面我就可以通過MediaRecorder將屏幕內容錄制下來,并且存成視頻文件。

5.6 錄制屏幕數據

這里利用MediaRecord將屏幕內容保存下來,當然也可以利用其它方式保存屏幕內容,例如:ImageReader,但我們這個項目使用的是MediaRecord,實現一次屏幕錄制主要有三步,初始化錄制器、創建虛擬屏幕、錄制器啟動,我們定義了initRecord方法,里面創建了一個File對象并指定路徑,之后使用mediaRecord對象依次調用設置音頻資源方法,設置視頻資源,設置輸出文件,設置視頻尺寸、設置音頻編碼、設置視頻編碼、設置幀速率方法,從而實現了錄制功能。

6 屏幕錄制軟件的UI設計

每一款軟件的UI無疑是最吸引用戶使用興趣的部分之一,由于屏幕錄制軟件的設計以精簡為原則,所以采用了主題資源:@style/Theme.AppCompat.Light.Dialog,這個主題相當于是一個對話框,軟件中只包含Button控件,因此不必顯示出占滿整個手機屏幕的界面。

7 結束語

信息時代的浪潮從以pc機為主導的互聯網,發展到今天的以智能手機為主導的移動互聯網時代,每一代操作系統的革新都會為軟件開發帶來便利性,Google公司的Android平臺為移動互聯網的軟件開發帶來了福音,每一代API都會打開新的接口,譬如我們的屏幕錄制技術,從最開始通過對AndroidManifest.xml文件中添加用戶權限許可標簽,發展到可以使用java代碼添加權限,我相信,隨著安卓API的發展,未來的某一天,屏幕錄制可能就會簡化為一個簡單的方法,直接導入包,在類中使用該方法即可。當然,這一切的夢想的實現,都是每一代軟件人奮斗出來的。

參考文獻

[1]孫愷.屏幕錄制軟件在計算機教學中的使用[J].科技與創新,2018(15):153-154.

[2]倪曉軍,鄭龍.基于MirrorDriver的自適應屏幕錄制算法[J].計算機工程,2011(11).

[3]張旭輝.基于安卓系統的APP開發技術探析[J].電子制作,2016(14):34.

[4]張海藩,呂云翔.軟件工程[M].人民郵電出版社,2013.

[5]李文琴,李翠霞.Android開發與實踐[M].人民郵電出版社,2012.

主站蜘蛛池模板: 亚洲AⅤ无码日韩AV无码网站| 国产a v无码专区亚洲av| 色成人亚洲| 国产亚洲精久久久久久久91| 亚洲欧美日韩成人在线| 中文字幕免费在线视频| 国产高清无码第一十页在线观看| 日韩A∨精品日韩精品无码| 久久国产亚洲欧美日韩精品| 亚洲区视频在线观看| 亚洲精品不卡午夜精品| 欧美精品成人一区二区在线观看| 亚洲人妖在线| 精品撒尿视频一区二区三区| 99re这里只有国产中文精品国产精品| 亚洲大尺码专区影院| 国产精品免费电影| 国产91特黄特色A级毛片| 亚洲区第一页| 精品久久高清| www.亚洲色图.com| 欧美成人A视频| 亚洲精品少妇熟女| 欧美精品伊人久久| 亚洲中文字幕在线观看| 亚洲三级a| 麻豆精品国产自产在线| 热久久综合这里只有精品电影| 凹凸国产分类在线观看| 国产综合在线观看视频| 日韩午夜福利在线观看| 91成人在线免费观看| 2020久久国产综合精品swag| 成人午夜免费观看| 成人日韩视频| 欧美日韩国产系列在线观看| 国产精品尤物铁牛tv| 亚洲综合二区| 亚洲精品视频免费观看| 亚洲精品第五页| 5388国产亚洲欧美在线观看| 香蕉综合在线视频91| 欧美色综合网站| 国产毛片不卡| 奇米影视狠狠精品7777| 伊人色婷婷| 曰韩免费无码AV一区二区| 久久影院一区二区h| 亚洲性日韩精品一区二区| 亚洲综合狠狠| 伊人91在线| 亚洲精品国产日韩无码AV永久免费网| 草逼视频国产| 狠狠久久综合伊人不卡| 欧美精品在线免费| 54pao国产成人免费视频| 狂欢视频在线观看不卡| 欧美成人第一页| 国产免费黄| 亚洲高清国产拍精品26u| 日本午夜三级| 91无码视频在线观看| 日韩欧美中文字幕在线精品| 国产精品林美惠子在线观看| 最新亚洲av女人的天堂| 成人中文在线| 2021亚洲精品不卡a| 亚洲AV免费一区二区三区| 四虎影视永久在线精品| 欧美日韩v| 国产人人干| 亚洲女同一区二区| 999福利激情视频| 亚洲性日韩精品一区二区| 老色鬼久久亚洲AV综合| 亚洲制服中文字幕一区二区| 日韩高清欧美| 亚洲无码视频一区二区三区| 永久免费av网站可以直接看的| 亚洲国产91人成在线| 色色中文字幕| 日韩美毛片|