针对跑酷类游戏进行虚拟输入控制的方法、装置及系统的制作方法_3

文档序号:9759627阅读:来源:国知局
数调用和宏)。通过使用HAL转换和间接硬件寻址,当移植到新的硬件上时,驱动程序和核心只需做很少的改动。移植HAL本身是直接的,因为所有的机器相关代码都集中在一个地方,并且移植的目标是充分定义的,即实现所有的HAL服务。本发明中,vinput是通过HAL转换将从通信连接中接收到的外部输入控制命令转变成Andro i d系统可理解的输入,这是对Andro i d中已有技术的创新应用。
[0099]可见,通过本发明提供的方法,通过在宿主操作系统上为跑酷类游戏配置按键信息与控制命令的对应关系,从而在用户输入按键信息后,将其对应的控制命令经处理后提供给虚拟操作系统,由虚拟操作系统进行处理并执行显示等。可见,能够针对跑酷类游戏进行特定按键的快速操作,非常方便,特别是通过按键与按压时间结合或多个按键结合,可产生适合于跑酷类游戏的操控命令,从而提升用户感受。
[0100]如前所述,上述步骤S101“宿主操作系统与虚拟操作系统之间建立通信连接”是本发明实现的一个前提。在现有技术中,一般是完全依赖VirtualBox实现宿主操作系统与虚拟操作系统之间的连通,然而,借助VirtualBox实现虚拟安卓系统至少存在以下问题:首先,由于VirtualBox虚拟机外挂不可定制,因此这对于一个希望自己定制外观的产品来说实际上就是不可接受的。其次,如果没有额外的输入控制优化组件,VirtualBox会将用户的鼠标活动范围锁定的在当前的虚拟机窗口上,并且对于andro i d这样的Gue st系统的输入控制实际上也并不流畅。也就是,VirtualBox将鼠标的活动范围锁定在当前窗口会很大程度上影响用户体验,并且对于不同的Guest系统并不能保证输入控制的顺畅。VirtualBox将鼠标的活动范围锁定在当前窗口是VirtualBox的产品策略所致。另外,由于VirtualBox是一个开源的通用虚拟机软件,可以在其上运行的操作系统也不仅限于Android,虽然VirtualBox可以为运行其中的Guest系统提供输入控制,但是由于Guest系统种类很多,所以不可能每一个达到非常良好的效果。其自身对Android的输入控制就不够流畅。因此,本发明提供一种宿主操作系统与虚拟操作系统之间连接的新方式。
[0101]本发明提出的一种建立宿主操作系统与虚拟操作系统之间连接的方式,尽可能减小对VirtualBox虚拟机的依赖,在有效改善用户体验的同时,保证良好的兼容性,并在技术上具有非常好的可扩展性。
[0102]参见图2,示出了建立宿主操作系统与虚拟操作系统之间的通信连接的流程。
[0103]S201:通过宿主操作系统中的模拟控制程序启动虚拟操作系统。
[0104]在启动虚拟操作系统之前,宿主操作系统与虚拟操作系统需要预先建立网络连接,可以由宿主系统对网络连接进行配置,例如,通过配置(增加)一个专门用来通信的虚拟网络连接,并使得宿主系统和虚拟系统在这个虚拟网络连接中连通。对于宿主操作系统与虚拟操作系统之间的网络连接,说明如下:I)这个虚拟网络连接可由VirtuaIBox提供;2)对虚拟网络配置在启动虚拟系统之前进行,是每次启动之前的例行操作,以保证宿主和虚拟系统网络连通;3)策略是,如果这个虚拟连接不存在,则可通过如VirtualBox的虚拟机创建一个新的虚拟连接;如果虚拟连接已创建或已存在,对连接参数(IP地址,网关等)进行配置,以保证宿主和虚拟系统连通。
[0105]在宿主操作系统与虚拟操作系统建立网络连接之后,由宿主操作系统中的模拟控制程序启动虚拟操作系统。
[0106]本发明中,模拟控制程序也称为player,具体实现中,可以在安卓模拟器实现该程序。如前所述的,虚拟操作系统一般运行在如VirtualBox的虚拟机中,因此,具体实现中,可以通过宿主操作系统中的player程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动虚拟操作系统。
[0107]S202:虚拟操作系统通过基础进程加载预定义脚本,从而将虚拟操作系统的IP地址提供给宿主操作系统,以及,通过基础进程启动虚拟输入服务进程。
[0?08]例如,虚拟机为VirtualBox虚拟机,虚拟操作系统是指Android系统。具体实现过程如下,首先,android系统通过其基础进程(init进程)加载预定义脚本(shell脚本),运行VirtualBox虚拟机的客户扩展组件,将android系统的IP地址写入VirtualBox虚拟机的客户属性;然后,宿主操作系统读取VirtualBox虚拟机的客户属性,获取android系统的IP地址。
[0109]本领域技术人员理解,在android系统中,内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以init始终是第一个进程(其进程编号始终为I)。本发明利用init进程来加载一个预定义功能的shell脚本,实现对VirtualBox虚拟机的客户扩展组件的控制。
[0110]其中,Shell脚本(She 11 Script)与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,由于使用了Linux/Unix下的命令,因此shell脚本比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更尚O
[0111]VirtualBox虚拟机的客户扩展组件(VirtualBox Guest Addit1ns),也称为客户端增强包,主要作用是为了增加:共享文件夹、无缝窗口、3D虚拟化显示。客户扩展组件是一堆软件包的集合,是运行在VirtualBox虚拟机内的,其目的在于,提升虚拟机的性能,增加和Host之间的交互性和通讯。可见,为了更好实现Host和Guest之间的互动,VirtualBox提供了Guest扩展组件。因此本发明中,在通信连接建立起来之前,通过Guest扩展组件提供的客户属性(guestproperty)机制将Guest的IP地址传给Host。
[ΟΙ12] init进程除了通过加载she 11脚本,将IP地址提供给Host之外,还在andro id系统中启动一个关键的虚拟输入服务进程,本发明中也称为Vinput进程。Vinput是本发明中为了达到控制Guest Android系统输入,而并放置于Android系统中的关键进程。通过init控制的方式,使得在android系统启动的同时保证vinput进程也被启动。
[0113]S203:宿主操作系统根据虚拟操作系统的IP地址,建立模拟控制程序与虚拟输入服务进程之间的连接。
[0114]具体的,可在虚拟操作系统的指定端口,由vinput进程建立与Player程序建立通信连接。
[0115]通过上述图2所示的方案,运行于Host系统的模拟器(S卩Player)获取到了 Android系统的IP地址,Host通过这个IP地址与Android中的vinput进程建立起通信连接,实际用户在Host系统的模拟器展现的窗口上看到Android系统实际运行的图像,并通过键盘八氧标在模拟器窗口上进行输入,模拟器将得到的用户输入数据经过转化之后,通过通信连接发送至Ij 了Android系统中的vinput进程,vinput进程则将这些输入数据转为对Android系统的实际控制。
[0116]如前所述的,现有技术中VirtualBox将鼠标的活动范围锁定在当前窗口会很大程度上影响用户体验,并且对于不同的Guest系统并不能保证输入控制的顺畅,VirtualBox将鼠标的活动范围锁定在当前窗口是VirtualBox的产品策略所致。而本发明所采用的方式将不再依赖VirtualBox的展现和输入控制方式,所以就不会受其弊端影响。另外,由于VirtualBox是一个开源的通用虚拟机软件,可以在其上运行的操作系统也不仅限于Android,虽然VirtualBox可以为运行其中的Guest系统提供输入控制,但是由于Guest系统种类很多,所以不可能每一个达到非常良好的效果,其自身对Android的输入控制就不够流畅,而本发明提出是输入控制方式是完全为Android定制的,可以达到非常流畅的体验。
[0117]本领域技术人员理解,尽管前面的技术描述都是以Host和Guest在同一台物理机器上为前提的,但是由于运行于Host的Player和运行于Guest的Android实际上的唯一联系是一个通信连接,所以只要是能够建立起这个通信连接就可以运用本发明的技术。因此,即使Player和Android运行在不同的物理机器上,也是可以进行虚拟输入控制的。
[0118]因此,在具体实现时,以上方法包括但不限于虚拟操作系统与宿主操作系统运行于同一操作性或同一物理PC机的情况,同样适用于虚拟操作系统运行于其它操作系统或其它物理PC机的情况;同理,以上方法包括但不限于虚拟操作系统以虚拟机形式运行的情况,同样适用于虚拟操作系统运行于实际物理设备的情况。
[0119]对于虚拟操作系统运行在虚拟机上的情况,请参见图3和图4。其中,图3示出了虚拟机运行在宿主操作系统所在的物理设备上的情形,即,虚拟机运行在宿主操作系统所在设备上、虚拟操作系统又运行在该虚拟机上,例如,Guest运行在VirtualBox上、VirtualBox运行在Host上。图4示出了虚拟机运行在与宿主操作系统所在物理设备不同的另一个物理设备上的情形,例如,宿主操作系统运行在第一设备(如:PCl)上,虚拟机运行在第二设备(如,PC2)上、虚拟操作系统又运行在该虚拟机上。
[0120]对于虚拟操作系统不依赖虚拟机而运行在与宿主操作系统所在物理设备相独立的另一个物理设备上的情况,请参见图5。图5示出了虚拟操作系统直接运行在与宿主操作系统所在物理设备不同的另一个物理设备上的情形,例如,宿主操作系统运行在第一设备(如:PC)上,虚拟操作系统运行在第二设备(如,手机)上。此处,要求第二设备是可直接运行操作系统的设备,例如智能手机。
[0121]可见,本发明提供的宿主操作系统与虚拟操作系统之间连接的方案具备在分布式环境下实施的能力。
[0122]下面从palyer程序、VirtualBox、Andro id三方交互的角度,对本发明另一个实施例提供的建立宿主操作系统与虚拟操作系统之间通信连接的流程进行说明。可以理解,该另一实施例采取的是图3所示的布局,即,VirtualBox运行在Host端,Android(Guest端)又运行在VirtualBox,其中,palyer程序是在Host端实现的,与Andro id中的vinput配合实现本发明主要功能的程序,可以在Andro id模拟器中实现。
[0123]因此,本发明的实现包括运行在宿主操作系统(Host)的模拟控制程序Player和运行虚拟android系统(Guest)的接收程序vinput,以及运行在虚拟机的android系统本身。
[0124](I)Player程序的逻辑
[0125]Player通过调用Virtual Box来启动Android系统;之后通过VirtualBox的guestproperty机制尝试获取Android系统的IP地址;在获取到An
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1