当前位置: 代码迷 >> Android >> android平台兑现MotionEvent,键盘事件模拟,资料共享
  详细解决方案

android平台兑现MotionEvent,键盘事件模拟,资料共享

热度:24   发布时间:2016-05-01 19:51:51.0
android平台实现MotionEvent,键盘事件模拟,资料共享

?

?需求来历:taskcity.com ?欲实现,蓝牙手柄控制游戏。?
详细需求如下:

1、?蓝牙游戏手柄与手机系统中虚拟按键的映射

1、?蓝牙游戏手柄为十个按键,上下左右四个方向键,两个菜单键,四个基本操作键,按键映射范围为可选,详细的映射需求为:

l?上下左右四个方向键映射范围为Android虚拟键盘中的ASDW与虚拟键盘中的四个方向键。

l?两个基本菜单键映射范围为Android系统中ESCENTER26个英文字母及键盘左边的09的数字键。

l?四个基本操作键映射范围为Android系统中的26个英文字母与键盘左边的09的数字键。

2、屏幕触摸区域的模拟映射

1、触摸区域的行为分类

l?拖动行为

l?点击行为

?

2、触摸区域的动作行为与按键映射

?

?要求触摸区域的某一触摸行为与虚拟键盘中的某个虚拟按键映射(如ASDW等),然后与蓝牙游戏手柄的实体按键进行映射(如蓝牙游戏手柄的上下左右按键)。

?

3、?软件界面UI与详细设置界面

1?软件基本菜单:

l?按键映射设置

n?蓝牙设备设置(具体可参照Android手机系统中的蓝牙设置)

n?按键模拟设置

u?10个按键为标准键,显示为:按键代码、按键设置,共10

?????按键代码:点击后按下蓝牙游戏手柄按键进行绑定。

?按键设置:设置相应的映射按键(如虚拟键盘中的26个英文字母)

n?触摸模拟设置

u?动作模拟1

选取动作(用于打开保存过的模拟行为,方便进行快速调用)

保存动作(用于保存某款游戏中的模拟设置,便于下次用户快速调用)

新建动作(新建动作的模拟行为,UI可参考贵方提供的UI设置界面)

启动新建动作后,运行中的游戏承半透明状态,相应设置按键为可拖动状态,防止影响触摸区域的触摸设置。进行触摸设置时,用户触摸过的游戏画面区域颜色承红色半透明变化,方便用户了解触摸区域的位置长度与面积等。

u?动作模拟2

选取动作(用于打开保存过的模拟行为,方便进行快速调用)

保存动作(用于保存某款游戏中的模拟设置,便于下次用户快速调用)

新建动作(新建动作的模拟行为,UI可参考贵方提供的UI设置界面)

启动新建动作后,运行中的游戏承半透明状态,相应设置按键为

可拖动状态,防止影响触摸区域的触摸设置。进行触摸设置时,

用户触摸过的游戏画面区域颜色承红色半透明变化,方便用户了

解触摸区域的位置长度与面积等。

u??特殊键(此键作用是为了解决一些游戏中拖动方向轴距离远近所产生的不同模拟效果,如游戏中拖动距离长,人物为跑动状态,拖动距离????????短,人物为走动状态。此项为可选启动状态)

特殊键为与方向键进行的组合键,作用为按住特殊键不动,再按蓝牙游戏手柄的方向键,映射的触摸行为为原来设定的方向触摸拖动距离的缩短,设置为滑糟式,由用户自定义缩短的比例,并且有对应的按键可选项,可选项为相应的四个基本操作键。

l?隐藏?(软件隐藏到后台)

l?保存?(此保存设置作用为软件下次调用后直接启用上次保存过的设置)

l?退出?(退出软件)

备注:软件界面UI与详细设置界面中的动作模拟1与动作模拟2为快速切换模拟参数设置,如:同一款游戏中可能会出现两种常用的触摸行为,类似罪恶都市这样的游戏,动作模拟1与动作模拟2可保存两种触摸行为模拟,使用时通过按蓝牙游戏手柄的某一菜单键进行快速切换。两种行为均为可选状态。


//end

Android模拟键盘和键盘监听的一些调研?? 挺好,基本上就是这个思路。市面上一些已经存在的,可以实现控制多数游戏模拟器达到基本需求,实现方式,就是通过继承InputMethodService,getCurrentInputConnection().sendKeyEvent,仅能模拟键盘。要正儿八经的实现模拟屏幕点击事件,跳不过android.permission.INJECT_EVENTS权限。 想想还有什么好的方式吗。非得逼着我们去研究内核吗。


android.view.IWindowManager
http://www.androidjavadoc.com/m5-rc15/android/view/IWindowManager.html#injectPointerEvent

(android.view.MotionEvent, boolean)

Android模拟按键——源码环境下开发应用程序
http://hi.baidu.com/zhouhanqing/blog/item/1bfbaec593f4b5a48326acc7.html

Android 模拟键盘鼠标事件
http://www.apkway.com/forum.php?mod=viewthread&tid=1847&extra=page%3D1

Android模拟键盘和键盘监听的一些调研?
http://www.eoeandroid.com/thread-57770-1-1.html

Installing .apk in system/app directory
http://stackoverflow.com/questions/5383401/android-inject-events-permission

Android开发中一些隐藏类的使用
http://blog.csdn.net/lxpspring/article/details/6561142

iphone,ipad手机平台按键映射程序项目要求
http://wwww.taskcity.com/p/120891
Android或IPHONE平台蓝牙游戏手柄的按键映射模拟程序
http://taskcitywww.taskcity.com/p/110307
  相关解决方案