虛擬按鍵 振動效果

[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人爲的轉爲座標,然後在上報。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章