在android2.2版本上添加遥控器支持,这里遥控器跟电视机用的遥控器样子差不多,只不过比电视机的遥控器多出了几个定制的功能按钮。

点击遥控器上的切换键,当切换到鼠标模式下的时候在android视图上自绘一个类似鼠标的箭头,点击上下左右的时候可以让鼠标箭头上下左右移动。也可以在鼠标所在的位置触发鼠标左键类似确定键等功能。但如果遇到网页显示不全需要模拟拖拽操作来看那些没有显示完全的东西。这里就需要对模拟鼠标操作做一些处理,让遥控器也能够进行拖拽。

使用遥控器能够拖拽,在浏览网页以及玩游戏上就大有用处啦,比如用遥控器玩愤怒的小鸟等等。。。

主要对 WindowManagerService.java 文件进行修改,然后在进行模块化编译,最后在push到android系统中就可以使用了。

模拟拖拽就类似与,我们用手去操作触摸屏,当我们用手在屏幕上按下某处,然后滑动这时就产生了拖拽功能,我们就模拟此操作,就能完成我们想要的功能。

在遥控器上增加一个按键或者修改原按键为鼠标长按切换按键,当按一下时状态切换为长按,在按一下时状态为手松开或者左键弹起操作。

一个按键被按下会产生两个状态一个是Down一个是UP。在切换到鼠标模式下,然后截获按钮按下和抬起的操作。假如键值20是模拟鼠标长按状态的按键。增加标识符,当长按键被按下时先判断当前状态,如果为长按状态,则触发鼠标抬起操作,如果不为长按状态则触发鼠标长按状态。这里当切换到鼠标模式下,则要时刻记录当前鼠标箭头所在的坐标。当在长按状态下时,在执行上下左右移动时则模拟触发ACTION_MOVE 事件,然后对方才保存的坐标值进行x,y加减这样就能产生拖拽操作了。

说的有点啰嗦,但大致思路是这样。

上面说的拖拽功能已经测试实现,代码就不贴啦。。。 

posted on 2011-12-08 14:30  瓦楞球  阅读(10372)  评论(3编辑  收藏  举报