CN105573817B - 虚拟输入控制的方法、装置及系统 - Google Patents

虚拟输入控制的方法、装置及系统 Download PDF

Info

Publication number
CN105573817B
CN105573817B CN201510921251.8A CN201510921251A CN105573817B CN 105573817 B CN105573817 B CN 105573817B CN 201510921251 A CN201510921251 A CN 201510921251A CN 105573817 B CN105573817 B CN 105573817B
Authority
CN
China
Prior art keywords
virtual
operating system
host operating
virtual machine
opetrating system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510921251.8A
Other languages
English (en)
Other versions
CN105573817A (zh
Inventor
李林
谢京辉
王有存
吕鹏
郭晓龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510921251.8A priority Critical patent/CN105573817B/zh
Priority to CN201811627426.4A priority patent/CN109669763A/zh
Publication of CN105573817A publication Critical patent/CN105573817A/zh
Application granted granted Critical
Publication of CN105573817B publication Critical patent/CN105573817B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS

Abstract

本发明公开了一种虚拟输入控制的方法、装置及系统,包括:宿主操作与虚拟操作系统建立网络连接后,通过宿主操作系统中的模拟控制程序启动虚拟操作系统;虚拟操作系统通过基础进程加载预定义脚本,将虚拟操作系统的IP地址提供给宿主操作系统,以及,通过基础进程启动虚拟输入服务进程;宿主操作系统根据虚拟操作系统的IP地址,建立模拟控制程序与虚拟输入服务进程之间的连接;宿主操作系统接收到用户的控制命令后,根据控制命令转译得到输入控制消息,由模拟控制程序将输入控制消息发送给虚拟输入服务进程;虚拟操作系统对输入控制消息进行解译,得到虚拟操作系统可识别的输入控制信号。本发明减少对虚拟机的依赖,并改善输入控制流畅度和准确性。

Description

虚拟输入控制的方法、装置及系统
技术领域
本发明涉及计算机技术领域,具体涉及一种虚拟输入控制的方法、装置及系统。
背景技术
随着近年来移动智能终端的普及,催生了移动互联网的飞速发展,现在种类繁多而丰富多彩的应用让移动智能终端可以满足人们的各种需求。但是由于在某些方面的技术瓶颈,诸如电池的续航能力、屏幕的尺寸以及用户在使用移动设备时不可避免的局限(如操作的精准度等),都会影响用户的使用体验。因此如果能在PC上模拟出移动终端的运行环境,并充分发挥PC的优势,例如持续的电力、大屏幕的绚丽的画面效果、键盘鼠标的精准操作等,可以很大程度上满足用户在移动智能终端上无法得到的体验。为此安卓(android)模拟器应运而生。安卓模拟器是一个能在Windows平台模拟安卓手机系统的模拟器,安卓模拟器能在电脑上模拟出安卓手机运行环境,安卓模拟器让用户在电脑上也能体验安卓游戏和应用。比较常用的安卓模拟器有:Android SDK、BlueStacks,可在PC系统和苹果iOS系统运行,著名的vmware虚拟机和Virtual Box虚拟机也可以模拟安卓系统,目前这些模拟器软件均可运行在微软公司的Windows操作系统平台。
如何运用PC现有输入手段实现对虚拟android系统的控制则是关系到用户体验的关键技术。由于需要在虚拟机中运行android,所以通常会考虑使用开源虚拟机VirtualBox。VirtualBox是一款开源虚拟机软件,用户可以在VirtualBox上安装并且执行Solaris、Windows、DOS、Linux、OS/2Warp、BSD等系统作为客户端操作系统。VirtualBox虚拟机本身就可以将用户在虚拟机上的输入控制模拟输入到内部运行的Guest系统中,但前提是VirtualBox虚拟机窗口必须是可见的。
但是,借助VirtualBox实现虚拟安卓系统至少存在以下问题:
首先,由于VirtualBox虚拟机外挂不可定制,因此这对于一个希望自己定制外观的产品来说实际上就是不可接受的。
其次,如果没有额外的输入控制优化组件,VirtualBox会将用户的鼠标活动范围锁定的在当前的虚拟机窗口上,并且对于android这样的Guest系统的输入控制实际上也并不流畅。也就是,VirtualBox将鼠标的活动范围锁定在当前窗口会很大程度上影响用户体验,并且对于不同的Guest系统并不能保证输入控制的顺畅。VirtualBox将鼠标的活动范围锁定在当前窗口是VirtualBox的产品策略所致。
另外,由于VirtualBox是一个开源的通用虚拟机软件,可以在其上运行的操作系统也不仅限于Android,虽然VirtualBox可以为运行其中的Guest系统提供输入控制,但是由于Guest系统种类很多,所以不可能每一个达到非常良好的效果。其自身对Android的输入控制就不够流畅。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的虚拟输入控制的方法、装置及系统。
依据本发明的一个方面,提供一种虚拟输入控制的方法,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述方法包括:
所述宿主操作系统与所述虚拟操作系统建立网络连接后,通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统;
所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程;
所述宿主操作系统根据所述虚拟操作系统的IP地址,建立所述模拟控制程序与所述虚拟输入服务进程之间的连接;
所述宿主操作系统接收到用户的控制命令后,根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程;
所述虚拟操作系统对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
优选的,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
优选的,
所述虚拟机为VirtualBox虚拟机;
所述通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统,包括:通过所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
优选的,
所述虚拟机为VirtualBox虚拟机;
所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,包括:
所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性;
所述宿主操作系统读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
优选的,
所述通过所述基础进程启动虚拟输入服务进程,包括:通过init进程启动vinput进程;
所述建立所述模拟控制程序与所述虚拟输入服务进程之间的连接,包括:在所述虚拟操作系统的指定端口,所述vinput进程建立与所述模拟控制程序的连接。
优选的,
所述根据所述控制命令转译得到输入控制消息,包括:
所述模拟控制程序对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
优选的,
所述虚拟输入服务进程对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号,包括:
对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到所述控制命令;
对解译得到的控制命令进行硬件抽象层HAL转换,得到所述虚拟操作系统可识别的输入控制信号。
优选的,
所述宿主操作系统与所述虚拟操作系统建立网络连接包括:所述宿主操作系统配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
优选的,
所述宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;所述虚拟操作系统包括Android操作系统。
一种虚拟输入控制的方法,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述方法包括:
所述宿主操作系统与所述虚拟操作系统建立网络连接后,通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统;
所述宿主操作系统通过所述模拟控制程序获取所述虚拟操作系统的IP地址,建立所述模拟控制程序与所述虚拟操作系统中虚拟输入服务进程之间的连接;
所述宿主操作系统接收到用户的控制命令后,根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程。
优选的,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
优选的,
所述虚拟机为VirtualBox虚拟机;
所述通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统,包括:通过所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
优选的,
所述虚拟机为VirtualBox虚拟机;
所述宿主操作系统通过所述模拟控制程序获取所述虚拟操作系统的IP地址,包括;所述宿主操作系统通过所述模拟控制程序读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
优选的,
所述建立所述模拟控制程序与所述虚拟操作系统中虚拟输入服务进程之间的连接,包括:在所述虚拟操作系统的指定端口,建立所述模拟控制程序与所述虚拟操作系统中虚拟输入服务进程之间的连接。
优选的,
所述根据所述控制命令转译得到输入控制消息,包括:
所述模拟控制程序对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
优选的,
所述宿主操作系统与所述虚拟操作系统建立网络连接包括:所述宿主操作系统配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
优选的,
所述宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;所述虚拟操作系统包括Android操作系统。
一种虚拟输入控制的方法,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述方法包括:
所述虚拟操作系统与所述宿主操作系统建立网络连接后,所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程;
通过将所述虚拟操作系统的IP地址提供给所述宿主操作系统,建立所述宿主操作系统中的模拟控制程序与所述虚拟输入服务进程之间的连接;
所述虚拟输入服务进程接收所述输入控制程序发送的输入控制消息,所述虚拟操作系统对所述宿主操作系统发送的输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
优选的,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
优选的,
所述虚拟机为VirtualBox虚拟机;
所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,包括:
所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性;
所述宿主操作系统读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
优选的,
所述通过所述基础进程启动虚拟输入服务进程,包括:通过init进程启动vinput进程;
所述建立所述模拟控制程序与所述虚拟输入服务进程之间的连接,包括:在所述虚拟操作系统的指定端口,所述vinput进程建立与所述模拟控制程序的连接。
优选的,
所述虚拟输入服务进程对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号,包括:
对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到所述控制命令;
对解译得到的控制命令进行硬件抽象层HAL转换,得到所述虚拟操作系统可识别的输入控制信号。
优选的,
所述宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;所述虚拟操作系统包括Android操作系统。
一种虚拟输入控制的装置,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述装置设置在所述宿主操作系统侧,所述装置包括:
虚拟网络配置单元,用于配置所述宿主操作系统与所述虚拟操作系统建立网络连接;
启动虚拟控制单元,用于控制所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统;
虚拟IP地址获取单元,用于获取所述虚拟操作系统的IP地址;
虚拟连接建立单元,用于根据所述虚拟操作系统的IP地址,建立所述模拟控制程序与虚拟操作系统中虚拟输入服务进程之间的连接;
用户命令接收单元,用于接收用户的控制命令;
用户命令处理单元,用于根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程。
优选的,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
优选的,
所述虚拟机为VirtualBox虚拟机;所述启动虚拟控制单元具体用于,通过所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
优选的,
所述虚拟机为VirtualBox虚拟机;所述虚拟IP地址获取单元具体用于,读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
优选的,
所述虚拟连接建立单元具体用于,在所述虚拟操作系统的指定端口,所述模拟控制程序与所述虚拟操作系统的vinput进程建立连接。
优选的,
所述用户命令处理单元具体用于,对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
优选的,
所述虚拟网络配置单元,具体用于,配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
一种虚拟输入控制的装置,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述装置设置在所述虚拟操作系统侧,所述装置包括:
虚拟启动单元,用于在所述宿主操作系统中的模拟控制程序控制下,启动所述虚拟操作系统;
基础进程控制单元,用于在所述虚拟操作系统中通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程;
虚拟连接建立单元,用于建立所述虚拟输入服务进程与所述模拟控制程序之间的连接;
用户命令解译单元,用于通过所述虚拟输入服务进程接收所述模拟控制程序发送的输入控制消息,并对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
优选的,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
优选的,
所述虚拟机为VirtualBox虚拟机;所述虚拟启动单元具体用于,在所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
优选的,
所述虚拟机为VirtualBox虚拟机;所述基础进程控制单元具体用于,控制所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性,以及,通过init进程启动vinput进程。
优选的,
所述虚拟连接建立单元具体用于,在所述虚拟操作系统的指定端口,控制所述vinput进程建立与所述模拟控制程序的连接。
优选的,
所述用户命令解译单元具体用于,控制对所述虚拟输入服务进程获取到的所述输入控制消息进行解译,得到控制命令;对解译后的控制命令进行硬件抽象层HAL转换,得到所述虚拟操作系统可识别的输入控制信号。
一种虚拟输入控制的系统,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述系统包括:
宿主操作系统,用于建立与所述虚拟操作系统的网络连接,并通过模拟控制程序启动所述虚拟操作系统,以及,根据获取的所述虚拟操作系统的IP地址,建立所述模拟控制程序与所述虚拟操作系统中的输入服务进程之间的连接,并且,在接收到用户的控制命令后,根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程;
虚拟操作系统,用于通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程,以及,由所述虚拟输入服务进程接收所述模拟控制程序发送来的输入控制消息,并且,对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
优选的,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
优选的,
所述虚拟机为VirtualBox虚拟机;所述宿主操作系统具体用于,通过模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
优选的,
所述虚拟机为VirtualBox虚拟机;所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性;所述宿主操作系统读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
优选的,
所述虚拟操作系统通过init进程启动vinput进程;在所述虚拟操作系统的指定端口,所述vinput进程建立与所述模拟控制程序的连接。
优选的,
所述宿主操作系统具体用于,对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
优选的,
所述虚拟操作系统具体用于,控制对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到控制命令;并对所述控制命令进行硬件抽象层HAL转换;得到所述虚拟操作系统可识别的输入控制信号。
优选的,
所述宿主操作系统配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
优选的,
所述宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;所述虚拟操作系统包括Android操作系统。
通过上述方案,运行于宿主操作系统的输入控制程序可获取到虚拟操作系统的IP地址,宿主操作系统通过该IP地址与虚拟操作系统建立起通信连接,并将用户输入的控制命令提供给虚拟操作系统,最终由操作系统转换为虚拟操作系统可识别的输入控制信号。例如,可以实现在宿主操作系统的模拟器展现的窗口上看到Android系统实际运行的图像,并通过键盘/鼠标在模拟器窗口上进行输入,模拟器将得到的用户输入数据经过转化之后,通过通信连接发送到了Android系统中的vinput进程,vinput进程则将这些输入数据转为对Android系统的实际控制。
如前所述的,现有技术中VirtualBox将鼠标的活动范围锁定在当前窗口会很大程度上影响用户体验,并且对于不同的Guest系统并不能保证输入控制的顺畅,VirtualBox将鼠标的活动范围锁定在当前窗口是VirtualBox的产品策略所致。而本发明所采用的方式将不再依赖VirtualBox的展现和输入控制方式,所以就不会受其弊端影响。另外,由于VirtualBox是一个开源的通用虚拟机软件,可以在其上运行的操作系统也不仅限于Android,虽然VirtualBox可以为运行其中的Guest系统提供输入控制,但是由于Guest系统种类很多,所以不可能每一个达到非常良好的效果,其自身对Android的输入控制就不够流畅,而本发明提出是输入控制方式是完全为Android定制的,可以达到非常流畅的体验,因此,本发明可有效改善输入控制的流畅度和准确性。
另外,本发明方案不限于虚拟操作系统运行在虚拟机上,也可以运行在与宿主操作系统不同的物理设备上,因此,本发明方案可减小对虚拟机的依赖,具有在分布式环境下实施的优点。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的虚拟输入控制的方法的流程图;
图2示出了根据本发明一个实施例的一种宿主操作系统与虚拟操作系统布局示意图;
图3示出了根据本发明一个实施例的另一种宿主操作系统与虚拟操作系统布局示意图;
图4示出了根据本发明一个实施例的又一种宿主操作系统与虚拟操作系统布局示意图;
图5示出了根据本发明另一个实施例的虚拟输入控制的方法的流程图;
图6示出了根据本发明一个实施例的虚拟输入控制的装置的流程图;
图7示出了根据本发明另一个实施例的虚拟输入控制的装置的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明提出一种模拟输入的控制方法,尽可能减小对VirtualBox虚拟机的依赖,在有效改善用户体验的同时,保证良好的兼容性,并在技术上具有非常好的可扩展性。
参见图1,为本发明一个实施例提供的一种虚拟输入控制的方法,该方法用于实现在虚拟操作系统中对宿主操作系统的输入进行控制。
本领域技术人员理解,操作系统分两类,一类是原生,一类是寄生。宿主操作系统,属于原生类操作系统,例如windows、linux等。在本发明中,宿主操作系统也称为Host OS、Host系统或Host端,比如,运行VirtualBox虚拟机的操作系统。虚拟操作系统,属于寄生类的操作系统,寄生在原生类的操作系统中。在本发明中,虚拟操作系统也称为Gust OS、Gust系统或Gust端,比如,运行于VirtualBox虚拟机环境中的操作系统,特别的,本发明优选的是指运行于VirtualBox虚拟机环境中的Android系统。
其中,宿主操作系统包括但不限于Windows操作系统、Mac操作系统或Linux操作系统;虚拟操作系统包括但不限于Android操作系统。
图1所示方法具体包括以下步骤。
S101:宿主操作系统与虚拟操作系统建立网络连接后,通过宿主操作系统中的模拟控制程序启动虚拟操作系统。
宿主操作系统与虚拟操作系统建立网络连接,可以由宿主系统对网络连接进行配置,例如,通过配置(增加)一个专门用来通信的虚拟网络连接,并使得宿主系统和虚拟系统在这个虚拟网络连接中连通。对于宿主操作系统与虚拟操作系统之间的网络连接,说明如下:1)这个虚拟网络连接可由VirtualBox提供;2)对虚拟网络配置在启动虚拟系统之前进行,是每次启动之前的例行操作,以保证宿主和虚拟系统网络连通;3)策略是,如果这个虚拟连接不存在,则可通过如VirtualBox的虚拟机创建一个新的虚拟连接;如果虚拟连接已创建或已存在,对连接参数(IP地址,网关等)进行配置,以保证宿主和虚拟系统连通。
本发明中,模拟控制程序也称为player,具体实现中,可以在安卓模拟器实现该程序。如前所述的,虚拟操作系统一般运行在如VirtualBox的虚拟机中,因此,具体实现中,可以通过宿主操作系统中的player程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动虚拟操作系统。
S102:虚拟操作系统通过基础进程加载预定义脚本,从而将虚拟操作系统的IP地址提供给宿主操作系统,以及,通过基础进程启动虚拟输入服务进程。
例如,虚拟机为VirtualBox虚拟机,虚拟操作系统是指Android系统。具体实现过程如下,首先,android系统通过其基础进程(init进程)加载预定义脚本(shell脚本),运行VirtualBox虚拟机的客户扩展组件,将android系统的IP地址写入VirtualBox虚拟机的客户属性;然后,宿主操作系统读取VirtualBox虚拟机的客户属性,获取android系统的IP地址。
本领域技术人员理解,在android系统中,内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以init始终是第一个进程(其进程编号始终为1)。本发明利用init进程来加载一个预定义功能的shell脚本,实现对VirtualBox虚拟机的客户扩展组件的控制。
其中,Shell脚本(Shell Script)与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,由于使用了Linux/Unix下的命令,因此shell脚本比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高。
VirtualBox虚拟机的客户扩展组件(VirtualBox Guest Additions),也称为客户端增强包,主要作用是为了增加:共享文件夹、无缝窗口、3D虚拟化显示。客户扩展组件是一堆软件包的集合,是运行在VirtualBox虚拟机内的,其目的在于,提升虚拟机的性能,增加和Host之间的交互性和通讯。可见,为了更好实现Host和Guest之间的互动,VirtualBox提供了Guest扩展组件。因此本发明中,在通信连接建立起来之前,通过Guest扩展组件提供的客户属性(guestproperty)机制将Guest的IP地址传给Host。
init进程除了通过加载shell脚本,将IP地址提供给Host之外,还在android系统中启动一个关键的虚拟输入服务进程,本发明中也称为Vinput进程。Vinput是本发明中为了达到控制Guest Android系统输入,而并放置于Android系统中的关键进程。通过init控制的方式,使得在android系统启动的同时保证vinput进程也被启动。
S103:宿主操作系统根据虚拟操作系统的IP地址,建立模拟控制程序与虚拟输入服务进程之间的连接。
具体的,可在虚拟操作系统的指定端口,由vinput进程建立与Player程序建立通信连接。
S104:宿主操作系统接收到用户的控制命令后,根据控制命令转译成输入控制消息,由模拟控制程序将输入控制消息发送给虚拟输入服务进程。
用户的控制命令是在宿主操作系统下输入的,包括由鼠标或键盘等输入的控制命令。
宿主操作系统接收到用户的控制命令后,结合该控制命令的相关参数(具体描述控制命令的参数,例如,鼠标点击的位置信息等),转译生成输入控制信号,然后,由Player程序将输入控制信息利用之前与vinput进程建立的通信连接通道发送给vinput进程。
S105:对虚拟输入服务进程接收到的输入控制消息进行解译,得到虚拟操作系统可识别的输入控制信号。
具体的,可对vinput进程接收到的输入控制信号进行解译,得到控制命令,然后对控制命令进行硬件抽象层HAL(Hardware Abstraction Layer)转换;经过HAL转换后,得到虚拟操作系统可识别的输入控制信号。
其中,HAL(Hardware Abstraction Layer,硬件抽象层),HAL的作用是将操作系统的其余部分表示为抽象的硬件设备,特别是去除了真正硬件所富含的瑕疵和特质,这些设备表现为操作系统的其它部分和设备可以使用的独立于机器的服务的形式(函数调用和宏)。通过使用HAL转换和间接硬件寻址,当移植到新的硬件上时,驱动程序和核心只需做很少的改动。移植HAL本身是直接的,因为所有的机器相关代码都集中在一个地方,并且移植的目标是充分定义的,即实现所有的HAL服务。本发明中,vinput是通过HAL转换将从通信连接中接收到的外部输入控制命令转变成Android系统可理解的输入,这是对Android中已有技术的创新应用。
通过上述实施例一的方案,运行于Host系统的模拟器(即Player)获取到了Android系统的IP地址,Host通过这个IP地址与Android中的vinput进程建立起通信连接,实际用户在Host系统的模拟器展现的窗口上看到Android系统实际运行的图像,并通过键盘/鼠标在模拟器窗口上进行输入,模拟器将得到的用户输入数据经过转化之后,通过通信连接发送到了Android系统中的vinput进程,vinput进程则将这些输入数据转为对Android系统的实际控制。
如前所述的,现有技术中VirtualBox将鼠标的活动范围锁定在当前窗口会很大程度上影响用户体验,并且对于不同的Guest系统并不能保证输入控制的顺畅,VirtualBox将鼠标的活动范围锁定在当前窗口是VirtualBox的产品策略所致。而本发明所采用的方式将不再依赖VirtualBox的展现和输入控制方式,所以就不会受其弊端影响。另外,由于VirtualBox是一个开源的通用虚拟机软件,可以在其上运行的操作系统也不仅限于Android,虽然VirtualBox可以为运行其中的Guest系统提供输入控制,但是由于Guest系统种类很多,所以不可能每一个达到非常良好的效果,其自身对Android的输入控制就不够流畅,而本发明提出是输入控制方式是完全为Android定制的,可以达到非常流畅的体验。
本领域技术人员理解,尽管前面的技术描述都是以Host和Guest在同一台物理机器上为前提的,但是由于运行于Host的Player和运行于Guest的Android实际上的唯一联系是一个通信连接,所以只要是能够建立起这个通信连接就可以运用本发明的技术。因此,即使Player和Android运行在不同的物理机器上,也是可以进行虚拟输入控制的。
因此,在具体实现时,以上方法包括但不限于虚拟操作系统与宿主操作系统运行于同一操作性或同一物理PC机的情况,同样适用于虚拟操作系统运行于其它操作系统或其它物理PC机的情况;同理,以上方法包括但不限于虚拟操作系统以虚拟机形式运行的情况,同样适用于虚拟操作系统运行于实际物理设备的情况。
对于虚拟操作系统运行在虚拟机上的情况,请参见图2和图3。其中,图2示出了虚拟机运行在宿主操作系统所在的物理设备上的情形,即,虚拟机运行在宿主操作系统所在设备上、虚拟操作系统又运行在该虚拟机上,例如,Guest运行在VirtualBox上、VirtualBox运行在Host上。图3示出了虚拟机运行在与宿主操作系统所在物理设备不同的另一个物理设备上的情形,例如,宿主操作系统运行在第一设备(如:PC1)上,虚拟机运行在第二设备(如,PC2)上、虚拟操作系统又运行在该虚拟机上。
对于虚拟操作系统不依赖虚拟机而运行在与宿主操作系统所在物理设备相独立的另一个物理设备上的情况,请参见图4。图4示出了虚拟操作系统直接运行在与宿主操作系统所在物理设备不同的另一个物理设备上的情形,例如,宿主操作系统运行在第一设备(如:PC)上,虚拟操作系统运行在第二设备(如,手机)上。此处,要求第二设备是可直接运行操作系统的设备,例如智能手机。
可见,本发明提供的方案具备在分布式环境下实施的能力。
下面从palyer程序、VirtualBox、Android三方交互的角度,对本发明另一个实施例提供的虚拟输入控制的方法进行说明。可以理解,该另一实施例采取的是图2所示的布局,即,VirtualBox运行在Host端,Android(Guest端)又运行在VirtualBox,其中,palyer程序是在Host端实现的,与Android中的vinput配合实现本发明主要功能的程序,可以在Android模拟器中实现。
因此,本发明的实现包括运行在宿主操作系统(Host)的模拟控制程序Player和运行虚拟android系统(Guest)的接收程序vinput,以及运行在虚拟机的android系统本身。
(1)Player程序的逻辑
Player通过调用VirtualBox来启动Android系统;之后通过VirtualBox的guestproperty机制尝试获取Android系统的IP地址;在获取到Android系统的IP地址之后,与Android系统内运行的vinput建立通信连接;之后便可将Player接收到的用户输入发送的Android系统。
前面提到的现有技术中,是通过VirtualBox运行Android系统(并没有通过Android模拟器中的palyer程序进程控制VirtualBox),是可以正常运行Android的,但是由于受限于前面提到的弊端,是不能产品化的。本发明的大前提是Android模拟器的整体方案,虽然仍然需要VirtualBox来运行Android系统,但是整个VirtualBox的工作都是后台的、不可见的,而展现给用户是:Android模拟器(即上述Player)。可见,通过Android模拟器直接控制在后台运行的VirtualBox,并采用了一些新技术取代了原先需要VirtualBox来进行的工作,包括接管了图像的渲染工作,以及本发明描述的接管了输入控制工作。
(2)Android系统逻辑
Android系统启动,首先是linux内核启动,之后启动Android基础进程init,该进程会加载配置文件init.rc其中描述了init需要完成操作,包括文件系统操作、权限控制以及服务进程等。在这个过程中,本发明特别使得init进程加载一个shell脚本,完成一个关键动作,,即,借助VirtualBox的Guest扩展组件(VirtualBox Guest Additions)将当前系统的IP地址写入到guestproperty,以使得外部Player能获取到当前Android的IP地址。随后,使得init进程启动虚拟输入服务进程,即,vinput进程。该进程将在特定的端口等待与Player程序建立通信。一旦与Player程序建立连接,vinput进程将不断接收Player程序发送的用户在Host端输入的控制命令,将控制命令进行解译,然后转换为android系统可识别的输入控制信号。
参见图5,示出了根据本发明另一个实施例的虚拟输入控制的方法的流程图。
S501:player程序控制VirtualBox虚拟机启动android;
S502:android启动,包括:linux内核启动->android基础进程init启动->加载init.rc->运行虚拟输入服务进程vinput,等待与外部建立连接;
S503:Player程序获取android系统的ip地址,包括:android运行init.vbox.sh写入IP地址至guestproperty、player从VirtualBox的guestproperty读取IP地址;
S504:Player程序与android内部的vinput进程建立tcp连接,并完成初始化;
S505:Player程序将Host端收到的用户输入的控制命令进行转译,得到输入控制消息;
S506:Player程序将输入控制消息通过之前建立的通信通道发送到android系统的vinput进程;
S506:Android系统对vinput进程收到的输入控制消息进行解译得到控制命令,然后将控制命令通过HAL模拟成android系统的实际输入控制信号。
下面以一个具体实例对本发明实施例进行说明。
以鼠标点击为例,Player在收到鼠标点击后,先获取鼠标在Player渲染窗口的相对位置,然后再根据当前虚拟屏幕尺寸和的旋转状态,以及渲染窗口的缩放比例,计算出此次点击在虚拟机屏幕的坐标;之后将表示点击触屏的控制命令及坐标位置转译成控制消息,之后通过通信连接将控制消息发送到Android系统中的vinput进程。Vinput进程在收到控制消息之后,解译控制命令,之后将控制命令通过HAL转换成实际的输入。至此Android认为触屏被用户点击了。无论是鼠标的输入还是键盘的输入或是其它设备输入,原理相同,因此不多举例赘述。
与上述方法相对应,本发明还提供一种虚拟输入控制的装置,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,该装置设置在所述宿主操作系统侧,参见图6,为该装置结构示意图。该装置包括:
虚拟网络配置单元600,用于配置宿主操作系统与虚拟操作系统之间的网络连接;
启动虚拟控制单元601,用于控制宿主操作系统中的模拟控制程序启动虚拟操作系统;
虚拟IP地址获取单元602,用于获取虚拟操作系统的IP地址;
虚拟连接建立单元603,用于根据虚拟操作系统的IP地址,建立模拟控制程序与虚拟操作系统中虚拟输入服务进程之间的连接;
用户命令接收单元604,用于接收用户的控制命令;具体的,可以将虚拟操作系统的输出图像渲染到一个窗口上呈现给用户(例如,相当于虚拟手机的显示器),用户在这个渲染窗口上的输入操作(键盘鼠标操作等)被用户命令接收单元604接收,用户命令接收单元604将接收到的用户命令转给用户命令处理单元605处理;
用户命令处理单元605,用于根据控制命令转译得到输入控制消息,控制模拟控制程序将输入控制消息发送给虚拟输入服务进程。
优选的,虚拟操作系统运行在与宿主操作系统所在物理设备相独立的另一个物理设备上;或者,虚拟操作系统运行在虚拟机上,其中,虚拟机运行在宿主操作系统所在的物理设备上,或者,虚拟机运行在与宿主操作系统所在物理设备不同的另一个物理设备上。
优选的,虚拟机为VirtualBox虚拟机;启动虚拟控制单元601具体用于,通过宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动虚拟操作系统。
优选的,虚拟机为VirtualBox虚拟机;虚拟IP地址获取单元602具体用于,读取VirtualBox虚拟机的客户属性,获取虚拟操作系统的IP地址。
优选的,虚拟连接建立单元603具体用于,在虚拟操作系统的指定端口,模拟控制程序与虚拟操作系统的vinput进程建立连接。
优选的,用户命令处理单元605具体用于,对控制命令以及控制参数进行转译,生成输入控制消息。
优选的,虚拟网络配置单元600具体用于,配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
与上述方法相对应,本发明还提供另一种虚拟输入控制的装置,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,该装置设置在所述虚拟操作系统侧,参见图7,为该装置结构示意图。该装置包括:
虚拟启动单元701,用于在宿主操作系统中的模拟控制程序控制下,启动虚拟操作系统;
基础进程控制单元702,用于在虚拟操作系统中通过基础进程加载预定义脚本,从而将虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过基础进程启动虚拟输入服务进程;
虚拟连接建立单元703,用于建立虚拟输入服务进程与模拟控制程序之间的连接;
用户命令解译单元704,用于通过虚拟输入服务进程接收模拟控制程序发送的输入控制消息,并对输入控制消息进行解译,得到虚拟操作系统可识别的输入控制信号。
优选的,虚拟操作系统运行在与宿主操作系统所在物理设备相独立的另一个物理设备上;或者,虚拟操作系统运行在虚拟机上,其中,虚拟机运行在宿主操作系统所在的物理设备上,或者,虚拟机运行在与宿主操作系统所在物理设备不同的另一个物理设备上。
优选的,虚拟机为VirtualBox虚拟机;虚拟启动单元701具体用于,由宿主操作系统中的模拟控制程序控制VirtualBox虚拟机基础上,由VirtualBox虚拟机启动虚拟操作系统。
优选的,虚拟机为VirtualBox虚拟机;基础进程控制单元702具体用于,控制虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性,以及,通过init进程启动vinput进程。
优选的,虚拟连接建立单元703具体用于,在虚拟操作系统的指定端口,控制vinput进程建立与模拟控制程序的连接。
优选的,用户命令解译单元704具体用于,控制对虚拟输入服务进程获取到的输入控制消息进行解译,得到控制命令,并对控制命令进行硬件抽象层HAL转换;经过HAL转换后,得到虚拟操作系统可识别的输入控制信号。
与上述方法相对应,本发明还提供一种虚拟输入控制的系统,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,该该系统包括:
宿主操作系统,用于建立与虚拟操作系统之间的网路连接,并通过模拟控制程序启动虚拟操作系统,以及,根据获取的虚拟操作系统的IP地址,建立模拟控制程序与虚拟操作系统中虚拟输入服务进程之间的连接,并且,在接收到用户的控制命令后,根据控制命令转译得到输入控制消息,由模拟控制程序将输入控制消息发送给虚拟输入服务进程;
虚拟操作系统,用于通过基础进程加载预定义脚本,从而将虚拟操作系统的IP地址提供给宿主操作系统,以及,通过基础进程启动虚拟输入服务进程,以及,由虚拟输入服务进程接收输入控制消息,并且,对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
优选的,虚拟操作系统运行在与宿主操作系统所在物理设备相独立的另一个物理设备上;或者,虚拟操作系统运行在虚拟机上,其中,虚拟机运行在宿主操作系统所在的物理设备上,或者,虚拟机运行在与宿主操作系统所在物理设备不同的另一个物理设备上。
优选的,虚拟机为VirtualBox虚拟机;宿主操作系统具体用于,通过模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动虚拟操作系统。
优选的,虚拟机为VirtualBox虚拟机;虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性;宿主操作系统读取所述VirtualBox虚拟机的客户属性,获取虚拟操作系统的IP地址。
优选的,虚拟操作系统通过init进程启动vinput进程;在虚拟操作系统的指定端口,vinput进程建立与模拟控制程序的连接。
优选的,宿主操作系统具体用于,对控制命令以及控制参数进行转译,生成输入控制消息。
优选的,虚拟操作系统具体用于,控制对虚拟输入服务进程获取到的控制命令进行转译,得到控制命令,之后对控制命令进行硬件抽象层HAL转换;经过HAL转换后,得到虚拟操作系统可识别的输入控制信号。
优选的,宿主操作系统配置一个专门用来与虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在虚拟网络连接中连通。
优选的,宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;虚拟操作系统包括Android操作系统。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的虚拟输入控制的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明提供如下方案:
A1、一种虚拟输入控制的方法,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述方法包括:
所述宿主操作系统与所述虚拟操作系统建立网络连接后,通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统;
所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程;
所述宿主操作系统根据所述虚拟操作系统的IP地址,建立所述模拟控制程序与所述虚拟输入服务进程之间的连接;
所述宿主操作系统接收到用户的控制命令后,根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程;
所述虚拟操作系统对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
A2、如A1所述的方法,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
A3、如A2所述的方法,所述虚拟机为VirtualBox虚拟机;
所述通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统,包括:通过所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
A4、如A2所述的方法,所述虚拟机为VirtualBox虚拟机;
所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,包括:
所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性;
所述宿主操作系统读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
A5、如A1所述的方法,
所述通过所述基础进程启动虚拟输入服务进程,包括:通过init进程启动vinput进程;
所述建立所述模拟控制程序与所述虚拟输入服务进程之间的连接,包括:在所述虚拟操作系统的指定端口,所述vinput进程建立与所述模拟控制程序的连接。
A6、如A1所述的方法,所述根据所述控制命令转译得到输入控制消息,包括:
所述模拟控制程序对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
A7、如A1所述的方法,所述虚拟输入服务进程对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号,包括:
对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到所述控制命令;
对解译得到的控制命令进行硬件抽象层HAL转换,得到所述虚拟操作系统可识别的输入控制信号。
A8、如A1所述的方法,所述宿主操作系统与所述虚拟操作系统建立网络连接包括:所述宿主操作系统配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
A9、如A1-A8任一项所述的方法,所述宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;所述虚拟操作系统包括Android操作系统。
B10、一种虚拟输入控制的方法,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述方法包括:
所述宿主操作系统与所述虚拟操作系统建立网络连接后,通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统;
所述宿主操作系统通过所述模拟控制程序获取所述虚拟操作系统的IP地址,建立所述模拟控制程序与所述虚拟操作系统中虚拟输入服务进程之间的连接;
所述宿主操作系统接收到用户的控制命令后,根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程。
B11、如B10所述的方法,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
B12、如B11所述的方法,所述虚拟机为VirtualBox虚拟机;
所述通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统,包括:通过所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
B13、如B11所述的方法,所述虚拟机为VirtualBox虚拟机;
所述宿主操作系统通过所述模拟控制程序获取所述虚拟操作系统的IP地址,包括;所述宿主操作系统通过所述模拟控制程序读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
B14、如B10所述的方法,所述建立所述模拟控制程序与所述虚拟操作系统中虚拟输入服务进程之间的连接,包括:在所述虚拟操作系统的指定端口,建立所述模拟控制程序与所述虚拟操作系统中虚拟输入服务进程之间的连接。
B15、如B10所述的方法,所述根据所述控制命令转译得到输入控制消息,包括:
所述模拟控制程序对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
B16、如B10所述的方法,所述宿主操作系统与所述虚拟操作系统建立网络连接包括:所述宿主操作系统配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
B17、如B10-B16任一项所述的方法,其特征在于,所述宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;所述虚拟操作系统包括Android操作系统。
C18、一种虚拟输入控制的方法,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述方法包括:
所述虚拟操作系统与所述宿主操作系统建立网络连接后,所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程;
通过将所述虚拟操作系统的IP地址提供给所述宿主操作系统,建立所述宿主操作系统中的模拟控制程序与所述虚拟输入服务进程之间的连接;
所述虚拟输入服务进程接收所述输入控制程序发送的输入控制消息,所述虚拟操作系统对所述宿主操作系统发送的输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
C19、如C18所述的方法,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
C20、如C19所述的方法,所述虚拟机为VirtualBox虚拟机;
所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,包括:
所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性;
所述宿主操作系统读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
C21、如C18所述的方法,
所述通过所述基础进程启动虚拟输入服务进程,包括:通过init进程启动vinput进程;
所述建立所述模拟控制程序与所述虚拟输入服务进程之间的连接,包括:在所述虚拟操作系统的指定端口,所述vinput进程建立与所述模拟控制程序的连接。
C22、如C18所述的方法,所述虚拟输入服务进程对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号,包括:
对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到所述控制命令;
对解译得到的控制命令进行硬件抽象层HAL转换,得到所述虚拟操作系统可识别的输入控制信号。
C23、如C18-C22任一项所述的方法,所述宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;所述虚拟操作系统包括Android操作系统。
D24、一种虚拟输入控制的装置,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述装置设置在所述宿主操作系统侧,所述装置包括:
虚拟网络配置单元,用于配置所述宿主操作系统与所述虚拟操作系统建立网络连接;
启动虚拟控制单元,用于控制所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统;
虚拟IP地址获取单元,用于获取所述虚拟操作系统的IP地址;
虚拟连接建立单元,用于根据所述虚拟操作系统的IP地址,建立所述模拟控制程序与虚拟操作系统中虚拟输入服务进程之间的连接;
用户命令接收单元,用于接收用户的控制命令;
用户命令处理单元,用于根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程。
D25、如D24所述的装置,所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
D26、如D25所述的装置,所述虚拟机为VirtualBox虚拟机;所述启动虚拟控制单元具体用于,通过所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
D27、如D25所述的装置,所述虚拟机为VirtualBox虚拟机;所述虚拟IP地址获取单元具体用于,读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
D28、如D24所述的装置,所述虚拟连接建立单元具体用于,在所述虚拟操作系统的指定端口,所述模拟控制程序与所述虚拟操作系统的vinput进程建立连接。
D29、如D24所述的装置,所述用户命令处理单元具体用于,对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
D30、如D24所述的装置,所述虚拟网络配置单元,具体用于,配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
E31、一种虚拟输入控制的装置,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述装置设置在所述虚拟操作系统侧,所述装置包括:
虚拟启动单元,用于在所述宿主操作系统中的模拟控制程序控制下,启动所述虚拟操作系统;
基础进程控制单元,用于在所述虚拟操作系统中通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程;
虚拟连接建立单元,用于建立所述虚拟输入服务进程与所述模拟控制程序之间的连接;
用户命令解译单元,用于通过所述虚拟输入服务进程接收所述模拟控制程序发送的输入控制消息,并对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
E32、如E31所述的装置,所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
E33、如E32所述的装置,所述虚拟机为VirtualBox虚拟机;所述虚拟启动单元具体用于,在所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
E34、如E32所述的装置,所述虚拟机为VirtualBox虚拟机;所述基础进程控制单元具体用于,控制所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性,以及,通过init进程启动vinput进程。
E35、如E31所述的装置,所述虚拟连接建立单元具体用于,在所述虚拟操作系统的指定端口,控制所述vinput进程建立与所述模拟控制程序的连接。
E36、如E31所述的装置,所述用户命令解译单元具体用于,控制对所述虚拟输入服务进程获取到的所述输入控制消息进行解译,得到控制命令;对解译后的控制命令进行硬件抽象层HAL转换,得到所述虚拟操作系统可识别的输入控制信号。
F37、一种虚拟输入控制的系统,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述系统包括:
宿主操作系统,用于建立与所述虚拟操作系统的网络连接,并通过模拟控制程序启动所述虚拟操作系统,以及,根据获取的所述虚拟操作系统的IP地址,建立所述模拟控制程序与所述虚拟操作系统中的输入服务进程之间的连接,并且,在接收到用户的控制命令后,根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程;
虚拟操作系统,用于通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程,以及,由所述虚拟输入服务进程接收所述模拟控制程序发送来的输入控制消息,并且,对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
F38、如F37所述的虚拟输入控制的系统,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
F39、如F38所述的虚拟输入控制的系统,所述虚拟机为VirtualBox虚拟机;所述宿主操作系统具体用于,通过模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
F40、如F38所述的虚拟输入控制的系统,所述虚拟机为VirtualBox虚拟机;所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性;所述宿主操作系统读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
F41、如F37所述的虚拟输入控制的系统,所述虚拟操作系统通过init进程启动vinput进程;在所述虚拟操作系统的指定端口,所述vinput进程建立与所述模拟控制程序的连接。
F42、如F37所述的虚拟输入控制的系统,所述宿主操作系统具体用于,对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
F43、如F37所述的虚拟输入控制的系统,所述虚拟操作系统具体用于,控制对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到控制命令;并对所述控制命令进行硬件抽象层HAL转换;得到所述虚拟操作系统可识别的输入控制信号。
F44、如F37所述的虚拟输入控制的系统,所述宿主操作系统配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
F45、如F37-F44任一项所述的虚拟输入控制的系统,所述宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;所述虚拟操作系统包括Android操作系统。

Claims (45)

1.一种虚拟输入控制的方法,其特征在于,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述方法包括:
所述宿主操作系统与所述虚拟操作系统建立网络连接后,通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统;
所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程;
所述宿主操作系统根据所述虚拟操作系统的IP地址,建立所述模拟控制程序与所述虚拟输入服务进程之间的连接;
所述宿主操作系统接收到用户的控制命令后,根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程;
所述虚拟操作系统对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
2.如权利要求1所述的方法,其特征在于,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
3.如权利要求2所述的方法,其特征在于,所述虚拟机为VirtualBox虚拟机;
所述通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统,包括:通过所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
4.如权利要求2所述的方法,其特征在于,所述虚拟机为VirtualBox虚拟机;
所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,包括:
所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性;
所述宿主操作系统读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
5.如权利要求1所述的方法,其特征在于,
所述通过所述基础进程启动虚拟输入服务进程,包括:通过init进程启动vinput进程;
所述建立所述模拟控制程序与所述虚拟输入服务进程之间的连接,包括:在所述虚拟操作系统的指定端口,所述vinput进程建立与所述模拟控制程序的连接。
6.如权利要求1所述的方法,其特征在于,所述根据所述控制命令转译得到输入控制消息,包括:
所述模拟控制程序对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
7.如权利要求1所述的方法,其特征在于,所述虚拟输入服务进程对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号,包括:
对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到所述控制命令;
对解译得到的控制命令进行硬件抽象层HAL转换,得到所述虚拟操作系统可识别的输入控制信号。
8.如权利要求1所述的方法,其特征在于,所述宿主操作系统与所述虚拟操作系统建立网络连接包括:所述宿主操作系统配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
9.如权利要求1-8任一项所述的方法,其特征在于,所述宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;所述虚拟操作系统包括Android操作系统。
10.一种虚拟输入控制的方法,其特征在于,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述方法包括:
所述宿主操作系统与所述虚拟操作系统建立网络连接后,通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统;
所述宿主操作系统通过所述模拟控制程序获取所述虚拟操作系统的IP地址,建立所述模拟控制程序与所述虚拟操作系统中虚拟输入服务进程之间的连接;
所述宿主操作系统接收到用户的控制命令后,根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程。
11.如权利要求10所述的方法,其特征在于,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
12.如权利要求11所述的方法,其特征在于,所述虚拟机为VirtualBox虚拟机;
所述通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统,包括:通过所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
13.如权利要求11所述的方法,其特征在于,所述虚拟机为VirtualBox虚拟机;
所述宿主操作系统通过所述模拟控制程序获取所述虚拟操作系统的IP地址,包括;所述宿主操作系统通过所述模拟控制程序读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
14.如权利要求10所述的方法,其特征在于,所述建立所述模拟控制程序与所述虚拟操作系统中虚拟输入服务进程之间的连接,包括:在所述虚拟操作系统的指定端口,建立所述模拟控制程序与所述虚拟操作系统中虚拟输入服务进程之间的连接。
15.如权利要求10所述的方法,其特征在于,所述根据所述控制命令转译得到输入控制消息,包括:
所述模拟控制程序对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
16.如权利要求10所述的方法,其特征在于,所述宿主操作系统与所述虚拟操作系统建立网络连接包括:所述宿主操作系统配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
17.如权利要求10-16任一项所述的方法,其特征在于,所述宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;所述虚拟操作系统包括Android操作系统。
18.一种虚拟输入控制的方法,其特征在于,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述方法包括:
所述虚拟操作系统与所述宿主操作系统建立网络连接后,所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程;
通过将所述虚拟操作系统的IP地址提供给所述宿主操作系统,建立所述宿主操作系统中的模拟控制程序与所述虚拟输入服务进程之间的连接;
所述虚拟输入服务进程接收所述输入控制程序发送的输入控制消息,所述虚拟操作系统对所述宿主操作系统发送的输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
19.如权利要求18所述的方法,其特征在于,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
20.如权利要求19所述的方法,其特征在于,所述虚拟机为VirtualBox虚拟机;
所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,包括:
所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性;
所述宿主操作系统读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
21.如权利要求18所述的方法,其特征在于,
所述通过所述基础进程启动虚拟输入服务进程,包括:通过init进程启动vinput进程;
所述建立所述模拟控制程序与所述虚拟输入服务进程之间的连接,包括:在所述虚拟操作系统的指定端口,所述vinput进程建立与所述模拟控制程序的连接。
22.如权利要求18所述的方法,其特征在于,所述虚拟输入服务进程对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号,包括:
对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到控制命令;
对解译得到的控制命令进行硬件抽象层HAL转换,得到所述虚拟操作系统可识别的输入控制信号。
23.如权利要求18-22任一项所述的方法,其特征在于,所述宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;所述虚拟操作系统包括Android操作系统。
24.一种虚拟输入控制的装置,其特征在于,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述装置设置在所述宿主操作系统侧,所述装置包括:
虚拟网络配置单元,用于配置所述宿主操作系统与所述虚拟操作系统建立网络连接;
启动虚拟控制单元,用于控制所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统;
虚拟IP地址获取单元,用于获取所述虚拟操作系统的IP地址;
虚拟连接建立单元,用于根据所述虚拟操作系统的IP地址,建立所述模拟控制程序与虚拟操作系统中虚拟输入服务进程之间的连接;
用户命令接收单元,用于接收用户的控制命令;
用户命令处理单元,用于根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程。
25.如权利要求24所述的装置,其特征在于,所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
26.如权利要求25所述的装置,其特征在于,所述虚拟机为VirtualBox虚拟机;所述启动虚拟控制单元具体用于,通过所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
27.如权利要求25所述的装置,其特征在于,所述虚拟机为VirtualBox虚拟机;所述虚拟IP地址获取单元具体用于,读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
28.如权利要求24所述的装置,其特征在于,所述虚拟连接建立单元具体用于,在所述虚拟操作系统的指定端口,所述模拟控制程序与所述虚拟操作系统的vinput进程建立连接。
29.如权利要求24所述的装置,其特征在于,所述用户命令处理单元具体用于,对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
30.如权利要求24所述的装置,其特征在于,所述虚拟网络配置单元,具体用于,配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
31.一种虚拟输入控制的装置,其特征在于,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述装置设置在所述虚拟操作系统侧,所述装置包括:
虚拟启动单元,用于在所述宿主操作系统中的模拟控制程序控制下,启动所述虚拟操作系统;
基础进程控制单元,用于在所述虚拟操作系统中通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程;
虚拟连接建立单元,用于建立所述虚拟输入服务进程与所述模拟控制程序之间的连接;
用户命令解译单元,用于通过所述虚拟输入服务进程接收所述模拟控制程序发送的输入控制消息,并对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
32.如权利要求31所述的装置,其特征在于,所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
33.如权利要求32所述的装置,其特征在于,所述虚拟机为VirtualBox虚拟机;所述虚拟启动单元具体用于,在所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
34.如权利要求32所述的装置,其特征在于,所述虚拟机为VirtualBox虚拟机;所述基础进程控制单元具体用于,控制所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性,以及,通过init进程启动vinput进程。
35.如权利要求31所述的装置,其特征在于,所述虚拟连接建立单元具体用于,在所述虚拟操作系统的指定端口,控制vinput进程建立与所述模拟控制程序的连接。
36.如权利要求31所述的装置,其特征在于,所述用户命令解译单元具体用于,控制对所述虚拟输入服务进程获取到的所述输入控制消息进行解译,得到控制命令;对解译后的控制命令进行硬件抽象层HAL转换,得到所述虚拟操作系统可识别的输入控制信号。
37.一种虚拟输入控制的系统,其特征在于,用于实现在虚拟操作系统中对宿主操作系统的输入进行控制,所述系统包括:
宿主操作系统,用于建立与所述虚拟操作系统的网络连接,并通过模拟控制程序启动所述虚拟操作系统,以及,根据获取的所述虚拟操作系统的IP地址,建立所述模拟控制程序与所述虚拟操作系统中的输入服务进程之间的连接,并且,在接收到用户的控制命令后,根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程;
虚拟操作系统,用于通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程,以及,由所述虚拟输入服务进程接收所述模拟控制程序发送来的输入控制消息,并且,对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
38.如权利要求37所述的虚拟输入控制的系统,其特征在于,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
39.如权利要求38所述的虚拟输入控制的系统,其特征在于,所述虚拟机为VirtualBox虚拟机;所述宿主操作系统具体用于,通过模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
40.如权利要求38所述的虚拟输入控制的系统,其特征在于,所述虚拟机为VirtualBox虚拟机;所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性;所述宿主操作系统读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
41.如权利要求37所述的虚拟输入控制的系统,其特征在于,所述虚拟操作系统通过init进程启动vinput进程;在所述虚拟操作系统的指定端口,所述vinput进程建立与所述模拟控制程序的连接。
42.如权利要求37所述的虚拟输入控制的系统,其特征在于,所述宿主操作系统具体用于,对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
43.如权利要求37所述的虚拟输入控制的系统,其特征在于,所述虚拟操作系统具体用于,控制对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到控制命令;并对所述控制命令进行硬件抽象层HAL转换;得到所述虚拟操作系统可识别的输入控制信号。
44.如权利要求37所述的虚拟输入控制的系统,其特征在于,所述宿主操作系统配置一个专门用来与所述虚拟操作系统通信的虚拟网络连接,使得宿主操作系统和虚拟操作系统在所述虚拟网络连接中连通。
45.如权利要求37-44任一项所述的虚拟输入控制的系统,其特征在于,所述宿主操作系统包括Windows操作系统、Mac操作系统或Linux操作系统;所述虚拟操作系统包括Android操作系统。
CN201510921251.8A 2015-12-11 2015-12-11 虚拟输入控制的方法、装置及系统 Active CN105573817B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510921251.8A CN105573817B (zh) 2015-12-11 2015-12-11 虚拟输入控制的方法、装置及系统
CN201811627426.4A CN109669763A (zh) 2015-12-11 2015-12-11 虚拟输入控制的方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510921251.8A CN105573817B (zh) 2015-12-11 2015-12-11 虚拟输入控制的方法、装置及系统

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201811627426.4A Division CN109669763A (zh) 2015-12-11 2015-12-11 虚拟输入控制的方法、装置及系统

Publications (2)

Publication Number Publication Date
CN105573817A CN105573817A (zh) 2016-05-11
CN105573817B true CN105573817B (zh) 2019-02-12

Family

ID=55883989

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201510921251.8A Active CN105573817B (zh) 2015-12-11 2015-12-11 虚拟输入控制的方法、装置及系统
CN201811627426.4A Pending CN109669763A (zh) 2015-12-11 2015-12-11 虚拟输入控制的方法、装置及系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201811627426.4A Pending CN109669763A (zh) 2015-12-11 2015-12-11 虚拟输入控制的方法、装置及系统

Country Status (1)

Country Link
CN (2) CN105573817B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019032040A1 (en) * 2017-08-07 2019-02-14 Zmijewski Peter Marek SYSTEM AND METHOD FOR ACCESSING DIGITAL CONTENT ON A PERSONAL COMPUTER
WO2019119315A1 (zh) * 2017-12-20 2019-06-27 深圳前海达闼云端智能科技有限公司 基于多操作系统的输入处理方法、装置及电子设备
CN112394871B (zh) * 2020-11-30 2021-11-02 北京麟卓信息科技有限公司 一种Linux平台支持安卓系统多点触摸的方法及装置
CN114448939B (zh) * 2022-04-07 2022-07-05 广州市保伦电子有限公司 一种基于VirtualBox的获取宿主机IP地址的方法及后台服务器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103092650A (zh) * 2013-01-09 2013-05-08 华中科技大学 云环境下基于软件预安装的虚拟机镜像生成方法和系统
CN103475526A (zh) * 2013-09-18 2013-12-25 国云科技股份有限公司 一种支持多vlan的虚拟机的ip设置和检测方法
CN104468106A (zh) * 2013-09-17 2015-03-25 上海俊悦光纤网络科技有限公司 一种云计算终端认证方法
CN104808592A (zh) * 2015-03-13 2015-07-29 华中科技大学 一种基于虚拟上位机的数控系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105573640A (zh) * 2014-10-21 2016-05-11 中兴通讯股份有限公司 一种动态键盘的实现方法和系统
CN104740872B (zh) * 2015-04-13 2018-06-19 北京奇虎科技有限公司 模拟安卓环境中游戏程序运行控制方法及装置
CN104915244B (zh) * 2015-06-30 2018-02-16 北京奇虎科技有限公司 键鼠脚本回放的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103092650A (zh) * 2013-01-09 2013-05-08 华中科技大学 云环境下基于软件预安装的虚拟机镜像生成方法和系统
CN104468106A (zh) * 2013-09-17 2015-03-25 上海俊悦光纤网络科技有限公司 一种云计算终端认证方法
CN103475526A (zh) * 2013-09-18 2013-12-25 国云科技股份有限公司 一种支持多vlan的虚拟机的ip设置和检测方法
CN104808592A (zh) * 2015-03-13 2015-07-29 华中科技大学 一种基于虚拟上位机的数控系统

Also Published As

Publication number Publication date
CN109669763A (zh) 2019-04-23
CN105573817A (zh) 2016-05-11

Similar Documents

Publication Publication Date Title
US10620921B2 (en) Application system for generating 3D applications
CN105573817B (zh) 虚拟输入控制的方法、装置及系统
CN105573816B (zh) 虚拟输入的方法、装置及系统
US9830176B2 (en) Methods, systems, and media for binary compatible graphics support in mobile operating systems
Huang et al. Programming situational mobile web applications with cloud-mobile convergence: an internetware-oriented approach
US20020129340A1 (en) Reconfigurable isomorphic software representations
US20090313004A1 (en) Platform-Independent Application Development Framework
CN109416825B (zh) 用于设备的双重存在的现实到虚拟现实门户
EP3069544A1 (en) Protecting privacy in web-based immersive augmented reality
CN107408052A (zh) 共享对象层级上的二进制转换
US20160077850A1 (en) Methods, systems, and media for binary compatibility
EP3954090A1 (en) Method and apparatus for model mapping and dynamically enabling external model on the network device
US20190278591A1 (en) Representing a software application using extended reality
CN105521603B (zh) 针对跑酷类游戏进行虚拟输入控制的方法、装置及系统
CN113625997B (zh) 一种xr软件开发架构、应用方法和电子设备
CN105550046B (zh) 虚拟操控的方法、装置及系统
CN105550017A (zh) 针对应用进行虚拟输入控制的方法、装置及系统
McClure et al. Professional Android Programming with Mono for Android and. NET/C
Nair et al. Learning LibGDX Game Development
Johnson Using MVVM Light with your Xamarin Apps
Charan et al. Customizing AOSP for different embedded devices
Grolaux Transparent migration and adaptation in a graphical user interface toolkit.
CN105550045A (zh) 利用移动终端对虚拟输入进行控制的方法、装置及系统
CN112749032B (zh) 一种支持多模态交互的软件架构
Bataille et al. Unified model and framework for interactive mixed entity systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220728

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.