android系统,点击屏幕,输出x y坐标小脚本

更新多屏幕识别坐标功能
# -*- coding: utf-8 -*-
# @Time  :  3:06 PM
# @Athor : WuHe
# @File  : FindDisplayPix.py

import os
import time

# 前提条件:电脑可以正常使用adb命令
def read_wm_size():
    fun = os.popen('adb shell wm size')
    fun_read = fun.readline()
    wm_xy = fun_read.split(':')[1].strip().split('x')
    wm_x = int(wm_xy[0])
    wm_y = int(wm_xy[1])
    print('屏幕物理尺寸的x:', wm_x)
    print('屏幕物理尺寸的y:', wm_y)
    return wm_x, wm_y


def read_getevent():
    fun = os.popen('adb shell getevent -c 10')
    #fun = os.popen('adb shell getevent')
    print('请点击需要读取的屏幕位置')
    fun_read = []  # is list
    while fun_read == []:
        fun_read = fun.readlines()
        time.sleep(0.1)
    # print(fun_read)

    # to string
    str = ''.join(fun_read)
    # print(str)
    get_x_position = str.find('0035')
    get_x = str[get_x_position + 5:get_x_position + 5 + 8]
    get_y_position = str.find('0036')
    get_y = str[get_y_position + 5:get_y_position + 5 + 8]
    # to DEC
    dec_x = int(get_x.upper(), 16)
    dec_y = int(get_y.upper(), 16)
    print('点击的点的像素x:', dec_x)
    print('点击的点的像素y:', dec_y)
    # print('35 and 36:',get_x_position,get_y_position)
    # /dev/input/event2
    get_device_35_36_str = str[get_x_position + 5 + 9:get_y_position - 7]
    #print('between 35-36:', get_device_35_36_str)

    get_device_index = str.find(get_device_35_36_str)
    get_device_name = str[get_device_index-14:get_device_index-2].strip()
    #print('device name:', get_device_name)

    return dec_x, dec_y, get_device_name


def get_max():
    dec_x, dec_y, get_device_name = read_getevent()
    #print('1111:', get_device_name)
    # get_device_name='add device 2'

    fun = os.popen('adb shell getevent -p')
    fun_read = fun.readlines()

    str = ''.join(fun_read)

    get_mark = str.find(get_device_name)

    mark_str = str[get_mark:]
    # print(mark_str)

    get_x1_position = mark_str.find('0035')
    get_x2_position = mark_str.find('0036')
    get_x1 = mark_str[get_x1_position + 4:get_x2_position]
    get_x1_max = get_x1[get_x1.find('max'):]
    get_x1_max_1 = get_x1_max.find(',')  # get_x1_max_1=8
    get_x_max = int(get_x1_max[3:get_x1_max_1].strip())+1
    print('屏幕像素点最大值x:', get_x_max)

    get_y1_position = mark_str.find('0036')
    get_y2_position = mark_str.find('0039')
    get_y1 = mark_str[get_y1_position + 4:get_y2_position]
    get_y1_max = get_y1[get_y1.find('max'):]
    get_y1_max_1 = get_y1_max.find(',')  # get_x1_max_1=8
    get_y_max = int(get_y1_max[3:get_y1_max_1].strip())+1
    print('屏幕像素点最大值y:', get_y_max)
    return get_x_max, get_y_max,dec_x, dec_y



if __name__ == '__main__':
    # 计算公式:(touch_size * wm_size / max)
    wm_x, wm_y = read_wm_size()
    get_x_max, get_y_max,dec_x, dec_y= get_max()
    #dec_x, dec_y ,get_device_name= read_getevent()
    x = int(dec_x * wm_x / get_x_max)
    y = int(dec_y * wm_y / get_y_max)

    print('x 坐标是: ', x)
    print('y 坐标是: ', y)
View Code

 

posted @ 2022-01-24 17:07  再次路过之  阅读(127)  评论(0编辑  收藏  举报