當前位置:首頁 » 安卓系統 » android代碼截圖

android代碼截圖

發布時間: 2022-04-27 01:33:33

A. android怎麼截圖scrollview所有

您好,核心代碼如下:
Bitmap bitmap = Bitmap.createBitmap(1000, 3000, Bitmap.Config.ARGB_4444);
Canvas canvas = new Canvas(bitmap);
//將控制項ScrollView畫到畫布canvas上
mScrollView.draw(canvas);
iv.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
//在ImageView里顯示截圖
iv.setImageBitmap(bitmap);
關鍵在於那個draw函數,其實就是獲取ScrollView控制項(這是個View),然後將其繪制到Canvas的Bitmap上。
截圖還可保存到手機上,跟保存普通文件是一樣的,操作Bitmap就可以。
-----您的採納是我們的動力-----

B. 安卓截屏命令

在安卓開發中, 我們很多時候都要用到截屏這個功能。

有時是為了演示, 有時是為了報告問題(比如在Bugzilla, Jira, Redmine等Bug跟蹤系統中上傳截圖), 有時是為了發布應用時要用的截圖。

今天就來聊聊如何快速只用一句簡單的命令就搞定截圖。

由繁到簡的演進:三種方法
這篇主要講Linux系統下如何Android手機截屏(當然了,Windows下也類似,可以自行嘗試):

首先你的Linux中要安裝了adb(也就是Android Debug Bridge,可以在你下載的Android的SDK的platform-tools文件夾中找到,只要把路徑加入PATH環境變數就可以)。


而且你的Android手機須要開啟了Develop options (開發者選項,要開啟好像一般是在Settings(設置)里的About device(關於本機)中按7次Build number那個地方),如下:


那麼截屏有哪幾種方式呢?應該有很多,這里提供由繁到簡的三種方法,也記錄了小編從事Android開發之後的截屏方法的「演進」。哈哈,以前是挺蠢萌的(話外音:小編你只有蠢,沒有萌,好不...):

1. 手動+adb命令
用你的手機的組合鍵來截屏(一般是同時按下Home鍵和電源鍵),然後用adb pull來取回本地:

adb pull /手機的截屏圖片保存路徑/xxx.png
2. 純adb命令
1.使用screencap這個命令,配合adb命令來實現截圖並保存到手機的/sdcard目錄中:

adb shell screencap -p /sdcard/hello.png
2.用adb pull將手機中的文件取回本地:

adb pull /sdcard/hello.png
成功運行上面兩行命令之後,你的家目錄~中就會多出一個hello.png的圖片。

當然了,截圖時注意不要鎖屏,不然截出來就是黑屏。

3. Shell函數+命令
第二種用adb命令的方式已經比較簡單快捷了。但是,作為程序員,難道每次截屏都要輸入這兩個命令嗎?簡直不能忍。

程序員要學會「偷懶」

一般Ubuntu(或其他Linux發行版,例如Fedora)中默認的Shell程序是Bash。因此我們其實可以在.bashrc中寫一個函數:

1.用你慣用的文本編輯器打開.bashrc

C. 如何在Android裡面使用代碼截屏

  • 回答:Android SDK的截屏

  • 方法步驟:如下

方法一:

(1)主要就是利用SDK提供的View.getDrawingCache()方法。網上已經有很多的實例了。首先創建一個android project,然後進行Layout,畫一個按鍵

HelloAndroid.java實現代碼為:packagecom.example.helloandroid;

這個代碼會在按下app中按鍵的時候自動在手機的/sdcard/目錄下生成一個時間戳命名的png截屏文件。

這種截屏有一個問題,就是只能截到一部分,比如電池指示部分就截不出來了。

(2)在APK中調用「adb shell screencap -pfilepath」 命令

  • 該命令讀取系統的framebuffer,需要獲得系統許可權:

(1). 在AndroidManifest.xml文件中添加

(2). 修改APK為系統許可權,將APK放到源碼編譯

(3).利用系統的API,實現Screenshot,這部分代碼是系統隱藏的,需要在源碼下編譯,

1).修改Android.mk, 添加系統許可權

LOCAL_CERTIFICATE := platform

2).修改AndroidManifest.xml 文件,添加

許可權

方法二:

  • Android ddmlib進行截屏

Android本地編程(Native Programming)讀取framebuffer

(1)命令行,框架的截屏功能是通過framebuffer來實現的,所以我們先來介紹一下framebuffer。

Linux FrameBuffer 本質上只是提供了對圖形設備的硬體抽象,在開發者看來,FrameBuffer 是一塊顯示緩存,往顯示緩存中寫入特定格式的數據就意味著向屏幕輸出內容。所以說FrameBuffer就是一塊白板。例如對於初始化為16 位色的FrameBuffer 來說, FrameBuffer中的兩個位元組代表屏幕上一個點,從上到下,從左至右,屏幕位置與內存地址是順序的線性關系。幀緩存有個地址,是在內存里。我們通過不停的向frame buffer中寫入數據, 顯示控制器就自動的從frame buffer中取數據並顯示出來。全部的圖形都共享內存中同一個幀緩存。

  • 方法三:Android截屏實現思路

Android系統是基於Linux內核的,所以也存在framebuffer這個設備,我們要實現截屏的話只要能獲取到framebuffer中的數據,然後把數據轉換成圖片就可以了,android中的framebuffer數據是存放在 /dev/graphics/fb0 文件中的,所以我們只需要來獲取這個文件的數據就可以得到當前屏幕的內容。

現在我們的測試代碼運行時候是通過RC(remote controller)方式來運行被測應用的,那就需要在PC機上來訪問模擬器或者真機上的framebuffer數據,這個的話可以通過android的ADB命令來實現。

  • 注意:

1、需要在AndroidManifest.xml中加入代碼:android:sharedUserId="android.uid.system"。

2、由於調用了@hide的API,所以編譯得時候請使用makefile編譯。或者通過在Eclipse中添加Jar文件通過編譯。

3、此代碼只在Android4.0中使用過,2.3的就沒去做測試了。

  • 補充說明:

  1. 利用TakeScreenShotService截圖Android手機一般都自帶有手機屏幕截圖的功能:在手機任何界面(當然手機要是開機點亮狀態),通過按組合鍵,屏幕閃一下,然後咔嚓一聲,截圖的照片會保存到當前手機的圖庫中,

  2. 對手機android源碼中通過組合鍵屏幕截圖的整個流程有個大體了解了,在改動中熟悉按鍵的捕獲原理,並且清楚調用的截屏函數介面即可。

熱點內容
hp存儲6350 發布:2025-05-15 05:40:41 瀏覽:232
怎麼更改電腦默認緩存位置 發布:2025-05-15 05:39:01 瀏覽:876
安卓qq公孫離在哪個戰區戰力最低 發布:2025-05-15 05:38:58 瀏覽:492
androidffmpeg壓縮 發布:2025-05-15 05:37:02 瀏覽:287
ftp簡稱是 發布:2025-05-15 05:37:02 瀏覽:120
光遇發光耳機怎麼設置安卓 發布:2025-05-15 05:32:03 瀏覽:112
台電安卓平板系統太低怎麼辦 發布:2025-05-15 05:20:00 瀏覽:508
安裝了zlib編譯報錯 發布:2025-05-15 05:19:56 瀏覽:167
二分演算法無序 發布:2025-05-15 05:18:22 瀏覽:29
網易我的世界伺服器組件怎麼安裝 發布:2025-05-15 05:16:58 瀏覽:312