基于安卓设备的虚拟手柄控制方法及存储介质与流程

文档序号:33620310发布日期:2023-03-25 11:20阅读:59来源:国知局
基于安卓设备的虚拟手柄控制方法及存储介质与流程

1.本发明涉及虚拟手柄技术领域,尤其涉及一种基于安卓设备的虚拟手柄控制方法及存储介质。


背景技术:

2.物理游戏手柄对于安卓终端来说是容易使用的,但以手机作为虚拟游戏手柄更能提高用户使用的便捷性,这是由于用户不必再单独采购游戏手柄设备就可以体验游戏操控。虚拟手柄技术就是以手机作为控制端设备,将操作键码传递给接收端设备的一种技术。近些年来应用市场上也出现过许多虚拟手柄的应用,但这些应用比较常见的都是以蓝牙连接通信,容易响应卡顿或掉线,并且多数只能支持单个玩家的操作,不支持多人联机互动,用户体验非常差。


技术实现要素:

3.本发明所要解决的技术问题是:提供一种基于安卓设备的虚拟手柄控制方法及存储介质,可实现多人联机互动,且玩家之间对各自对应的虚拟手柄设备的操控互不干扰。
4.为了解决上述技术问题,本发明采用的技术方案为:一种基于安卓设备的虚拟手柄控制方法,包括:
5.第一设备创建至少一个的虚拟手柄设备,并分别配置各虚拟手柄设备的设备信息,所述设备信息包括虚拟手柄设备名称、虚拟手柄设备支持的事件类型以及键码映射关系,所述键码映射关系为虚拟手柄设备支持的键码与事件键值的关联关系;
6.接收第二设备发送的虚拟手柄设备绑定请求,所述虚拟手柄设备绑定请求包括虚拟手柄设备名称;
7.将所述第二设备与所述虚拟手柄设备绑定请求中的虚拟手柄设备名称对应的虚拟手柄设备进行绑定,并将绑定结果反馈至所述第二设备;
8.接收所述第二设备发送的虚拟手柄设备事件分发请求,所述虚拟手柄设备事件分发请求包括事件键值;
9.根据所述第二设备绑定的虚拟手柄设备的键码映射关系,获取所述事件键值对应的键码,并响应所述对应的键码。
10.本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如上所述的方法的步骤。
11.本发明的有益效果在于:通过在第一设备上创建多个虚拟手柄设备,并分别与多个第二设备一一对应地进行绑定,玩家可分别通过各自的第二设备实现事件分发,使得多个玩家能够互不干扰地控制绑定的虚拟手柄设备进行游戏控制,极大提升了家庭娱乐等场景的联机性与趣味性。
附图说明
12.图1为本发明的一种基于安卓设备的虚拟手柄控制方法的流程图;
13.图2为本发明实施例一的方法流程图。
具体实施方式
14.为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
15.请参阅图1,一种基于安卓设备的虚拟手柄控制方法,包括:
16.第一设备创建至少一个的虚拟手柄设备,并分别配置各虚拟手柄设备的设备信息,所述设备信息包括虚拟手柄设备名称、虚拟手柄设备支持的事件类型以及键码映射关系,所述键码映射关系为虚拟手柄设备支持的键码与事件键值的关联关系;
17.接收第二设备发送的虚拟手柄设备绑定请求,所述虚拟手柄设备绑定请求包括虚拟手柄设备名称;
18.将所述第二设备与所述虚拟手柄设备绑定请求中的虚拟手柄设备名称对应的虚拟手柄设备进行绑定,并将绑定结果反馈至所述第二设备;
19.接收所述第二设备发送的虚拟手柄设备事件分发请求,所述虚拟手柄设备事件分发请求包括事件键值;
20.根据所述第二设备绑定的虚拟手柄设备的键码映射关系,获取所述事件键值对应的键码,并响应所述对应的键码。
21.从上述描述可知,本发明的有益效果在于:通过虚拟手柄设备将两个完全独立的设备(第一设备和第二设备)进行连接,或者将多个完全独立的第二设备与一个第一设备进行连接,摆脱了连接线的束缚,同时,虚拟手柄设备能够将玩家对第二设备的操作所产生的信号(如触摸信号)转换成第一设备驱动级的手柄信号,使虚拟手柄实现真实的手柄功能,从而可实现多人联机互动,且玩家之间对各自对应的虚拟手柄设备的操控互不干扰。
22.进一步地,所述第一设备创建至少一个的虚拟手柄设备,并分别配置各虚拟手柄设备的设备信息之前,进一步包括:
23.将第一设备配置为接收端,所述第一设备为安卓设备。
24.进一步地,所述将第一设备配置为接收端具体为:
25.将第一设备的设备类型配置为接收端;
26.开启wifi直连功能;
27.开启会话功能;
28.配置控制端口;
29.配置所述第一设备处于可发现状态。
30.由上述描述可知,为了让第一设备与第二设备通过点对点方式进行数据传输,需将第一设备配置为接收端。
31.进一步地,所述接收第二设备发送的虚拟手柄设备绑定请求之前,进一步包括:
32.第一设备监听各第二设备的连接请求;
33.当接收到一第二设备的连接请求时,与所述一第二设备建立点对点连接,并将第一设备的ip地址发送至所述一第二设备,以使第一设备和所述一第二设备通过web套接字
进行通信。
34.由上述描述可知,第一设备和第二设备以点对点方式进行通信,可避免掉线或响应卡顿的情况,提高用户体验。
35.进一步地,所述接收第二设备发送的虚拟手柄设备绑定请求之后,进一步包括:
36.若不存在所述虚拟手柄设备绑定请求中的虚拟手柄设备名称对应的虚拟手柄设备,则创建所述虚拟手柄设备名称对应的虚拟手柄设备,并配置所述虚拟手柄设备的设备信息。
37.由上述描述可知,保证第二设备可绑定到其请求的虚拟手柄设备。
38.进一步地,所述根据所述第二设备绑定的虚拟手柄设备的键码映射关系,获取所述事件键值对应的键码,并响应所述对应的键码具体为:
39.第一设备根据所述第二设备绑定的虚拟手柄设备的键码映射关系,获取所述事件键值对应的键码;
40.通过io读写功能将所述对应的键码写入第一设备的输入系统中;
41.第一设备的系统响应所述对应的键码。
42.由上述描述可知,通过获取对应的键码并响应,以完成控制。
43.进一步地,所述事件类型包括同步事件、按键事件、绝对坐标事件以及其他事件;
44.所述键码包括按键键码和绝对坐标键码;所述按键键码包括手柄的按键a的键码、按键b的键码、按键x的键码、按键y的键码、选择键的键码、开始键的键码、左方向键的键码、右方向键的键码、上方向键的键码、下方向键的键码、返回键的键码以及辅助按键的键码;所述绝对坐标键码包括手柄摇杆x轴的绝对坐标的键码和手柄摇杆y轴的绝对坐标的键码。
45.进一步地,所述第一设备为电视或投影仪,所述第二设备为手机或平板电脑。
46.由上述描述可知,第一设备和第二设备均可通过安卓设备实现,具备一定的便携性和可移植性。
47.本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如上所述的方法的步骤。
48.实施例一
49.请参照图2,本发明的实施例一为:一种基于安卓设备的虚拟手柄控制方法,可应用于对虚拟游戏手柄的控制,如图2所示,包括如下步骤:
50.s1:将第一设备配置为接收端,其中,第一设备可以为电视、投影仪等android设备。
51.本实施例中,接收端与控制端以点对点方式(wifi direct)进行数据传输,这种方式是一种一对多的方式,接收端必须配置为sink端。
52.具体地,通过wifip2pwfdinfo配置wifip2pwfdinfo.primary_sink参数,将配置信息写入到wifip2pmanager并将设备启用,最后配置第一设备处于可发现状态(discoverpeers)以供控制端(第二设备)搜索并连接。
53.其中,具体配置如下:
54.devicetype-》wifip2pwfdinfo.primary_sink,代表当前设备为sink端(接收端);
55.wfdenabled-》true,代表开启wifi direct(wifi直连)功能;
56.sessionavailable-》true,代表会话允许,即开启会话功能;
57.controlport-》7236,代表控制端口,即配置控制端口为7236。
58.进一步地,部分机型还可进行以下配置:
59.realtek_setup_miracast_sink_connection_reminder_on-》1,代表rt平台下自动响应来自控制端的连接请求,即开启自动确定绑定。
60.s2:第一设备监听各第二设备的连接请求。本实施例中,第二设备可为用户终端,如手机、平板电脑等,第二设备也可以为android设备。
61.第一设备通过web套接字(websocket)功能实现事件接收服务,监听来自控制端的连接。
62.s3:当接收到第二设备的连接请求时,与所述第二设备建立点对点连接,并将第一设备的ip地址发送至所述一第二设备,以使第一设备和所述第二设备通过web套接字进行通信。
63.作为控制端的第二设备在发现并连接作为接收端的第一设备后,接收端将作为主机,此时控制端便能够以主机ip(通常情况下,默认ip为192.168.43.1)去连接接收端的websocket服务,通过web套接字进行通信。
64.进一步地,控制端接入接收端时,接收端缓存控制端的设备信息,且后续支持响应各个控制端的绑定请求和事件分发请求等。
65.步骤s2-s3与步骤s4可不分先后执行。
66.s4:第一设备创建至少一个的虚拟手柄设备,并分别配置各虚拟手柄设备的设备信息。
67.具体地,首先,通过uinput_user_dev配置虚拟手柄设备的设备信息,虚拟手柄设备的设备信息包括虚拟手柄设备名称、虚拟手柄设备支持的事件类型以及键码映射关系,所述键码映射关系为虚拟手柄设备支持的键码与事件键值的关联关系。
68.其中,虚拟手柄设备支持的事件类型通过ioctl分别配置ui_set_evbit参数为:ev_syn、ev_key、ev_msc、ev_abs,代表其支持按键与坐标的事件;虚拟手柄设备支持的键码则通过ioctl分别配置ui_set_keybit(按键键码)和ui_set_absbit(绝对坐标键码)参数。
69.最后通过ioctl配置ui_dev_create参数以完成虚拟手柄设备的创建,此时在第一设备的/dev/input路径下便会存在所创建的虚拟手柄设备的节点,同时在/proc/bus/input/devices下也能够查看到虚拟手柄设备的设备信息。
70.进一步地,对于事件类型的配置,即ui_set_evbit的配置,各参数所代表的含义如下:
71.ev_syn:0x00,表示同步事件;
72.ev_key:0x01,表示按键事件,如key_volumedown;
73.ev_msc:0x04,表示其他事件;
74.ev_abs:0x03,表示绝对坐标事件,如触摸屏的坐标。
75.上述都是linux系统中输入设备的事件类型,也是android系统的,比如键盘所支持的输入事件类型就包括ev_key。
76.对于虚拟手柄设备支持的键码,包括ui_set_keybit(按键键码)和ui_set_absbit(绝对坐标键码),其每个参数所代表的含义如下:
77.1、ui_set_keybit(按键键码)
78.btn_a:0x130,游戏手柄的按键a;
79.btn_b:0x131,游戏手柄的按键b;
80.btn_x:0x133,游戏手柄的按键x;
81.btn_y:0x134,游戏手柄的按键y;
82.btn_select:0x13a,游戏手柄的选择键;
83.btn_start:0x13b,游戏手柄的开始键;
84.btn_dpad_left:0x222,游戏手柄的左方向键;
85.btn_dpad_right:0x223,游戏手柄的右方向键;
86.btn_dpad_up:0x220,游戏手柄的上方向键;
87.btn_dpad_down:0x221,游戏手柄的下方向键;
88.btn_back:0x116,游戏手柄的返回键;
89.btn_thumbl、btn_thumbr、btn_right、btn_left:部分3d游戏的辅助按键;
90.2、ui_set_absbit(绝对坐标键码)
91.abs_x:0x00,游戏手柄摇杆x轴的绝对坐标;
92.abs_y:0x01,游戏手柄摇杆y轴的绝对坐标;
93.根据上述对键码的配置,即可得到键码映射关系。
94.s5:接收所述第二设备发送的虚拟手柄设备绑定请求,所述虚拟手柄设备绑定请求包括虚拟手柄设备名称。
95.进一步地,若不存在所述虚拟手柄设备绑定请求中的虚拟手柄设备名称对应的虚拟手柄设备,即所述第二设备要绑定的虚拟手柄设备还未创建,则通过uinput及ioctl功能创建所述虚拟手柄设备名称对应的虚拟手柄设备,并配置所述虚拟手柄设备的设备信息,配置过程可参照步骤s4。
96.s6:将所述第二设备与所述虚拟手柄设备绑定请求中的虚拟手柄设备名称对应的虚拟手柄设备进行绑定,并将绑定结果反馈至所述第二设备。
97.s7:接收所述第二设备发送的虚拟手柄设备事件分发请求,所述虚拟手柄设备事件分发请求包括事件键值。
98.具体地,预先在第二设备的页面上实现具体的操控界面(包含上下左右、摇杆、abxy、选择、开始等控件),玩家可直接在第二设备上操控,第二设备监听对应控件的输入时间,并将对应的键值发送给第一设备。此时,相当于将第二设备(如手机)作为游戏手柄进行游戏操控。
99.s8:根据所述第二设备绑定的虚拟手柄设备的键码映射关系,获取所述事件键值对应的键码,并响应所述对应的键码。
100.具体地,第一设备根据所述第二设备绑定的虚拟手柄设备的键码映射关系,获取所述事件键值对应的键码,例如,假设事件键值为btn_a,则对应的键码为0x130。然后通过io读写功能将所述对应的键码写入第一设备的输入系统中,即虚拟手柄设备所在的节点(如:/dev/input/event1);第一设备的系统(即android系统)读取到该节点的输入并响应输入的键码,以完成控制。
101.本实施例中,接收端与控制端均通过android设备实现,具备一定的便捷性和可移植性。不同的第二设备可分别绑定第一设备中不同的虚拟手柄设备,多个玩家可分别操控
自己的第二设备,第一设备支持响应多个虚拟手柄设备,从而可实现多人联机互动,且多个玩家可互不干扰地控制绑定的虚拟手柄设备进行游戏控制,极大提升了家庭娱乐等场景的联机性与趣味性。同时,第一设备和第二设备以点对点方式进行信号传输,具备通信延时低、响应速度快的特点,在实际使用过程中可避免掉线等现象导致的键码处理不及时的情况。
102.实施例二
103.本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的基于安卓设备的虚拟手柄控制方法实施例中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
104.综上所述,本发明提供的一种基于安卓设备的虚拟手柄控制方法及存储介质,通过在第一设备上创建多个虚拟手柄设备,并分别与多个第二设备一一对应地进行绑定,玩家可分别通过各自的第二设备实现事件分发,使得多个玩家能够互不干扰地控制绑定的虚拟手柄设备进行游戏控制,极大提升了家庭娱乐等场景的联机性与趣味性;第一设备和第二设备以点对点方式进行信号传输,具备通信延时低、响应速度快的特点,在实际使用过程中可避免掉线等现象导致的键码处理不及时的情况。
105.以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1