基于Linux kernel 3.14版本移植安卓系统后触摸屏无法使用的问题
来源:互联网 发布:java解析xml文件实例 编辑:程序博客网 时间:2024/05/29 14:36
最近在自家的SOC上移植安卓系统,kernel版本使用3.14,android版本使用4.0.3。
移植后发现触摸屏无法使用,而安卓输入子系统的源码是没有改过的。通过跟踪触摸屏上报事件的整个流程和机制发现,是因为触摸时间的时间格式和安卓系统使用的时间格式不兼容导致,由于上报的触摸事件时间戳太滞后,导致输入子系统没有及时收到应用程序的应答,导致系统产生了ANR。究其根本原因,发现是3.14的kernel的input子系统在往buffer存数据时获取时间的接口调用不当导致的。
此问题很隐蔽,如果不是对整个流程很清楚,不是很好查,所以将此问题的解决方法记录下来。
evdev.c
static void evdev_pass_values(......)
修改前:
event.time = ktime_to_timeval(client->clkid == CLOCK_MONOTONIC ?
mono : real);
修改后:
struct timespec ts;
ktime_get_ts(&ts);
event.time.tv_sec = ts.tv_sec;
event.time.tv_usec = ts.tv_nsec / NSEC_PER_USEC;
1 0
- 基于Linux kernel 3.14版本移植安卓系统后触摸屏无法使用的问题
- OK6410 解决Qt移植后触摸屏不能使用、鼠标无法移动问题
- Fs2410上基于linux触摸屏的移植
- Android移植4.0后 触摸屏无法使用解决方案
- 升级ubunt kernel后virtualBox无法使用的问题
- 基于FL2440的Linux-2.6.35内核移植--触摸屏
- 移植linux内核到s3c6410(kernel 打印:Uncompressing Linux ... done , booting the kernel.后无响应问题的解决。)
- Mac OSX 10.10 版本后 Homebrew 无法使用的问题
- 基于fl2440内核linux-3.0移植----触摸屏移植
- ARM-Linux触摸屏驱动移植--问题总结
- ARM-Linux触摸屏驱动移植--问题总结
- 基于ARM9的嵌入式Linux系统移植
- 基于FS4412平台的Linux系统移植
- 安卓系统无法自动对时的问题
- Android系统触摸屏移植后出现小圆圈
- 基于beagleboard-xm的触摸屏移植和Qt4.6.2移植
- 安卓Studio更新版本后无法导入以前的项目
- linux中安装pip后无法使用的问题
- 深度学习资料链接整理
- 鸡汤一碗 与君共勉
- web图表---Highcharts使用指南
- Spring中的ContextLoaderListener作用
- cocos2d-x 以主角为中心移动地图(学习笔记)
- 基于Linux kernel 3.14版本移植安卓系统后触摸屏无法使用的问题
- 修改SELinux状态
- 防表单重复提交
- Android中很多界面的顶部都有相同类似的布局,我们怎么设置呢?
- 通过/proc/pid./status查看进程信息
- android开发游记:APP内部调启百度、高德、web地图导航
- 【数据结构与算法】二叉树递归与非递归遍历(附完整源码)
- arm移植libiconv(字符编码转换)
- 一种异常处理的方法、装置和软件系统