pc端获取android的截屏
来源:互联网 发布:网络正常,但网页打不开 编辑:程序博客网 时间:2024/05/16 10:17
pc端获取android的截屏
原理:
通过在PC端获取android端的截图。主要是通过利用ddmlib中提供的方法进行获取。
需要应用sdk工具包ddmlib.jar.
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;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Jietu {
public static void main(String[] args)
{
AndroidDebugBridge.init(false /* debugger support */);
AndroidDebugBridge bridge = AndroidDebugBridge.createBridge(
"E:\\work\\soft\\android-sdk-windows\\android-sdk-windows\\tools\\adb.exe", true /* forceNewBridge */);
IDevice device;
waitDeviceList(bridge);
IDevice devices[] = bridge.getDevices();
device = devices[0];
try {
RawImage rawScreen = device.getScreenshot();
saveImage(rawScreen);
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (AdbCommandRejectedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
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;
}
}
}
private static void saveImage(RawImage rawScreen)
{
if(rawScreen != null){
BufferedImage image = null;
boolean landscape=false;
//横屏竖屏
// int width2 = landscape ? rawScreen.height : rawScreen.width;
// int height2 = landscape ? rawScreen.width : rawScreen.height;
int width2 = rawScreen.width;
int height2 = rawScreen.height;
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("D:/temp.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
- pc端获取android的截屏
- PC端获取Android手机当前屏幕截图的方法
- PC端获取Android手机当前屏幕截图的方法
- 实现pc端通过usb获取到android手机上的短信、通讯录等信息
- 实现pc端通过usb获取到android手机上的短信、通讯录等信息
- java PC端获取android手机截图使用ddmlib
- [android]PC端映射的解决方案
- Android Studio实现一个PC和Android端的聊天室
- 仿91助手的PC与android手机通讯(5) --- 使用adb获取手机信息
- 仿91助手的PC与android手机通讯(5) --- 使用adb获取手机信息
- 手机+PC双屏显示:android端即时预览PC端修改的代码
- 根据主机名获取PC的IP地址
- android与pc的连接
- android device socket 连接pc端的服务器总是不成功。
- 一个私人定制的PC端Android文件管理器
- android ios pc三端异同处的比较
- 在PC端查看Android应用的本地数据库
- PC端操控android phone
- 【BZOJ1001】狼抓兔子题解
- Java基础视频教程-JavaBean内省
- 电源滤波电容10UF 和0.1UF
- lichee 内核配置支持usb storage
- unix/linux编程实践教程:pwd命令
- pc端获取android的截屏
- [Leetcode] Postorder Traverse of Binary Tree
- TopCoder-ChessMetric
- [053] 微信公众平台开发教程第23篇-SAE不支持XStream框架的解决方案
- Tabel Widget使用
- android中实现毛笔效果(View 中绘图)
- HDU 4663 —— Outlets(最小生成树)
- hdu 4627 动态规划
- 风格的风格和弱覆盖问题沃尔