利用移动终端对虚拟输入进行控制的方法、装置及系统的制作方法_3

文档序号:9787253阅读:来源:国知局
升虚拟机的性能,增加和Host之间的交互性和通讯。可见,为了更好实现Host和Guest之间的互动,VirtualBox提供了Guest扩展组件。因此本发明中,在通信连接建立起来之前,通过Guest扩展组件提供的客户属性(guestproperty)机制将Guest的IP地址传给Host。
init进程除了通过加载she 11脚本,将IP地址提供给Host之外,还在android系统中启动一个关键的虚拟输入服务进程,本发明中也称为Vinput进程。Vinput是本发明中为了达到控制Guest Android系统输入,而并放置于Android系统中的关键进程。通过init控制的方式,使得在android系统启动的同时保证vinput进程也被启动。
[0103]S203:宿主操作系统根据虚拟操作系统的IP地址,建立模拟控制程序与虚拟输入服务进程之间的连接。
[0?04]具体的,可在虚拟操作系统的指定端口,由vinput进程建立与Player程序建立通信连接。
[0105]通过上述图2所示的方案,运行于Host系统的模拟器(S卩Player)获取到了 Android系统的IP地址,Host通过这个IP地址与Android中的vinput进程建立起通信连接,实际用户在Host系统的模拟器展现的窗口上看到Android系统实际运行的图像,并通过键盘八氧标在模拟器窗口上进行输入,模拟器将得到的用户输入数据经过转化之后,通过通信连接发送至Ij 了Android系统中的vinput进程,vinput进程则将这些输入数据转为对Android系统的实际控制。
[0106]如前所述的,现有技术中VirtualBox将鼠标的活动范围锁定在当前窗口会很大程度上影响用户体验,并且对于不同的Guest系统并不能保证输入控制的顺畅,VirtualBox将鼠标的活动范围锁定在当前窗口是VirtualBox的产品策略所致。而本发明所采用的方式将不再依赖VirtualBox的展现和输入控制方式,所以就不会受其弊端影响。另外,由于VirtualBox是一个开源的通用虚拟机软件,可以在其上运行的操作系统也不仅限于Android,虽然VirtualBox可以为运行其中的Guest系统提供输入控制,但是由于Guest系统种类很多,所以不可能每一个达到非常良好的效果,其自身对Android的输入控制就不够流畅,而本发明提出是输入控制方式是完全为Android定制的,可以达到非常流畅的体验。
[0107]本领域技术人员理解,尽管前面的技术描述都是以Host和Guest在同一台物理机器上为前提的,但是由于运行于Host的Player和运行于Guest的Android实际上的唯一联系是一个通信连接,所以只要是能够建立起这个通信连接就可以运用本发明的技术。因此,即使Player和Android运行在不同的物理机器上,也是可以进行虚拟输入控制的。
[0108]因此,在具体实现时,以上方法包括但不限于虚拟操作系统与宿主操作系统运行于同一操作性或同一物理PC机的情况,同样适用于虚拟操作系统运行于其它操作系统或其它物理PC机的情况;同理,以上方法包括但不限于虚拟操作系统以虚拟机形式运行的情况,同样适用于虚拟操作系统运行于实际物理设备的情况。
[0109]对于虚拟操作系统运行在虚拟机上的情况,请参见图3和图4。其中,图3示出了虚拟机运行在宿主操作系统所在的物理设备上的情形,即,虚拟机运行在宿主操作系统所在设备上、虚拟操作系统又运行在该虚拟机上,例如,Guest运行在VirtualBox上、VirtualBox运行在Host上。图4示出了虚拟机运行在与宿主操作系统所在物理设备不同的另一个物理设备上的情形,例如,宿主操作系统运行在第一设备(如:PCl)上,虚拟机运行在第二设备(如,PC2)上、虚拟操作系统又运行在该虚拟机上。
[0110]对于虚拟操作系统不依赖虚拟机而运行在与宿主操作系统所在物理设备相独立的另一个物理设备上的情况,请参见图5。图5示出了虚拟操作系统直接运行在与宿主操作系统所在物理设备不同的另一个物理设备上的情形,例如,宿主操作系统运行在第一设备(如:PC)上,虚拟操作系统运行在第二设备(如,手机)上。此处,要求第二设备是可直接运行操作系统的设备,例如智能手机。
[0111]可见,本发明提供的宿主操作系统与虚拟操作系统之间连接的方案具备在分布式环境下实施的能力。
[0112]在执行完图2所示的流程之后,即可建立宿主操作系统与虚拟操作系统之间的通信连接,即,建立了宿主操作系统中player程序与虚拟操作系统中vinput进程之间的连接。在图1步骤S103中宿主操作系统收到移动终端发送的控制命令之后,即可由player程序发送给vinput进程,然后虚拟操作系统对控制命令进行显示。
[0113]下面从palyer程序、VirtualBox、Andro id三方交互的角度,对本发明另一个实施例提供的建立宿主操作系统与虚拟操作系统之间通信连接的流程进行说明。可以理解,该另一实施例采取的是图3所示的布局,即,VirtualBox运行在Host端,Android(Guest端)又运行在VirtualBox,其中,palyer程序是在Host端实现的,与Android中的vinput配合实现本发明主要功能的程序,可以在Andro id模拟器中实现。
[0114]因此,本发明的实现包括运行在宿主操作系统(Host)的模拟控制程序Player和运行虚拟android系统(Guest)的接收程序vinput,以及运行在虚拟机的android系统本身。
[0115](I)Player程序的逻辑
[0116]Player通过调用VirtualBox来启动Android系统;之后通过VirtualBox的guestproperty机制尝试获取Android系统的IP地址;在获取到Android系统的IP地址之后,与Android系统内运行的vinput建立通信连接;之后便可将Player接收到的用户输入发送的Andro id系统。
[0117]前面提到的现有技术中,是通过VirtuaIBox运行Andro id系统(并没有通过Android模拟器中的palyer程序进程控制VirtualBox),是可以正常运行Android的,但是由于受限于前面提到的弊端,是不能产品化的。本发明的大前提是Android模拟器的整体方案,虽然仍然需要VirtualBox来运行Android系统,但是整个VirtualBox的工作都是后台的、不可见的,而展现给用户是:Andro i d模拟器(即上述P lay er)。可见,通过Andro i d模拟器直接控制在后台运行的VirtualBox,并采用了一些新技术取代了原先需要VirtualBox来进行的工作,包括接管了图像的渲染工作,以及本发明描述的接管了输入控制工作。
[0118](2)Android 系统逻辑
[ΟΙ19] Android系统启动,首先是Iinux内核启动,之后启动Android基础进程init,该进程会加载配置文件init.rc其中描述了 init需要完成操作,包括文件系统操作、权限控制以及服务进程等。在这个过程中,本发明特别使得init进程加载一个shell脚本,完成一个关键动作,,即,借助VirtualBox的Guest扩展组件(VirtualBox Guest Addit1ns)将当前系统的IP地址写入到guestproperty,以使得外部Player能获取到当前Android的IP地址。随后,使得init进程启动虚拟输入服务进程,S卩,vinput进程。该进程将在特定的端口等待与Player程序建立通信。一旦与Player程序建立连接,vinput进程将不断接收Player程序发送的用户在手机上输入的控制命令,虚拟Android系统将控制命令进行处理并显示。
[0120]参见图6,示出了根据本发明另一个实施例的建立宿主操作系统与虚拟操作系统之间通信连接的流程图。
[0121 ] S601:player 程序控制 VirtualBox 虚拟机启动android;
[0122]S602: android启动,包括:Iinux内核启动->android基础进程丨11;[1:启动->加载init.rc->运行虚拟输入服务进程vinput,等待与外部建立连接;
[0123]S603:Player程序获取android系统的 ip地址,包括:android运行init.vbox.sh写入 IP 地址至 guestproperty、P layer 从 VirtualBox 的guestproperty 读取 IP 地址;
[ΟΙ24] S604: Player程序与android内部的vinput进程建立tcp连接,并完成初始化;
[0125]S605: Player程序从Host端接收移动终端发送来的用户输入的控制命令;
[0126]S606: Player程序通过之前建立的通信通道发送到android系统的vinput进程;
[0127]S607:Android系统对vinput进程收到的控制命令进行显示。
[0128]参见图7,示出了根据本发明一个实施例的利用移动终端对虚拟输入进行控制的系统结构示意图。该用于将所述移动终端作为操作手柄,实现对寄生于宿主操作系统的虚拟操作系统进行控制。该系统包括:
[0129]移动终端701,用于建立与宿主设备702之间的连接通道,并接收用户的控制命令,通过连接通道,将控制命令发送给宿主设备702;
[0130]宿主设备702,用于通过宿主操作系统7021将控制命令提供给虚拟操作系统7022,虚拟操作系统7022将控制命令在虚拟操作系统7022上进行显示。
[0131]优选的,宿主操作系统7021建立与虚拟操作系统7022之间的通信连接。
[0132]优选的,
[0133]宿主操作系统7021,用于通过模拟控制程序启动虚拟操作系统7022,以及,根据获取的虚拟操作系统7022的IP地址,建立模拟控制程序与虚拟操作系统7022中的输入服务进程之间的连接,由模拟控制程序将控制命令发送给输入服务进程;
[0134]虚拟操作系统7022,用于通过基础进程加载预定义脚本,从而将虚拟操作系统7022的IP地址提供给宿主操作系统7021,以及,通过基础进程启动虚拟输入服务进程,以及,由虚拟输入服务进程接收模拟控制程序发送来的控制命令,在虚拟操作系统7022上显示控制命令。
[0135]优选的,
[0136]虚拟操作系统7022运行在与宿主操作系统7021所在物理设备相独立的另一个物理设备上;或者,
[0137]虚拟操作系统7022运行在虚拟机上,其中,虚拟机运行在宿主操作系统7021所在的物理设备上,或者,虚拟机运行在与宿主操作系统7021所在物理设备不同的另一个物理设备上。
[0138]优选的,
[0139]虚拟机为VirtualBox虚拟机;
[0140]宿主操作系统7021,通过模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动虚拟操作系统7022。
[0141]优选的,
[0142]虚拟机为VirtualBox虚拟机;
[0143]虚拟操作系统7022,通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将虚拟操作系统7022的IP地址写入VirtualB
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1