一種截圖的方法及裝置的制造方法
【專利摘要】本發(fā)明實(shí)施例公開了一種截圖的方法及裝置,本發(fā)明實(shí)施例方法包括:接收遠(yuǎn)程終端發(fā)送的遠(yuǎn)程屏幕截圖指令,所述遠(yuǎn)程屏幕截圖指令為在一段時(shí)間內(nèi)持續(xù)進(jìn)行實(shí)時(shí)屏幕截圖的指令;執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,所述截圖邏輯為預(yù)先配置在所述終端的操作系統(tǒng)內(nèi),且與所述操作系統(tǒng)的版本對應(yīng)的邏輯;向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖。本發(fā)明實(shí)施例提高了截圖處理速度和效率。
【專利說明】
一種截圖的方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及截圖技術(shù)領(lǐng)域,特別涉及一種截圖的方法及裝置。
【背景技術(shù)】
[0002]截圖功能在軟件中使用非常廣泛,在使用移動(dòng)終端時(shí)經(jīng)常會使用截圖功能,通過截屏功能可以將當(dāng)前的屏幕畫面截取下來保存,也可以將截取的圖片內(nèi)容分享給他人。
[0003]目前,移動(dòng)終端內(nèi)一種主要的通過接收遠(yuǎn)程終端指令進(jìn)行截圖方式是通過調(diào)用終端中screen cap命令實(shí)現(xiàn)截圖,screen cap命令是安卓系統(tǒng)中提供的截圖工具,截圖速度較慢,對于屏幕實(shí)時(shí)顯示而傳輸視頻流的場景或者遠(yuǎn)程調(diào)試這樣的場景無法滿足。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例提供了一種截圖的方法及裝置,提高了截圖處理速度和效率。
[0005]本發(fā)明實(shí)施例中第一方面提供了一種截圖的方法,應(yīng)用于終端,包括:
[0006]接收遠(yuǎn)程終端發(fā)送的遠(yuǎn)程屏幕截圖指令,所述遠(yuǎn)程屏幕截圖指令為在一段時(shí)間內(nèi)持續(xù)進(jìn)行實(shí)時(shí)屏幕截圖的指令;
[0007]執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,所述截圖邏輯為預(yù)先配置在所述終端的操作系統(tǒng)內(nèi),且與所述操作系統(tǒng)的版本對應(yīng)的邏輯;
[0008]向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖。
[0009]本發(fā)明實(shí)施例中第二方面提供一種截圖裝置,應(yīng)用于終端,包括:
[0010]接收單元,用于接收遠(yuǎn)程終端發(fā)送的遠(yuǎn)程屏幕截圖指令,所述遠(yuǎn)程屏幕截圖指令為在一段時(shí)間內(nèi)持續(xù)進(jìn)行實(shí)時(shí)屏幕截圖的指令;
[0011]截圖單元,用于執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,所述截圖邏輯為預(yù)先配置在所述終端的操作系統(tǒng)內(nèi),且與所述操作系統(tǒng)的版本對應(yīng)的邏輯;
[0012]發(fā)送單元,用于向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖。
[0013]從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
[0014]本發(fā)明實(shí)施例中,通過接收的遠(yuǎn)程終端發(fā)送的遠(yuǎn)程屏幕截圖指令,執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖,由于截圖邏輯為預(yù)先配置在所述終端的操作系統(tǒng)內(nèi),且與所述操作系統(tǒng)的版本對應(yīng)的邏輯,提高了截圖處理速度和效率。
【附圖說明】
[0015]圖1是本發(fā)明實(shí)施例中截圖的方法的一個(gè)實(shí)施例示意圖;
[0016]圖2是本發(fā)明實(shí)施例中實(shí)現(xiàn)截圖的方法一個(gè)場景示意圖;
[0017]圖3是本發(fā)明實(shí)施例中實(shí)現(xiàn)截圖的方法另一個(gè)場景示意圖;
[0018]圖4是本發(fā)明實(shí)施例中實(shí)現(xiàn)截圖的方法一個(gè)架構(gòu)示意圖;
[0019]圖5是本發(fā)明實(shí)施例中執(zhí)行截圖邏輯進(jìn)行實(shí)時(shí)截圖的一個(gè)具體場景實(shí)施例示意圖;
[0020]圖6是本發(fā)明實(shí)施例中執(zhí)行截圖邏輯進(jìn)行實(shí)時(shí)截圖的另一個(gè)具體場景實(shí)施例示意圖;
[0021 ]圖7是本發(fā)明實(shí)施例中截圖裝置的一個(gè)實(shí)施例示意圖;
[0022]圖8是本發(fā)明實(shí)施例中截圖裝置所在終端的一個(gè)實(shí)施例示意圖。
【具體實(shí)施方式】
[0023]本發(fā)明實(shí)施例提供了一種截圖的方法及裝置,提高了截圖處理速度和效率。
[0024]為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
[0025]本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等(如果存在)是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的實(shí)施例能夠以除了在這里圖示或描述的內(nèi)容以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
[0026]下面首先介紹本發(fā)明實(shí)施例中截圖的方法的實(shí)施例。
[0027]本發(fā)明實(shí)施例中截圖的方法的執(zhí)行主體為截圖裝置,該截圖裝置具體可以集成在客戶端中,該客戶端可以裝載在終端中,該終端具體可以為智能手機(jī)、平板電腦等等。
[0028]本申請中具有下述本發(fā)明實(shí)施例所描述的具有截圖功能的手機(jī)可以是安卓系統(tǒng)的云手機(jī),通過針對不同的安卓操作系統(tǒng)設(shè)置不同的截圖流程,實(shí)現(xiàn)快速截圖,從而實(shí)現(xiàn)與其他遠(yuǎn)程終端在線視頻、遠(yuǎn)程測試等功能。安卓操作系統(tǒng)通常有Android 4.2以上的版本(包括Android 4.2版本)和Android 4.2以下的版本,在本發(fā)明實(shí)施例中,Android 4.2以上的版本稱為第一版本,Android 4.2以下的版本稱為第二版本。
[0029]請參閱圖1,本發(fā)明實(shí)施例中截圖的方法一個(gè)實(shí)施例包括:
[0030]101、接收遠(yuǎn)程終端發(fā)送的遠(yuǎn)程屏幕截圖指令,所述遠(yuǎn)程屏幕截圖指令為在一段時(shí)間內(nèi)持續(xù)進(jìn)行實(shí)時(shí)屏幕截圖的指令;
[0031]本發(fā)明實(shí)施例中,一種在線視頻使用場景如圖2所示:終端通過服務(wù)器(例如云服務(wù)器等)和遠(yuǎn)程終端交互數(shù)據(jù),終端內(nèi)的截圖裝置通過服務(wù)器接收遠(yuǎn)程終端發(fā)送的遠(yuǎn)程屏幕截圖指令,所述遠(yuǎn)程屏幕截圖指令為在一段時(shí)間內(nèi)持續(xù)進(jìn)行實(shí)時(shí)屏幕截圖的指令。
[0032]另一種遠(yuǎn)程測試使用場景如圖3所示:終端與一個(gè)接入終端連接(例如通過USB接口連接),該接入終端可以是個(gè)人電腦或者平板等具有通用接口(例如USB接口,Micro USB接口或者如Type-C接口等USB3.1接口)的終端,所述接入終端通過服務(wù)器(例如云服務(wù)器等)和遠(yuǎn)程終端交互數(shù)據(jù),進(jìn)而間接實(shí)現(xiàn)終端與遠(yuǎn)程終端的數(shù)據(jù)交互,此時(shí),所述遠(yuǎn)程截圖指令可以是所述遠(yuǎn)程終端通過服務(wù)器發(fā)送到所述接入終端,再通過所述接入終端發(fā)送的,例如如下具體場景:用戶通過連接服務(wù)器的一個(gè)遠(yuǎn)程終端(如電腦)的Web界面遠(yuǎn)程操作云端另一側(cè)的本終端(即本實(shí)施例中的截圖裝置所在的終端,其如手機(jī)、平板電腦可以安裝APP應(yīng)用的終端等),本終端用于供遠(yuǎn)程終端遠(yuǎn)程進(jìn)行軟件測試,例如,手機(jī)應(yīng)用(Applicat1n,APP)測試等,本終端可以通過USB連接到接入終端(如個(gè)人電腦等)上,并通過該接入終端與服務(wù)器建立連接,遠(yuǎn)程終端在web界面操作,通過服務(wù)器向接入終端發(fā)送遠(yuǎn)程截圖指令,再通過接入終端發(fā)送到本終端。
[0033]圖3所示的場景中一種更具體的場景即云真機(jī)技術(shù),具體即:所述終端上安裝調(diào)試橋(Android Debug Bridge,ADB)客戶端程序,所述接入終端上安裝有ADB服務(wù)端程序,接入終端和終端通過USB接口連接,接入終端通過云服務(wù)器與遠(yuǎn)程終端連接,此時(shí),所述遠(yuǎn)程屏幕截圖指令可以是:所述接入終端通過云服務(wù)器接收所述遠(yuǎn)程終端發(fā)送的截圖指令,向所述終端發(fā)送的ADB shell指令,可以通過ADB shell指令執(zhí)行所述截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,發(fā)送給遠(yuǎn)程終端,云真機(jī)場景在遠(yuǎn)程終端實(shí)時(shí)顯示了終端上的軟件測試情況,例如,APP應(yīng)用測試等。
[0034]ADB shell指令供安裝ADB服務(wù)端程序的接入終端(如桌面電腦)直接操作管理andro i d終端(如手機(jī))的指令。
[0035]一般情況下,Android系統(tǒng)里面按照權(quán)限分類,里面的用戶組主要有root權(quán)限、system權(quán)限、shell權(quán)限等,這些用戶組具備的權(quán)限要大于普通的APP應(yīng)用,通過ADB shell命令來執(zhí)行截圖邏輯(或程序),即可獲得shell用戶組的權(quán)限,這個(gè)權(quán)限可以具有獲取顯示屏、輸入、日志、scard讀寫、藍(lán)牙、網(wǎng)絡(luò)等的權(quán)限,此時(shí),該截圖邏輯(或程序)即可執(zhí)行獲取顯示屏等操作,達(dá)到一般APP應(yīng)用無權(quán)限執(zhí)行的操作,普通應(yīng)用也可通過調(diào)用該截圖邏輯實(shí)現(xiàn)獲取屏幕等一般應(yīng)用無法直接執(zhí)行的操作。
[0036]102、執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖;
[0037]其中,所述截圖邏輯為預(yù)先配置在所述終端操作系統(tǒng)內(nèi),且與所述操作系統(tǒng)的版本對應(yīng)的邏輯,如圖4所示,圖2場景下的遠(yuǎn)程終端內(nèi)或者圖3場景下的接入終端內(nèi),動(dòng)態(tài)庫中可以配置好多個(gè)不同終端操作系統(tǒng)對應(yīng)的截圖邏輯,在確定終端的操作系統(tǒng)版本后,向終端發(fā)送與所述終端操作系統(tǒng)的版本對應(yīng)的截圖邏輯,即實(shí)現(xiàn)在終端操作系統(tǒng)內(nèi)配置截圖邏輯。不同的操作系統(tǒng)對應(yīng)不同的截圖邏輯,但它們對應(yīng)的都能實(shí)現(xiàn)終端實(shí)時(shí)屏幕的截圖,即它們可以設(shè)計(jì)定義成面向所有操作系統(tǒng)版本的統(tǒng)一抽象接口,提供給不同的圖片處理應(yīng)用處理實(shí)現(xiàn)。
[0038]本發(fā)明實(shí)施例中,在圖2所示的場景下,所述截圖邏輯可以是終端在實(shí)時(shí)屏幕截圖之前,所述遠(yuǎn)程終端獲取所述終端的操作系統(tǒng)版本后與所述操作系統(tǒng)對應(yīng)的發(fā)送的,即在實(shí)時(shí)屏幕截圖之前,遠(yuǎn)程終端獲取所述終端的操作系統(tǒng)版本,在預(yù)置的截圖邏輯中選擇與所述操作系統(tǒng)版本對應(yīng)的截圖邏輯,發(fā)送給所述終端進(jìn)行接收。
[0039]本發(fā)明實(shí)施例中,在圖3所示的場景下,當(dāng)所述遠(yuǎn)程屏幕截圖指令是所述接入終端通過云服務(wù)器接收所述遠(yuǎn)程終端發(fā)送的截圖指令,向所述終端發(fā)送的ADB shell指令時(shí),所述截圖邏輯可以是所述接入終端獲取所述終端的操作系統(tǒng)版本后,在預(yù)置的截圖邏輯中選擇與所述操作系統(tǒng)版本對應(yīng)的截圖邏輯發(fā)送的,具體的,所述ADB shell指令可以是:adbshell+〃截圖邏輯名〃,終端接收該ADB shell指令就可以在終端上執(zhí)行所述截圖邏輯,此時(shí),所述執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯,該截圖邏輯即具有shell權(quán)限,可以獲取終端顯示屏,進(jìn)行實(shí)時(shí)屏幕截圖,
[0040]103、向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖。
[0041]本實(shí)施例中,所述遠(yuǎn)程屏幕截圖指令中可以包括除所述遠(yuǎn)程終端外的至少一個(gè)終端的通信地址,在向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖的同時(shí),可以同時(shí)向所述至少一個(gè)終端發(fā)送所述實(shí)時(shí)屏幕截圖,實(shí)現(xiàn)多個(gè)終端對所述終端屏幕的同步顯示。
[0042]本發(fā)明實(shí)施例中,通過接收的遠(yuǎn)程終端發(fā)送的遠(yuǎn)程屏幕截圖指令,執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖,由于截圖邏輯為預(yù)先配置在所述終端的操作系統(tǒng)內(nèi),且與所述操作系統(tǒng)的版本對應(yīng)的邏輯,提高了截圖處理速度和效率。
[0043]可選的,當(dāng)所述操作系統(tǒng)的版本為第一版本時(shí),所述執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,包括:
[0044]創(chuàng)建用于顯示所述終端屏幕的虛擬屏幕和截圖緩存區(qū);
[0045]通過所述虛擬屏幕對所述終端屏幕進(jìn)行實(shí)時(shí)屏幕截圖;
[0046]將所述實(shí)時(shí)屏幕截圖保存到所述截圖緩存區(qū)。
[0047]本發(fā)明實(shí)施例中,第一版本即為操作系統(tǒng)Android4.2以上的版本。以圖3所示的場景為例,如圖5所示,所述執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖具體可以包括如下步驟:
[0048]501、創(chuàng)建用于顯示所述終端屏幕的虛擬屏幕VirtualDisplay和截圖緩存區(qū);
[0049]面向管理者SurfaceF linger是an droid的一個(gè)服務(wù),其負(fù)責(zé)管理應(yīng)用端的surface,將所有的surf ace復(fù)合,它是介于圖形庫和應(yīng)用之間的一層,每個(gè)應(yīng)用在它自己的surf ace完成各種圖形操作后,請求SurfaceFlinger顯示到屏幕,surf acef linger就會將所有的surf ace疊加起來,并且反映到幀緩沖區(qū)framebuffer (如下面描述的BufferQueue)。[°°50] Android 4.2版本以上的操作系統(tǒng)中,支持虛擬屏幕VirtualDisplay的顯示,在創(chuàng)建用于顯示所述終端屏幕的虛擬屏幕VirtualDisplay前,需要先請求Surface Flinger月艮務(wù),建立與Surface Flinger連接,才能通過請求SurfaceFlinger顯示到屏幕,本實(shí)施例中,可以通過構(gòu)造一個(gè)Surface-Composer-Client對象請求Surf ace Fl inger服務(wù),建立與Surface Fl inger連接;
[0051 ] 在創(chuàng)建截圖緩存區(qū)Buf f erQueue時(shí),可以綁定與Buf f erQueue關(guān)聯(lián)的生產(chǎn)者(BufferQueueProducer))和消費(fèi)者(BufferQueueConsumer) ,BufferQueue的生產(chǎn)者來自Surface(通過SurfaceFlinger管理),消費(fèi)者為剛創(chuàng)建的虛擬屏幕Virtual Display。
[0052]502、通過Virtual Display對所述終端屏幕進(jìn)行實(shí)時(shí)屏幕截圖。
[0053]503、將所述實(shí)時(shí)屏幕截圖保存到所述Buff erQueue。
[0054]可選的,在本發(fā)明實(shí)施例中,還可以創(chuàng)建一個(gè)監(jiān)聽對象,對截圖緩存區(qū)中進(jìn)行監(jiān)聽,因此所述方法還可以包括:監(jiān)聽所述截圖緩存區(qū);
[0055]此時(shí),所述向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖,包括:
[0056]當(dāng)所述截圖緩存區(qū)中存在所述實(shí)時(shí)屏幕截圖時(shí),向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏蒂截圖。
[0057]例如,可以創(chuàng)建Cpu-Consumer對象,對所述Buf f erQueue進(jìn)行監(jiān)聽,在所述Buff erQueue中包括新的屏幕截圖時(shí),向所述遠(yuǎn)程終端發(fā)送所述新的屏幕截圖。
[0058]可選的,如果使用虛擬屏幕VirtualDisplay的方案進(jìn)行實(shí)時(shí)截圖,截圖時(shí)需要考慮屏幕方向的變化,因此,所述方法還可以包括:根據(jù)所述當(dāng)前實(shí)時(shí)屏幕截圖確定所述終端屏幕的方向;當(dāng)所述終端屏幕的方向相對上一個(gè)實(shí)時(shí)屏幕截圖發(fā)生變化,則設(shè)置所述虛擬屏幕截圖的寬高信息以適應(yīng)所述終端屏幕的方向。即每當(dāng)獲取一張新的屏幕截圖圖片,會根據(jù)該新的圖片判斷當(dāng)前屏幕的方向是橫屏還是豎屏,如果該新的屏幕截圖圖片相對之前方向發(fā)生變化,則重新設(shè)置所述虛擬屏幕截圖的寬高信息以適應(yīng)所述終端屏幕的方向,按新的設(shè)置進(jìn)行屏幕截圖。
[0059]因此,在實(shí)時(shí)屏幕截圖過程中還可以包括如下步驟:
[0060]504、根據(jù)所述當(dāng)前實(shí)時(shí)屏幕截圖確定所述終端屏幕的方向;
[0061]505、判斷所述終端屏幕的方向相對上一個(gè)實(shí)時(shí)屏幕截圖是否發(fā)生變化,若是,則執(zhí)行步驟506 ;
[0062]506、設(shè)置所述虛擬屏幕截圖的寬高信息以適應(yīng)所述終端屏幕的方向;
[0063]此時(shí),指示步驟502中按照新的設(shè)置進(jìn)行實(shí)時(shí)截圖。
[0064]可選的,當(dāng)所述操作系統(tǒng)版本為第二版本時(shí),所述第二版本的操作系統(tǒng)中包括屏幕共享內(nèi)存和用于將所述終端的屏幕截圖到所述屏幕共享內(nèi)存的截圖代理對象;
[0065]所述執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,可以包括:
[0066]獲取截圖代理對象;
[0067]使用所述截圖代理對象獲取所述終端的實(shí)時(shí)屏幕截圖,并將所述實(shí)時(shí)屏幕截圖保存到所述屏幕共享內(nèi)存;
[0068]所述向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖,可以包括:
[0069]從所述屏幕共享內(nèi)存調(diào)取所述實(shí)時(shí)屏幕截圖,向所述遠(yuǎn)程終端發(fā)送。
[0070]本發(fā)明實(shí)施例中,第一版本即為操作系統(tǒng)Android4.2以下的操作系統(tǒng)版本,以圖3所示的場景為例,如圖6所示,所述執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖具體可以包括如下步驟:
[0071 ] 601、獲取 SurfaceFlinger服務(wù)的截圖代理對象 ISurfaceComposer;
[0072]本實(shí)施例中,可以通過調(diào)用ComposerService:: getComposerService()函數(shù)獲取SurfaceFl inger服務(wù)的截圖代理對象 ISurfaceComposer。
[0073]在Andro id 4.2以下的操作系統(tǒng)版本中,每個(gè)應(yīng)用程序進(jìn)程在請求SurfaceFl inger服務(wù)時(shí),首先需要獲取SurfaceFl inger服務(wù)的代理對象,通過該代理對象請求SurfaceFl inger為該應(yīng)用程序進(jìn)程在SurfaceFl inger服務(wù)端創(chuàng)建一個(gè)Client對象,該對象專門接收處理當(dāng)前應(yīng)用程序的請求,本實(shí)施例中,由于是執(zhí)行截圖邏輯,因此,需要獲取截圖代理對象,如ISurfaceComposer ο
[0074]602、通過截圖代理對象ISurfaceComposer獲取所述終端的實(shí)時(shí)屏幕截圖;
[0075]603、將所述實(shí)時(shí)屏幕截圖保存到所述屏幕共享內(nèi)存IMemoryHeap。
[0076]IMemoryHeap是在SurfaceFlinger啟動(dòng)過程中創(chuàng)建的一塊匿名共享內(nèi)存,用于保存系統(tǒng)顯示屏幕信息,并共享給系統(tǒng)中的所有進(jìn)程訪問。
[0077]IMemoryHeap中的屏幕截圖也可以進(jìn)一步保存到其他內(nèi)存空間,此處不作限定。此時(shí),可以從所述頂emoryHeap或者另外保存的其他內(nèi)存空間獲取所述實(shí)時(shí)屏幕截圖,向所述遠(yuǎn)程終端發(fā)送。
[0078]下面介紹本發(fā)明實(shí)施例中截圖裝置的實(shí)施例,所述截圖裝置應(yīng)用于終端。
[0079 ]請參閱圖7,本發(fā)明實(shí)施例中截圖裝置700的一個(gè)實(shí)施例包括:
[0080]接收單元701,用于接收遠(yuǎn)程終端發(fā)送的遠(yuǎn)程屏幕截圖指令,所述遠(yuǎn)程屏幕截圖指令為在一段時(shí)間內(nèi)持續(xù)進(jìn)行實(shí)時(shí)屏幕截圖的指令;
[0081]截圖單元702,用于執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,所述截圖邏輯為預(yù)先配置在所述終端的操作系統(tǒng)內(nèi),且與所述操作系統(tǒng)的版本對應(yīng)的邏輯;
[0082]發(fā)送單元703,用于向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖。
[0083]本發(fā)明實(shí)施例中,截圖單元702執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,發(fā)送單元703向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖,由于截圖邏輯為預(yù)先配置在所述終端的操作系統(tǒng)內(nèi),且與所述操作系統(tǒng)的版本對應(yīng)的邏輯,提高了截圖處理速度和效率。
[0084]可選的,當(dāng)所述操作系統(tǒng)的版本為第一版本時(shí),所述截圖單元702具體用于:
[0085]創(chuàng)建用于顯示所述終端屏幕的虛擬屏幕和截圖緩存區(qū);
[0086]通過所述虛擬屏幕對所述終端屏幕進(jìn)行實(shí)時(shí)屏幕截圖;
[0087]將所述實(shí)時(shí)屏幕截圖保存到所述截圖緩存區(qū)。
[0088]可選的,所述裝置還包括:
[0089]監(jiān)聽單元,用于監(jiān)聽所述截圖緩存區(qū);
[0090]所述發(fā)送單元703具體用于當(dāng)所述截圖緩存區(qū)中存在所述實(shí)時(shí)屏幕截圖時(shí),向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖。
[0091]可選的,所述裝置還包括:
[0092]調(diào)整單元,用于根據(jù)所述當(dāng)前實(shí)時(shí)屏幕截圖確定所述終端屏幕的方向,當(dāng)所述終端屏幕的方向相對上一個(gè)實(shí)時(shí)屏幕截圖發(fā)生變化,則設(shè)置所述虛擬屏幕截圖的寬高信息以適應(yīng)所述終端屏幕的方向。
[0093]可選的,當(dāng)所述操作系統(tǒng)版本為第二版本時(shí),所述第二版本的操作系統(tǒng)中包括屏幕共享內(nèi)存和用于將所述終端的屏幕截圖到所述屏幕共享內(nèi)存的截圖代理對象;
[0094]所述截圖單元702具體用于獲取截圖代理對象,使用所述截圖代理對象獲取所述終端的實(shí)時(shí)屏幕截圖,并將所述實(shí)時(shí)屏幕截圖保存到所述屏幕共享內(nèi)存;
[0095]所述發(fā)送單元703具體用于從所述屏幕共享內(nèi)存調(diào)取所述實(shí)時(shí)屏幕截圖,向所述遠(yuǎn)程終端發(fā)送。
[0096]上面從單元化功能實(shí)體的角度對本發(fā)明實(shí)施例中的截圖裝置進(jìn)行了描述,下面從硬件處理的角度對本發(fā)明實(shí)施例中截圖裝置所在的終端進(jìn)行描述,請參閱圖8,本發(fā)明實(shí)施例中的終端800包括:
[0097]輸入裝置801、輸出裝置802、處理器803和存儲器804(其中處理器803的數(shù)量可以一個(gè)或多個(gè),圖8中以一個(gè)處理器803為例)ο在本發(fā)明的一些實(shí)施例中,輸入裝置801、輸出裝置802、處理器803和存儲器804可通過總線或其它方式連接,其中,圖8中以通過總線連接為例。
[0098]本發(fā)明實(shí)施例涉及的終端可以具有比圖8所示出的更多或更少的部件,可以組合兩個(gè)或更多個(gè)部件,或者可以具有不同的部件配置或設(shè)置,各個(gè)部件可以在包括一個(gè)或多個(gè)信號處理和/或?qū)S眉呻娐吩趦?nèi)的硬件、軟件或硬件和軟件的組合實(shí)現(xiàn)。
[0099]其中,通過調(diào)用存儲器804存儲的操作指令,處理器803用于執(zhí)行如下步驟:
[0100]通過所述輸入裝置801接收遠(yuǎn)程終端發(fā)送的遠(yuǎn)程屏幕截圖指令,所述遠(yuǎn)程屏幕截圖指令為在一段時(shí)間內(nèi)持續(xù)進(jìn)行實(shí)時(shí)屏幕截圖的指令;
[0101]執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,所述截圖邏輯為預(yù)先配置在所述終端的操作系統(tǒng)內(nèi),且與所述操作系統(tǒng)的版本對應(yīng)的邏輯;
[0102]通過所述輸出裝置802向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖。
[0103]可選的,當(dāng)所述操作系統(tǒng)的版本為第一版本時(shí),通過調(diào)用存儲器804存儲的操作指令,處理器803具體用于執(zhí)行如下步驟:
[0104]創(chuàng)建用于顯示所述終端屏幕的虛擬屏幕和截圖緩存區(qū);
[0105]通過所述虛擬屏幕對所述終端屏幕進(jìn)行實(shí)時(shí)屏幕截圖;
[0106]將所述實(shí)時(shí)屏幕截圖保存到所述截圖緩存區(qū)。
[0107]可選的,通過調(diào)用存儲器804存儲的操作指令,處理器803還用于執(zhí)行如下步驟:
[0108]監(jiān)聽所述截圖緩存區(qū);
[0109]此時(shí),通過調(diào)用存儲器804存儲的操作指令,處理器803具體用于執(zhí)行如下步驟:
[0110]當(dāng)所述截圖緩存區(qū)中存在所述實(shí)時(shí)屏幕截圖時(shí),向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖。
[0111]可選的,通過調(diào)用存儲器804存儲的操作指令,處理器803還用于執(zhí)行如下步驟:
[0112]根據(jù)所述當(dāng)前實(shí)時(shí)屏幕截圖確定所述終端屏幕的方向;
[0113]當(dāng)所述終端屏幕的方向相對上一個(gè)實(shí)時(shí)屏幕截圖發(fā)生變化,則設(shè)置所述虛擬屏幕截圖的寬高信息以適應(yīng)所述終端屏幕的方向。
[0114]可選的,當(dāng)所述操作系統(tǒng)版本為第二版本時(shí),所述第二版本的操作系統(tǒng)中包括屏幕共享內(nèi)存和用于將所述終端的屏幕截圖到所述屏幕共享內(nèi)存的截圖代理對象;通過調(diào)用存儲器804存儲的操作指令,處理器803具體用于執(zhí)行如下步驟:
[0115]獲取截圖代理對象;
[0116]使用所述截圖代理對象獲取所述終端的實(shí)時(shí)屏幕截圖,并將所述實(shí)時(shí)屏幕截圖保存到所述屏幕共享內(nèi)存;
[0117]此時(shí),通過調(diào)用存儲器804存儲的操作指令,處理器803具體用于執(zhí)行如下步驟:
[0118]從所述屏幕共享內(nèi)存調(diào)取所述實(shí)時(shí)屏幕截圖,向所述遠(yuǎn)程終端發(fā)送。
[0119]本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)存儲介質(zhì),其中,該計(jì)算機(jī)存儲介質(zhì)可存儲有程序,該程序執(zhí)行時(shí)包括上述方法實(shí)施例中記載的至少截圖的方法的部分或全部步驟。
[0120]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,在上述實(shí)施例中,對各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
[0121]需要說明的是,對于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
[0122]在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0123]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
[0124]另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
[0125]所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲在一個(gè)計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0126]以上所述,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
【主權(quán)項(xiàng)】
1.一種截圖的方法,其特征在于,應(yīng)用于終端,所述方法包括: 接收遠(yuǎn)程終端發(fā)送的遠(yuǎn)程屏幕截圖指令,所述遠(yuǎn)程屏幕截圖指令為在一段時(shí)間內(nèi)持續(xù)進(jìn)行實(shí)時(shí)屏幕截圖的指令; 執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,所述截圖邏輯為預(yù)先配置在所述終端的操作系統(tǒng)內(nèi),且與所述操作系統(tǒng)的版本對應(yīng)的邏輯; 向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述操作系統(tǒng)的版本為第一版本時(shí),所述執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,包括: 創(chuàng)建用于顯示所述終端屏幕的虛擬屏幕和截圖緩存區(qū); 通過所述虛擬屏幕對所述終端屏幕進(jìn)行實(shí)時(shí)屏幕截圖; 將所述實(shí)時(shí)屏幕截圖保存到所述截圖緩存區(qū)。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 監(jiān)聽所述截圖緩存區(qū); 所述向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖,包括: 當(dāng)所述截圖緩存區(qū)中存在所述實(shí)時(shí)屏幕截圖時(shí),向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖。4.根據(jù)權(quán)利要求1至3任一所述的方法,其特征在于,所述方法還包括: 根據(jù)所述當(dāng)前實(shí)時(shí)屏幕截圖確定所述終端屏幕的方向; 當(dāng)所述終端屏幕的方向相對上一個(gè)實(shí)時(shí)屏幕截圖發(fā)生變化,則設(shè)置所述虛擬屏幕截圖的寬高信息以適應(yīng)所述終端屏幕的方向。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述操作系統(tǒng)版本為第二版本時(shí),所述第二版本的操作系統(tǒng)中包括屏幕共享內(nèi)存和用于將所述終端的屏幕截圖到所述屏幕共享內(nèi)存的截圖代理對象; 所述執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,包括: 獲取截圖代理對象; 使用所述截圖代理對象獲取所述終端的實(shí)時(shí)屏幕截圖,并將所述實(shí)時(shí)屏幕截圖保存到所述屏幕共享內(nèi)存; 所述向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖,包括: 從所述屏幕共享內(nèi)存調(diào)取所述實(shí)時(shí)屏幕截圖,向所述遠(yuǎn)程終端發(fā)送。6.一種截圖裝置,其特征在于,應(yīng)用于終端,所述裝置包括: 接收單元,用于接收遠(yuǎn)程終端發(fā)送的遠(yuǎn)程屏幕截圖指令,所述遠(yuǎn)程屏幕截圖指令為在一段時(shí)間內(nèi)持續(xù)進(jìn)行實(shí)時(shí)屏幕截圖的指令; 截圖單元,用于執(zhí)行所述遠(yuǎn)程屏幕截圖指令對應(yīng)的截圖邏輯進(jìn)行實(shí)時(shí)屏幕截圖,所述截圖邏輯為預(yù)先配置在所述終端的操作系統(tǒng)內(nèi),且與所述操作系統(tǒng)的版本對應(yīng)的邏輯;發(fā)送單元,用于向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,當(dāng)所述操作系統(tǒng)的版本為第一版本時(shí),所述截圖單元具體用于: 創(chuàng)建用于顯示所述終端屏幕的虛擬屏幕和截圖緩存區(qū); 通過所述虛擬屏幕對所述終端屏幕進(jìn)行實(shí)時(shí)屏幕截圖; 將所述實(shí)時(shí)屏幕截圖保存到所述截圖緩存區(qū)。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 監(jiān)聽單元,用于監(jiān)聽所述截圖緩存區(qū); 所述發(fā)送單元具體用于當(dāng)所述截圖緩存區(qū)中存在所述實(shí)時(shí)屏幕截圖時(shí),向所述遠(yuǎn)程終端發(fā)送所述實(shí)時(shí)屏幕截圖。9.根據(jù)權(quán)利要求6至8中任一所述的裝置,其特征在于,所述裝置還包括: 調(diào)整單元,用于根據(jù)所述當(dāng)前實(shí)時(shí)屏幕截圖確定所述終端屏幕的方向,當(dāng)所述終端屏幕的方向相對上一個(gè)實(shí)時(shí)屏幕截圖發(fā)生變化,則設(shè)置所述虛擬屏幕截圖的寬高信息以適應(yīng)所述終端屏幕的方向。10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,當(dāng)所述操作系統(tǒng)版本為第二版本時(shí),所述第二版本的操作系統(tǒng)中包括屏幕共享內(nèi)存和用于將所述終端的屏幕截圖到所述屏幕共享內(nèi)存的截圖代理對象; 所述截圖單元具體用于獲取截圖代理對象,使用所述截圖代理對象獲取所述終端的實(shí)時(shí)屏幕截圖,并將所述實(shí)時(shí)屏幕截圖保存到所述屏幕共享內(nèi)存; 所述發(fā)送單元具體用于從所述屏幕共享內(nèi)存調(diào)取所述實(shí)時(shí)屏幕截圖,向所述遠(yuǎn)程終端發(fā)送。
【文檔編號】G06F3/0484GK105988688SQ201610042112
【公開日】2016年10月5日
【申請日】2016年1月22日
【發(fā)明人】方亮, 荊彥青, 孫大偉, 楊希鋒, 黃琰, 楊君
【申請人】騰訊科技(深圳)有限公司