Android TP方向调试

这篇具有很好参考价值的文章主要介绍了Android TP方向调试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、问题描述

        拿到一款新TP,适配好驱动后,触摸屏幕发现触摸点位置和Android报点位置不一致,如上滑变成下滑或者左滑右滑等

二、问题分析

1.加载TP驱动,且驱动能正确上报数据

2.使用命令打开触摸报点

settings put system show_touches 1
settings put system pointer_location 1

3.触摸屏幕 

        出现这种问题可能是由于TP IC里的配置,或者TP贴片方向和屏幕方向不一致等情况导致的,这种情况下,我们需要对TP做一个方向的适配

三、解决办法

1.dts配置

dts中的方向配置如下:

ctp {
        compatible = "allwinner,goodix";
        reg = <0x5d>;
        device_type = "ctp";
        ctp_screen_max_x = <0x4B0>;
        ctp_screen_max_y = <0x780>;
        ctp_revert_x_flag = <0x1>;
        ctp_revert_y_flag = <0x1>;
        ctp_exchange_x_y_flag = <0x0>;
};

其中

  • ctp_screen_max_x:TP上报最大X值
  • ctp_screen_max_y:TP上报最大Y值
  • ctp_revert_x_flag:是否需要翻转x,使x=-x
  • ctp_revert_y_flag:是否需要翻转y,使y=-y
  • ctp_exchange_x_y_flag:是否需要交换xy,主要这个会同步的交换max_x和max_y

2.在代码中获取配置并做逻辑操作

1.获取dts配置的参考方法

ret = of_property_read_u32(np, "ctp_screen_max_x", &data->screen_max_x);
ret = of_property_read_u32(np, "ctp_screen_max_y", &data->screen_max_y);
ret = of_property_read_u32(np, "ctp_revert_x_flag", &data->revert_x_flag);
ret = of_property_read_u32(np, "ctp_revert_y_flag", &data->revert_y_flag);
ret = of_property_read_u32(np, "ctp_exchange_x_y_flag", &data->exchange_x_y_flag);

其中,of_property_read_u32是内核标准函数,np是设备节点,data是存放dts数据的结构体

2.使用配置
(1)使用变量保存配置,congfig_info为刚才获取的dts配置信息

static int screen_max_x;
static int screen_max_y;
static int revert_x_flag;
static int revert_y_flag;
static int exchange_x_y_flag;

screen_max_x = config_info.screen_max_x;
screen_max_y = config_info.screen_max_y;
revert_x_flag = config_info.revert_x_flag;
revert_y_flag = config_info.revert_y_flag;
exchange_x_y_flag = config_info.exchange_x_y_flag;

if(exchange_x_y_flag == 1)
        swap(screen_max_x, screen_max_y);

(2)使用配置
在上报xy报点的位置前,参考使用如下命令

if (exchange_x_y_flag == 1)
        swap(x, y);

if (revert_x_flag == 1)
        x = screen_max_x - x;

if (revert_y_flag == 1)
        y = screen_max_y - y;
		

3.进行方向适配

1、进行方向适配前,首先要明确xy分别对应哪条边,通常而言,x为屏幕0度角方向的边,通过该命令获取0度角方向。
旋转屏幕,同时输入如下命令,当获取到mCurrentOrientation=0时,则说明该方向对应的底边为x,另一边为y

dumpsys display | grep mCurrentOrientation

2、以800x1280的屏幕为例,先设置max_x和max_y都为1280;并将revert_x,revert_y和exchange_xy设置为0

3、观察屏幕触摸方向,对TP进行左右滑动,和上下滑动,看是否跟手滑动的方向一致

适配步骤:

(1)如左滑变成了上下滑,那说明需要交换xy,设置exchange_xy为1,继续观察
(2)如左滑变成了右滑,则说明可能需要revert_x,设置revert_x为1,继续观察
(3)如上滑变成了下滑,则说明可能需要revert_y,设置revert_y为1,继续观察
(4)部分情况下,23可能需要互换,即左滑变右滑需要设置revert_y,这种灵活变通即可
(5)通过1-4步骤后,可得到对应的xy配置,此时触摸滑动时,应该跟手滑动的方向一致,再来调试max_x和max_y
(6)尝试设置max_x=1280和max_y=800,观察,如果不行,则交换一下xy的值,此时一般来说,触摸基本就可以调试完成了

总结:先调试exchange_xy,再调试revert值,最后再来调试max值。文章来源地址https://www.toymoban.com/news/detail-822198.html

到了这里,关于Android TP方向调试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • android 监听webview 滑动方向以及是否滑动到顶部、底部

    判断webview 滑动方向,老生常谈的问题,再次提及。 监听webview是否滑动到底部、顶部,可以通过重新webview的onScrollChanged()或者onTouchEvent()判断。 其中通过重写onTouchEvent()可以判断出webview的滑动方向。 判断是否滑动到底部,是通过判断webview的高度与当前webview的高度做

    2024年02月15日
    浏览(35)
  • [RK3588 Android12]设置屏幕方向、分辨率和密度

    修改device/rockchip/common/BoardConfig.mk SF_PRIMARY_DISPLAY_ORIENTATIO参数值 在控制台输入 wm size 1920x1080 或 修改device/rockchip/rk3588/rk3588_s/rk3588_s.mk 增加PRODUCT_PROPERTY_OVERRIDES += ro.config.size_override参数值 在控制台输入 wm density 240 或 修改device/rockchip/rk3588/rk3588_s/rk3588_s.mk 修改PRODUCT_PROPERTY_OVERRI

    2024年02月15日
    浏览(60)
  • 【SA8295P 源码分析】66 - Android 侧内核层 TouchScreen Panel(TP)触摸屏驱动源码分析

    【源码分析】 因为一些原因,本文需要移除, 对于已经购买的兄弟,不用担心,不是跑路, 我会继续持续提供技术支持, 有什么模块想学习的,或者有什么问题有疑问的, 请私聊我,我们 +VX 沟通技术问题,一起学习,一起进步 接下来,我一一私聊已经购买的兄弟添加V

    2024年02月11日
    浏览(62)
  • 【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常

    ST的传感器驱动与HAL一直成功后,能拿到数据了,但是设备是横屏,系统默认是竖屏。就会出现屏幕自动转动时方向是错的的情况,设备横立展示的是竖屏,设备竖立展示的是横屏。 这个是PCB上设计的传感器贴片方向和横屏不一致导致的,只需要在HAL层旋转矩阵就行。利用地

    2024年02月11日
    浏览(40)
  • Android(安卓) 无线ADB调试手机(WiFi 调试、蓝牙调试)

    1. 手机和电脑连接同一局域网(连同一个 WiFi、手机开热点电脑连接、电脑开热点手机连接) 2.手机打开USB调试模式 3. 查找你需要连接的Android(安卓)设备的ip (方式一)手机开热点电脑连接(手机分享蓝牙网络给电脑连接): 1)电脑打开cmd窗口(win+R) 输入: 2)在cmd里面输入:

    2024年02月09日
    浏览(74)
  • android获取屏幕分辨率的正确方法;获取到分辨率(垂直方向像素)的不正确

    我通过下面的方法去获取屏幕分辨率的,但获取到的分辨率有时会不准确。原因是此方法有时候会忽略一些布局或控件的高度,从而得不到正确的高度。 而通过另外一个方法则没有上述那种问题,可以获取到正确的屏幕分辨率。

    2024年02月14日
    浏览(57)
  • Android开发音视频方向学习路线及资源分享,学完还怕什么互联网寒冬?

    好了,回归正题。 光看大纲,大家都知道要学习音视频录制,编码,处理,但是具体不知道怎么做,也不知道怎么入门。我自己在入门的时候也一样,靠着搜索引擎自己一点一点的积累,在这里当然要谢谢在该领域无私奉献的大佬们。所以在这里,我会对知识进行细化,运用

    2024年04月11日
    浏览(54)
  • android不可不知调试技巧

    目录 1、条件断点 2、评估表达式(Evaluate Expression) 3、日志断点 4、方法断点 5、异常断点 6、Field WatchPoint 假设我们列表循环的某个元素时候才暂停,就用这种方式。具体方式在循环列表打断点,对着断点右键一下,然后会弹出有一行填写condition的,这里就填写条件即可,如

    2023年04月26日
    浏览(41)
  • android studio无线调试

    1,版本:Android Studio Electric Eel | 2022.1.1 手机系统需为android11或以上 2,在android studio的device manager那里选择 pair devices using wifi(pair using wifi),会出现一个二维码 3,在手机开发者选项中打开无线调试,然后选择扫码添加,扫描刚才的二维码,即可配对成功,然后在开发者选项中,

    2024年02月13日
    浏览(42)
  • Android studio调试

      Android Studio连接手机详细教程(包含遇到的问题集)_android studio 连接手机-CSDN博客 可以创建虚拟机或直连真机或直连模拟器。  无法打开本地终端 Android studio Failed to start [powershell.exe] 利用Android studio的adb命令删除app应用 - 简书 利用ADB工具免root停用Android系统应用 - 知乎 Andro

    2024年01月18日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包