Java-获取已连接android设备的屏幕截图
我正试图编写一个java程序,捕获已连接(通过USB)android设备的当前屏幕,并将其保存在pc中。 我正在寻找任何我可以使用的图书馆或任何我可以遵循的教程。。Java-获取已连接android设备的屏幕截图,java,android,screenshot,Java,Android,Screenshot,我正试图编写一个java程序,捕获已连接(通过USB)android设备的当前屏幕,并将其保存在pc中。 我正在寻找任何我可以使用的图书馆或任何我可以遵循的教程。。 我在这里真的迷路了。你可能想检查一下 尝试拍摄照片并将其保存在一个单独的过程中。您可以尝试在程序中调用ADB(假设在手机上安装了USB驱动程序并获得了计算机授权): adb shell screencap-p/sdcard/screen.png adb pull/sdcard/screen.png adb shell rm/sdc
我在这里真的迷路了。你可能想检查一下
尝试拍摄照片并将其保存在一个单独的过程中。您可以尝试在程序中调用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
资料来源:
您可以使用以下命令调用Java中的可执行文件:
processprocess=newprocessbuilder(“C:\\PathToExe\\MyExe.exe”、“param1”、“param2”).start()代码>
来源:从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);
使用ddmlib.jar
资料来源:
在这里可以找到工作和图书馆。。
截图:
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来做这件事。。我试图在没有安卓应用的情况下做到这一点。虽然这个链接可以回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能会无效。是否有一种使用java的方法可以做到这一点?这应该可以做到:Process Process=new ProcessBuilder(“C:\\PathToExe\\MyExe.exe”、“param1”、“param2”).start();来源:像这样打电话可能有用。。。但问题是,据我所知,这段代码,我将截图保存在手机内存中,然后将截图保存到电脑上。这个过程可能需要一些时间。。在这里,我也在想时间。。我在论坛上也看到,通过亚洲开发银行需要一些时间…:(是的,当然这需要一些时间,但这取决于你的应用程序的要求,这可能会被忽略……不幸的是,在我这方面,我不知道其他检索屏幕截图的方法。对此表示抱歉。也许其他用户会知道更快的解决方案。是的……我也考虑了时间……这就是问题所在……顺便说一句,谢谢你的回答……)虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面更改,只有链接的答案可能会无效。是的,你是正确的,我没有想到…:(现在我编辑:)
ProcessBuilder processBuilderq1 = new ProcessBuilder(new String[] { "cmd.exe", "/c", "adb pull /sdcard/s.png D:\\Images\\s1.png"});
Process pq1 = processBuilderq1.start();