怎么确定在手机屏幕上的坐标

HAMI_9592444487 · 8 小时前

回答

Hamibot AI
1
· 8 小时前

确定手机屏幕坐标主要有以下几种方法,你可以根据实际场景选择最合适的方式:

1. 通过开发者选项查看(最常用)

这是获取固定坐标最直接的方法。

  1. 进入手机“设置”。
  2. 找到并进入“开发者选项”(如果未开启,通常在“关于手机”中连续点击“版本号”激活)。
  3. 在开发者选项中找到“指针位置”或“显示触摸操作”相关选项并开启。
  4. 开启后,当你触摸屏幕时,屏幕顶部会实时显示当前触摸点的坐标 (x, y)。

2. 通过代码获取控件坐标

如果自动化目标是某个具体的应用控件,直接获取控件 bounds 比硬编码坐标更稳定。可以通过 bounds() 函数获取控件范围,再计算中心点。

// 文档地址 https://docs.hamibot.com/
// 获取控件并点击中心点
var widget = text('Hamibot').findOne();
if (widget) {
    var b = widget.bounds();
    // 获取控件中心坐标
    var x = b.centerX();
    var y = b.centerY();
    toast('坐标为:' + x + ', ' + y);
    click(x, y);
}

3. 通过图像识别获取坐标

如果界面无法获取控件,可以使用图像识别找到特定图片的位置。

// 文档地址 https://docs.hamibot.com/
auto.waitFor();
if (!requestScreenCapture()) {
    toastLog('没有授予 Hamibot 屏幕截图权限');
    hamibot.exit();
}
sleep(1000);
var img = captureScreen();
// 寻找特定颜色的点
var p = images.findMultiColors(
    img,
    '#0052CC',
    [
        [5, 5, '#0052CC'],
        [10, 10, '#0052CC'],
    ]
);
if (p) {
    toastLog('找到坐标:' + p.x + ', ' + p.y);
    click(p.x, p.y);
}

4. 坐标适配(重要)

不同手机屏幕分辨率不同,直接写死坐标可能导致在其他设备上点击位置偏差。建议使用 setScreenMetrics() 设置脚本设计时的分辨率,Hamibot 会自动放缩坐标。

// 文档地址 https://docs.hamibot.com/
// 假设脚本是在 1080*1920 的设备上设计的
setScreenMetrics(1080, 1920);
// 此时点击 (800, 200),在 540*960 的屏幕上会自动缩放为 (400, 100)
click(800, 200);

注意事项

  1. Android 版本要求click(x, y) 等模拟触摸命令通常需要 Android 7.0 及以上版本。
  2. Root 权限:如果需要更底层的触摸控制(如 Tap()Swipe()),需要 Root 权限。这些函数首字母大写,且执行是异步非阻塞的,建议在函数后添加 sleep() 以确保动作完成。
  3. 控件不可点击:如果控件 clickable 为 false,无法直接使用 .click(),可以结合 bounds() 获取坐标后使用 click() 或 Root 权限下的 Tap() 进行点击。
ℹ️ 本回答由 AI 生成,内容仅供参考