Android下調(diào)用系統(tǒng)截屏的心得

根據(jù)公司的軟件需求,需要實(shí)現(xiàn)一個(gè)在所有信道下批注以及自定義截圖的功能,那么則需要獲取到屏幕的截圖蛹锰,并設(shè)置到畫(huà)布上,這樣才能在后續(xù)進(jìn)行保存绰疤。前期以為只要簡(jiǎn)單的設(shè)置Activity透明即可铜犬,但后續(xù)在保存時(shí)發(fā)現(xiàn)保存的圖片一直是黑色的。

那么只能尋找其他方案轻庆,因?yàn)楣镜陌沧侩娨曋靼逵玫氖?.0以上的操作系統(tǒng)癣猾,就考慮用MediaProject相關(guān)的Api接口來(lái)做,然而此時(shí)遇到了另一個(gè)問(wèn)題余爆,在Android信道下可以截屏并且獲取到相關(guān)的屏幕數(shù)據(jù)纷宇,從而進(jìn)行保存。但當(dāng)信道切換到PC信道或者其他TV信道時(shí)蛾方,截屏生成的圖片永遠(yuǎn)是黑色的像捶,也就是MediaProject這個(gè)方案僅適用在安卓下。于是只能考慮方案三了...

方案三:調(diào)用系統(tǒng)截屏的方式桩砰,一般的設(shè)備比如手機(jī)等拓春,都是同時(shí)按下電源鍵+音量上鍵一段時(shí)間即可截屏。而如要在代碼中調(diào)用該接口亚隅,程序調(diào)用步驟如下:

1硼莽、在AndroidMenifest.xml中添加 android:sharedUserId="android.uid.system" 屬性
2、需要給程序添加系統(tǒng)簽名煮纵,這需要用到兩個(gè)文件沉删,platform.x509.pem,platform.pk8;
簽名可通過(guò)命令行的方式實(shí)現(xiàn)
a. java -jar signapk.jar platform.x509.pem platform.pk8 before_sign.apk after_sign.apk

3、調(diào)用systemui包下TakeScreenshotService服務(wù)


1526980779051.jpg

此時(shí)可以順利的調(diào)用系統(tǒng)的截圖功能醉途,然而有個(gè)弊端矾瑰,就是系統(tǒng)截屏的操作有個(gè)動(dòng)畫(huà)過(guò)程,而且無(wú)法獲取到存儲(chǔ)的路徑,無(wú)法實(shí)現(xiàn)無(wú)縫跳轉(zhuǎn)到批注以及自定義截圖功能隘擎。此時(shí)需要優(yōu)化殴穴,因?yàn)槲覀冎恍枰@取到屏幕的圖像數(shù)據(jù)即可做我們想要的操作,不希望獲取數(shù)據(jù)的過(guò)程有其他附加操作货葬,比如截屏動(dòng)畫(huà)采幌、截屏自動(dòng)存儲(chǔ)。此時(shí)需要查看TakeScreenshotService中的源碼:


1526981329172.jpg

從源碼中看到截圖過(guò)程先創(chuàng)建了一個(gè)GlobalScreenshot類(lèi)震桶,然后再調(diào)用了takeScreenshot方法休傍,那么我們繼續(xù)查看GlobalScreenshot相關(guān)的源碼:


WX20180522-173520@2x.png

可以看到,截屏其實(shí)只要調(diào)用SurfaceControl中的screenshot方法就可以獲取到屏幕的圖像數(shù)據(jù)了蹲姐,其中的參數(shù)即屏幕的寬高值磨取。但SurfaceControl是隱藏類(lèi)人柿,無(wú)法直接被我們導(dǎo)入使用的,此時(shí)就需要用到j(luò)ava的反射機(jī)制忙厌,通過(guò)反射去調(diào)用該隱藏類(lèi)的截圖方法:
WX20180522-174124@2x.png

此時(shí)凫岖,我們就可以將bitmap數(shù)據(jù)傳遞到我們需要的地方進(jìn)行使用了,同時(shí)我們規(guī)避了原有的動(dòng)畫(huà)以及自動(dòng)存儲(chǔ)的操作逢净,可以自己對(duì)截圖內(nèi)容進(jìn)行改動(dòng)和存儲(chǔ)了哥放。

以上是自己總結(jié)的一些截屏心得,因?yàn)槌绦蚴褂玫沫h(huán)境是在自己公司的設(shè)備上爹土,所以調(diào)用的原生的截屏功能甥雕。其實(shí)現(xiàn)在市場(chǎng)上大部分移動(dòng)設(shè)備等都在5.0以上了,所以用MediaProject就能解決截圖的問(wèn)題了胀茵。

最后犀农,謝謝你的閱讀,如果喜歡請(qǐng)給個(gè)贊宰掉,有什么建議或者指點(diǎn)歡迎各位提出:巧凇!轨奄!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末孟害,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子挪拟,更是在濱河造成了極大的恐慌挨务,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玉组,死亡現(xiàn)場(chǎng)離奇詭異谎柄,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)惯雳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)朝巫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人石景,你說(shuō)我怎么就攤上這事劈猿。” “怎么了潮孽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵揪荣,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我往史,道長(zhǎng)仗颈,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任椎例,我火速辦了婚禮挨决,結(jié)果婚禮上请祖,老公的妹妹穿的比我還像新娘。我一直安慰自己凰棉,他們只是感情好损拢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布陌粹。 她就那樣靜靜地躺著撒犀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掏秩。 梳的紋絲不亂的頭發(fā)上或舞,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音蒙幻,去河邊找鬼映凳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛邮破,可吹牛的內(nèi)容都是我干的诈豌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抒和,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼矫渔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起摧莽,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤庙洼,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后镊辕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體油够,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年征懈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了石咬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卖哎,死狀恐怖碌补,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情棉饶,我是刑警寧澤厦章,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站照藻,受9級(jí)特大地震影響袜啃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜幸缕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一群发、第九天 我趴在偏房一處隱蔽的房頂上張望晰韵。 院中可真熱鬧,春花似錦熟妓、人聲如沸雪猪。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)只恨。三九已至,卻和暖如春抬虽,著一層夾襖步出監(jiān)牢的瞬間官觅,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工阐污, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留休涤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓笛辟,卻偏偏與公主長(zhǎng)得像功氨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子手幢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,749評(píng)論 25 707
  • 通過(guò)近段時(shí)間的持續(xù)輸出后捷凄,自我感覺(jué)思維有些枯竭了,該寫(xiě)的東西都寫(xiě)的差不多了弯菊,這是不是在提醒自己纵势,應(yīng)該持續(xù)地輸入了。...
    駝鈴星閱讀 217評(píng)論 0 0
  • 常用命令 Q&A 如何解決gitk中文亂碼管钳,git ls-files 中文文件名亂碼問(wèn)題钦铁? 在~/.gitconf...
    山豆山豆閱讀 1,065評(píng)論 0 8
  • 盤(pán)龍鄉(xiāng)村俱樂(lè)部位于花都獅嶺山前大道、南航碧花園側(cè)才漆,是一座依山朝南的荔枝園農(nóng)場(chǎng)牛曹。餐廳由竹棚搭成,分外涼爽透氣醇滥。農(nóng)莊里...
    畢竟nice閱讀 652評(píng)論 0 0