java PC端獲取android手機截圖使用ddmlib
ddmlib在sdk tools\libs資料夾下 ddmlib.jar
AndroidDebugBridge.init(false) ;這句話需要呼叫,否則會報錯
import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import com.android.ddmlib.AdbCommandRejectedException; import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.IDevice; import com.android.ddmlib.RawImage; import com.android.ddmlib.TimeoutException; public class Main { private static void waitDeviceList(AndroidDebugBridge bridge) { int count = 0; while (bridge.hasInitialDeviceList() == false) { try { Thread.sleep(100); // 如果沒有獲得裝置列表,則等待 count++; } catch (InterruptedException e) {} if (count > 300) { // 設定時間超過300×100 ms的時候為連線超時 System.err.print("Time out"); break; } } } public static void main(String[] args) { IDevice device; AndroidDebugBridge.init(false) ; AndroidDebugBridge bridge = AndroidDebugBridge.createBridge("E:\\android-sdk\\platform-tools\\adb.exe" , false); waitDeviceList(bridge); IDevice devices[] = bridge.getDevices(); device = devices[0]; try { RawImage rawScreen = device.getScreenshot() ; if (rawScreen != null) { Boolean landscape = false; int width2 = landscape ? rawScreen.height : rawScreen.width; int height2 = landscape ? rawScreen.width : rawScreen.height; BufferedImage image = null ; if (image == null) { image = new BufferedImage(width2, height2, BufferedImage.TYPE_INT_RGB); } else { if (image.getHeight() != height2 || image.getWidth() != width2) { image = new BufferedImage(width2, height2, BufferedImage.TYPE_INT_RGB); } } int index = 0; int indexInc = rawScreen.bpp >> 3; for (int y = 0; y < rawScreen.height; y++) { for (int x = 0; x < rawScreen.width; x++, index += indexInc) { int value = rawScreen.getARGB(index); if (landscape) image.setRGB(y, rawScreen.width - x - 1, value); else image.setRGB(x, y, value); } } try { ImageIO.write((RenderedImage) image, "PNG", new File("f:\\2.png")); } catch (IOException e) { e.printStackTrace(); } } } catch (TimeoutException e) { e.printStackTrace(); } catch (AdbCommandRejectedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
下面是android上獲取截圖的辦法
https://github.com/Yhzhtk/note/issues/7
FileInputStream graphics = null; try { graphics = new FileInputStream(“/dev/graphics/fb0”); } catch (FileNotFoundException e) { e.printStackTrace(); return null; } DataInputStream dStream = new DataInputStream(graphics); dStream.readFully(piex); dStream.close(); int[] colors = new int[screenHeight * screenWidth]; // 將rgb轉為色值 for (int m = 0; m < colors.length; m++) { int r = (piex[m * 4] & 0xFF); int g = (piex[m * 4 + 1] & 0xFF); int b = (piex[m * 4 + 2] & 0xFF); int a = (piex[m * 4 + 3] & 0xFF); colors[m] = (a << 24) + (r << 16) + (g << 8) + b; } Bitmap bitmap = Bitmap.createBitmap(colors, screenWidth, screenHeight, Bitmap.Config.ARGB_8888);
相關推薦
java PC端獲取android手機截圖使用ddmlib
http://blogs.360.cn/360qtest/2014/02/28/%E9%80%9A%E8%BF%87ddmlib%E5%AE%9E%E7%8E%B0%E6%88%AA%E5%9B%BE%E4%BB%A5%E5%8F%8A%E8%8E%B7%E5%8F%96
python使用adb獲取Android Phone截圖(解決Windows傳輸編碼導致png檔案損壞的問題)
使用adb命令 ./adb shell screencap -p 可以擷取當前螢幕,並且作為stdout,傳給外部。那麼對於python,我們可以用如下程式碼獲取資料流。 使用Popen建立子程序用於讀取資料流。 import subprocess out=subprocess.Po
android手機截圖
1. 手動截圖,通過其他第三方軟體傳送截圖,或者從手機取出截圖 2. 使用命令截圖,將截圖儲存到手機,再拉取到電腦 #!/bin/sh #執行 sh screenshot name a=$1 if [ ! $a ];then a=`date +"%F_%H%M%S"` fi b='caps'
FrameBuffer中獲取Android螢幕截圖
引子 我們知道,DDMS可以很容易的獲取Android 手機 的螢幕截圖,那麼它是怎麼做到的呢? 其實,android手機上有一個叫做FrameBuffer的裝置,影象資訊都是通過FrameBuffer寫到手機螢幕上去的。因此可以通過讀取此裝置中的資料來獲取當前正在顯示的影象。當然DDMS也是這麼做到
android手機截圖、錄屏
1. 手動截圖,通過其他第三方軟體傳送截圖,或者從手機取出截圖 2. 使用命令截圖,將截圖儲存到手機,再拉取到電腦 #!/bin/sh #執行 sh screenshot name picName=$1 filePath='caps' if [ ! $picName ];then picName=
利用ddmlib 實現 PC端與android手機端adb forword socket通訊
上篇文章講了PC與android手機連線的辦法 ,通過java呼叫系統命令執行adb命令操作,實際上是一個比較笨的辦法。 網上查閱資料,發現google 提供了ddmlib庫 (adt-bundle\sdk\tools 目錄下), 提供了adb相關操作的所有api。 文件
【Android】WebView核心與XWalk核心獲取螢幕內容截圖總結
1.專案中使用到的截圖方法: public static Bitmap getWebViewContentShot(final View view) { if (view == null) retur
Android獲取View的截圖,包括各種Layout的截圖
Layout生效後才能使用 /** * 獲取Layout截圖 * * @return 所需區域的截圖 */ private Bitmap getBitmap() { rel_content.setDrawing
android-實現手機截圖效果,儲存截圖圖片
一、準備一張圖片 拷貝screenshot_panel.9.png放在目錄drawable-xhdpi下 二、activity_main.xml 程式碼如下: <RelativeLayout xmlns:android="http://schemas.andro
android視訊截圖&手機錄屏實現
問題 在android中有時候我們需要對螢幕進行截圖操作,單一的截圖操作好解決可以通過activity的頂層view DecorView獲取一個bitmap,得到就是當前activity上面的全部檢視。 View view = activity.getWindow().getDecorView();
js如何獲取android手機的電話號碼和聯絡人,並且傳遞給PHP、Java後臺
一、使用cordova代替android和iso、xcode的開發和打包 這裡先說說個人站在web的角度對cordova的一些理解:對於獲取手機的一些原生資訊,如呼叫攝像頭、獲取聯絡人,共享地理位置等,我的第一反應就是肯定要用原生的語言去做,如果js指令碼
android後臺獲取當前螢幕截圖(screencap.cpp修改)
本文基於android6.0。首先找到screencap在Android原始碼中的位置,若不清楚,可以通過在android目錄下通過命令find . -namescreencap.cpp。本文直接給出路徑/android/frameworks/base/cmds/s
純JAVA環境獲取APK資訊(包名,版本,版本號,大小,許可權...),純JAVA語言編寫PC端獲取APK資訊
純JAVA環境獲取APK資訊:包名,版本,版本號,大小,許可權... 純Java環境獲取APK資訊需要兩個包:AXMLPrinter2.jar 跟jdom.jar,用於反編譯XML和解析XML的 專案目錄 這個類是獲取APK資訊的 public class ApkUt
Android獲取當前螢幕截圖,簡單粗暴!
獲取當前螢幕截圖的Bitmap物件,然後就可以拿去做你想做的事情,程式碼很簡單。 public static Bitmap captureScreen(Activity activity) { activity.getWindow().getDe
js獲取視頻截圖
ntb tput ini contex segment 透明圖 init append source 參考:https://segmentfault.com/q/1010000006717959問題:a.獲取的好像是第一幀的圖?第一幀為透明圖時,獲取的個透明圖片b.得先
關於Unity實現AR功能(三)AR手機截圖
datetime replace ext adp screen tco 文件 unity directory 1 /************************************************* 2 * 項目名稱:AR截圖 3 * 腳本創建人
Android監測截圖
Android監測截圖 版權宣告:本文為博主原創文章,轉載請註明。 原理分析 Android系統並沒有提供截圖通知相關的API,需要我們自己對Android系統媒體資料庫進行監測,因為使用系統截圖擷取一張圖片都會把這張圖片的詳細資訊加入到這個媒體資料庫,併發出內容改變通知,
全新網際網路Java後端開發技術思維導圖
圖文裡的技術如何學習,有沒有免費資料? 知識體系已整理好(原始碼,筆記,PPT,學習視訊),歡迎免費領取。 分享給喜歡Java的,喜歡程式設計,有夢想成為架構師的程式設計師們,希望能夠幫助到你們。 不是Java的程式設計師也沒關係,幫忙轉發給更多朋友!謝謝。
React Native獲取Android手機串號(IMEI碼)
因為專案需要獲取手機imei,所以百度查了下,方法大概如下: 1.在專案根目錄下: npm install --save react-native-imei 2.然後修改android app src androidMaini
PC端上的CAD看圖軟體如何同時開啟多張CAD圖紙?
PC端上的CAD看圖軟體如何同時開啟多張CAD圖紙?在使用CAD看圖軟體檢視CAD圖紙的時候,一張一張慢慢的開啟檢視實在是減慢了檢視和對圖紙進行編輯的速度,能不能使用CAD看圖同時開啟多張圖紙檔案進行檢視,當然是可以的,今天小編就要來教大家的就是使用CAD看圖同時開啟多張CAD圖紙的全部操作步驟,望採納!