牙叔教程 简单易懂
测试环境
模拟器: 雷电模拟器, android7.1.2
autojs: 8.8.22
测试代码
if (!requestScreenCapture(true)) { toast("请求截图失败"); exit(); } sleep(3000); var img = captureScreen(); log("img.width: " + img.width + " img.height: " + img.height); img.recycle(); log("device.width = " + device.width + " device.height = " + device.height);
测试方法1: 模拟器竖屏状态
img.width: 960 img.height: 540 device.width = 540 device.height = 960
测试方法2: 模拟器横屏状态
img.width: 960 img.height: 540 device.width = 540 device.height = 960
测试方法3: 模拟器竖屏状态申请截图
然后3秒内点击游戏, 模拟器变为横屏
img.width: 960 img.height: 540 device.width = 540 device.height = 960
横屏截图期望
截图的宽度是手机屏幕的高度, 方便以横屏的坐标系, 来计算坐标
以上三种测试方法, 均满足图片的宽度是屏幕的高度, 这一条件;
不同的地方是什么?
截图时的模拟器处于横屏还是竖屏
申请截图权限时模拟器状态 |
截图时的模拟器状态 |
|
测试方法1 |
竖屏 |
竖屏 |
测试方法2 |
横屏申请, 强制变为竖屏 |
竖屏 |
测试方法3 |
竖屏 |
横屏 |
真机测试结果
测试环境
真机: 小米11pro
安卓: 12
miui: 13.0.9
申请截图时, 不管有没有打开游戏, 屏幕方向始终不变:
是横屏就始终是横屏, 是竖屏就始终是竖屏
横竖屏日志都是一模一样的
img.width: 3200 img.height: 1440 device.width = 1440 device.height = 3200 img.width: 3200 img.height: 1440 device.width = 1440 device.height = 3200 img.width: 3200 img.height: 1440 device.width = 1440 device.height = 3200
总结
为了兼容真机和模拟器, 申请截图权限时, 统一使用使用方法3,
先在竖屏时申请截图权限, 获取截图权限后, 再打开游戏截图,
此时, 坐标系就是横屏的, 截图也是横屏的,
可以按照直觉来计算坐标
名人名言
思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问
--- 牙叔教程
声明
部分内容来自网络
本教程仅用于学习, 禁止用于其他用途