Java - 获取已连接 android 设备的屏幕截图
Java - Get a screenshot of connected android device
我正在尝试编写一个 java 程序来捕获已连接(通过 USB)android 设备的当前屏幕并将其保存在电脑中。
我正在寻找任何我可以使用的图书馆或任何我可以遵循的教程..
我真的迷路了..
你可能想检查一下。 How to programmatically take a screenshot in Android?
尝试在单独的进程中拍照和保存。
你可以尝试在你的程序中调用ADB(假设手机上安装了USB驱动并授权了电脑):
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png
adb shell rm /sdcard/screen.png
使用 perl:
adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png
来源:here
您可以使用以下方式在 Java 中调用可执行文件:
Process process = new ProcessBuilder("C:\PathToExe\MyExe.exe","param1","param2").start();
来源:Java Programming: call an exe from Java and passing parameters
从ADB获取设备列表
IDevice[] devices = bridge.getDevices();
然后就可以得到序列号为
的具体设备
d.getSerialNumber()
然后截屏,
RawImage rawImage = device.getScreenshot();
将原始数据转换为图像
BufferedImage image = new BufferedImage(rawImage.width, rawImage.height,
BufferedImage.TYPE_INT_ARGB);
int index = 0;
int IndexInc = rawImage.bpp >> 3;
for (int y = 0 ; y < rawImage.height ; y++) {
for (int x = 0 ; x < rawImage.width ; x++) {
int value = rawImage.getARGB(index);
index += IndexInc;
image.setRGB(x, y, value);
终于保存图片了
ImageIO.write(image, "png", new File(filepath));
使用ddmlib.jar
可以在这里找到工作和图书馆..
http://www.java2s.com/Code/Jar/d/Downloadddmlibjar.htm
截图:
ProcessBuilder processBuilderq1 = new ProcessBuilder(new String[] { "cmd.exe", "/c", "adb shell /system/bin/screencap -p /sdcard/s.png"});
Process pq1 = processBuilderq1.start();
拉到电脑:
ProcessBuilder processBuilderq1 = new ProcessBuilder(new String[] { "cmd.exe", "/c", "adb pull /sdcard/s.png D:\Images\s1.png"});
Process pq1 = processBuilderq1.start();
我正在尝试编写一个 java 程序来捕获已连接(通过 USB)android 设备的当前屏幕并将其保存在电脑中。 我正在寻找任何我可以使用的图书馆或任何我可以遵循的教程.. 我真的迷路了..
你可能想检查一下。 How to programmatically take a screenshot in Android?
尝试在单独的进程中拍照和保存。
你可以尝试在你的程序中调用ADB(假设手机上安装了USB驱动并授权了电脑):
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png
adb shell rm /sdcard/screen.png
使用 perl:
adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png
来源:here
您可以使用以下方式在 Java 中调用可执行文件:
Process process = new ProcessBuilder("C:\PathToExe\MyExe.exe","param1","param2").start();
来源:Java Programming: call an exe from Java and passing parameters
从ADB获取设备列表
IDevice[] devices = bridge.getDevices();
然后就可以得到序列号为
的具体设备d.getSerialNumber()
然后截屏,
RawImage rawImage = device.getScreenshot();
将原始数据转换为图像
BufferedImage image = new BufferedImage(rawImage.width, rawImage.height,
BufferedImage.TYPE_INT_ARGB);
int index = 0;
int IndexInc = rawImage.bpp >> 3;
for (int y = 0 ; y < rawImage.height ; y++) {
for (int x = 0 ; x < rawImage.width ; x++) {
int value = rawImage.getARGB(index);
index += IndexInc;
image.setRGB(x, y, value);
终于保存图片了
ImageIO.write(image, "png", new File(filepath));
使用ddmlib.jar
可以在这里找到工作和图书馆.. http://www.java2s.com/Code/Jar/d/Downloadddmlibjar.htm
截图:
ProcessBuilder processBuilderq1 = new ProcessBuilder(new String[] { "cmd.exe", "/c", "adb shell /system/bin/screencap -p /sdcard/s.png"});
Process pq1 = processBuilderq1.start();
拉到电脑:
ProcessBuilder processBuilderq1 = new ProcessBuilder(new String[] { "cmd.exe", "/c", "adb pull /sdcard/s.png D:\Images\s1.png"});
Process pq1 = processBuilderq1.start();