虚拟按键 振动效果

[DESCRIPTION]
Setting->情景模式->使能振动选项,TP虚拟按键无振动效果

[SOLUTION]
修改tp driver中对于虚拟按键在normal mode下的上报方式为坐标上报,如果直接在TP driver中去上报key, android framework不会走振动的流程,此时如果想要实现虚拟按键振动,可以修改PhoneWindowManager.java 中 interceptKeyBeforeQueueing方法里添加 if (down && ((keyCode == KeyEvent.KEYCODE_HOME)||(keyCode == KeyEvent.KEYCODE_MENU)||(keyCode == KeyEvent.KEYCODE_BACK))){
performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false);
} 处理。

对于虚拟按键,只要以坐标形式上报并且在tpd_custom_xxx.h中配置好虚拟按键的坐标范围,Android framework会自动进行振动处理。


在TouchPanel的driver中,如果虚拟按键是以 input_report_key(tpd->kpd, key_code, key_val);方式上报key值,是不会有触感的。
如果虚拟按键是以坐标形式上报,如下所示:
input_report_abs(tpd->dev, ABS_MT_POSITION_X, x);
input_report_abs(tpd->dev, ABS_MT_POSITION_Y, y);
上报的,就会有触感。



把虚拟按键以坐标的形式上报。
1,TPD_HAVE_BUTTON宏要打开:#define TPD_HAVE_BUTTON

2,定义按键的坐标位置(具体定义,可以参考 FAQ03862 --电容屏客制化文件vitual key的配置)
#define TPD_BUTTON_HEIGH 100
#define TPD_KEY_COUNT 3
#define TPD_KEYS { KEY_MENU, KEY_HOME,KEY_BACK}
#define TPD_KEYS_DIM {{80,850,160,TPD_BUTTON_HEIGH},{240,850,160,TPD_BUTTON_HEIGH},{400,850,160,TPD_BUTTON_HEIGH}}

3, 从TouchPanel中读到的虚拟按键数据有两种,一种是key值(1,2,3),另一种是报的坐标值((x,y));
如果读出的虚拟按键值为坐标,那直接按TouchPanel报坐标点的方式上报就OK了。
如果是key值,那就需要把key人为的转为坐标,然后在上报。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值