CN105550017A - 针对应用进行虚拟输入控制的方法、装置及系统 - Google Patents

针对应用进行虚拟输入控制的方法、装置及系统 Download PDF

Info

Publication number
CN105550017A
CN105550017A CN201510921237.8A CN201510921237A CN105550017A CN 105550017 A CN105550017 A CN 105550017A CN 201510921237 A CN201510921237 A CN 201510921237A CN 105550017 A CN105550017 A CN 105550017A
Authority
CN
China
Prior art keywords
virtual
operating system
host operating
input control
virtual opetrating
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.)
Pending
Application number
CN201510921237.8A
Other languages
English (en)
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
Qizhi Software Beijing 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 CN201510921237.8A priority Critical patent/CN105550017A/zh
Publication of CN105550017A publication Critical patent/CN105550017A/zh
Pending legal-status Critical Current

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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]

Abstract

本发明公开了一种针对应用进行虚拟输入控制的方法、装置及系统,其中的方法包括:建立宿主操作系统与虚拟操作系统之间的通信连接;针对应用,在宿主操作系统中配置并存储按键信息与控制命令的对应关系;当在虚拟操作系统上运行应用时,宿主操作系统接收到用户输入的按键信息后,根据对应关系,确定用户输入的按键信息对应的控制命令;通过通信连接,宿主操作系统向虚拟操作系统提供基于控制命令的输入控制消息,由虚拟操作系统对输入控制消息进行处理。本发明能够针对特定应用进行特定按键的快速操作,非常方便,提升用户感受。

Description

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

Claims (10)

1.一种针对应用进行虚拟输入控制的方法,其特征在于,用于对运行在寄生于宿主操作系统的虚拟操作系统上的所述应用进行输入控制,所述方法包括:
建立所述宿主操作系统与所述虚拟操作系统之间的通信连接;
针对所述应用,在所述宿主操作系统中配置并存储按键信息与控制命令的对应关系;
当所述应用在所述虚拟操作系统上运行时,所述宿主操作系统接收到用户输入的按键信息后,根据所述对应关系,确定用户输入的按键信息对应的控制命令;
通过所述通信连接,所述宿主操作系统向所述虚拟操作系统提供基于所述控制命令的输入控制消息,由所述虚拟操作系统对输入控制消息进行处理。
2.如权利要求1所述的方法,其特征在于,所述建立所述宿主操作系统与所述虚拟操作系统之间的通信连接,包括:
通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统;
所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,以及,通过所述基础进程启动虚拟输入服务进程;
所述宿主操作系统根据所述虚拟操作系统的IP地址,建立所述模拟控制程序与所述虚拟输入服务进程之间的连接。
3.如权利要求2所述的方法,其特征在于,
在所述宿主操作系统确定用户输入的按键信息对应的控制命令之后,还包括:所述宿主操作系统根据所述控制命令转译得到输入控制消息,由所述模拟控制程序将所述输入控制消息发送给所述虚拟输入服务进程;
所述由所述虚拟操作系统对输入控制消息进行处理包括:所述虚拟操作系统对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号。
4.如权利要求3所述的方法,其特征在于,所述根据所述控制命令转译得到输入控制消息,包括:
所述模拟控制程序对所述控制命令以及控制参数进行转译,生成所述输入控制消息。
5.如权利要求3所述的方法,其特征在于,所述虚拟输入服务进程对所述输入控制消息进行解译,得到所述虚拟操作系统可识别的输入控制信号,包括:
对所述虚拟输入服务进程接收到的所述输入控制消息进行解译,得到所述控制命令;
对解译得到的控制命令进行硬件抽象层HAL转换,得到所述虚拟操作系统可识别的输入控制信号。
6.如权利要求2所述的方法,其特征在于,
所述虚拟操作系统运行在与所述宿主操作系统所在物理设备相独立的另一个物理设备上;或者,
所述虚拟操作系统运行在虚拟机上,其中,所述虚拟机运行在所述宿主操作系统所在的物理设备上,或者,所述虚拟机运行在与所述宿主操作系统所在物理设备不同的另一个物理设备上。
7.如权利要求6所述的方法,其特征在于,所述虚拟机为VirtualBox虚拟机;
所述通过所述宿主操作系统中的模拟控制程序启动所述虚拟操作系统,包括:通过所述宿主操作系统中的模拟控制程序控制VirtualBox虚拟机,由VirtualBox虚拟机启动所述虚拟操作系统。
8.如权利要求6所述的方法,其特征在于,所述虚拟机为VirtualBox虚拟机;
所述虚拟操作系统通过基础进程加载预定义脚本,从而将所述虚拟操作系统的IP地址提供给所述宿主操作系统,包括:
所述虚拟操作系统通过init进程加载预定义脚本,运行VirtualBox虚拟机的客户扩展组件,将所述虚拟操作系统的IP地址写入VirtualBox虚拟机的客户属性;
所述宿主操作系统读取所述VirtualBox虚拟机的客户属性,获取所述虚拟操作系统的IP地址。
9.一种针对应用进行虚拟输入控制的装置,其特征在于,用于对运行在寄生于宿主操作系统的虚拟操作系统上的所述应用进行输入控制,所述装置包括:
宿主虚拟通信单元,用于建立所述宿主操作系统与所述虚拟操作系统之间的通信连接;
配置单元,用于针对所述应用,在所述宿主操作系统中配置并存储按键信息与控制命令的对应关系;
控制命令确定单元,用于在所述宿主操作系统接收到用户输入的按键信息后,根据所述对应关系,确定用户输入的按键信息对应的控制命令;
控制命令处理单元,用于通过所述通信连接,由所述宿主操作系统向所述虚拟操作系统提供基于所述控制命令的输入控制消息,以便所述虚拟操作系统对输入控制消息进行处理。
10.一种针对应用进行虚拟输入控制的系统,其特征在于,用于对运行在寄生于宿主操作系统的虚拟操作系统上的所述应用进行输入控制,所述系统包括:
宿主操作系统,用于建立与所述虚拟操作系统之间的通信连接,并针对所述应用,配置并存储按键信息与控制命令的对应关系;在所述虚拟操作系统上运行所述应用时,接收到用户输入的按键信息后,根据所述对应关系,确定用户输入的按键信息对应的控制命令;通过所述通信连接,向所述虚拟操作系统提供基于所述控制命令的输入控制消息,
虚拟操作系统,用于建立与所述宿主操作系统之间的通信连接,并在接收到宿主操作系统的输入控制消息之后,对输入控制消息进行处理。
CN201510921237.8A 2015-12-11 2015-12-11 针对应用进行虚拟输入控制的方法、装置及系统 Pending CN105550017A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510921237.8A CN105550017A (zh) 2015-12-11 2015-12-11 针对应用进行虚拟输入控制的方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510921237.8A CN105550017A (zh) 2015-12-11 2015-12-11 针对应用进行虚拟输入控制的方法、装置及系统

Publications (1)

Publication Number Publication Date
CN105550017A true CN105550017A (zh) 2016-05-04

Family

ID=55829215

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510921237.8A Pending CN105550017A (zh) 2015-12-11 2015-12-11 针对应用进行虚拟输入控制的方法、装置及系统

Country Status (1)

Country Link
CN (1) CN105550017A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106844066A (zh) * 2017-01-22 2017-06-13 腾讯科技(深圳)有限公司 一种应用运行方法、装置及系统
CN110214323A (zh) * 2017-01-24 2019-09-06 微软技术许可有限责任公司 包围区抽象模型
CN111200535A (zh) * 2018-11-16 2020-05-26 阿里巴巴集团控股有限公司 设备的模拟系统和方法
WO2023116167A1 (zh) * 2021-12-20 2023-06-29 北京有竹居网络技术有限公司 生命周期事件管理方法、装置、存储介质以及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1215575A2 (en) * 2000-12-15 2002-06-19 DoCoMo Communications Laboratories USA, Inc. Method and system for effecting migration of application among heterogeneous device
CN103777999A (zh) * 2014-01-09 2014-05-07 深圳市星策网络科技有限公司 安卓软件模拟方法及装置
CN104317415A (zh) * 2014-09-25 2015-01-28 北京云巢动脉科技有限公司 在移动端虚拟机内实现单一按键替代组合键的方法和系统
CN104740872A (zh) * 2015-04-13 2015-07-01 北京奇虎科技有限公司 模拟安卓环境中游戏程序运行控制方法及装置
CN105094839A (zh) * 2015-08-14 2015-11-25 深圳市众联悠游科技有限公司 基于PC机实现运行Android系统应用的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1215575A2 (en) * 2000-12-15 2002-06-19 DoCoMo Communications Laboratories USA, Inc. Method and system for effecting migration of application among heterogeneous device
CN103777999A (zh) * 2014-01-09 2014-05-07 深圳市星策网络科技有限公司 安卓软件模拟方法及装置
CN104317415A (zh) * 2014-09-25 2015-01-28 北京云巢动脉科技有限公司 在移动端虚拟机内实现单一按键替代组合键的方法和系统
CN104740872A (zh) * 2015-04-13 2015-07-01 北京奇虎科技有限公司 模拟安卓环境中游戏程序运行控制方法及装置
CN105094839A (zh) * 2015-08-14 2015-11-25 深圳市众联悠游科技有限公司 基于PC机实现运行Android系统应用的方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106844066A (zh) * 2017-01-22 2017-06-13 腾讯科技(深圳)有限公司 一种应用运行方法、装置及系统
CN110214323A (zh) * 2017-01-24 2019-09-06 微软技术许可有限责任公司 包围区抽象模型
CN111200535A (zh) * 2018-11-16 2020-05-26 阿里巴巴集团控股有限公司 设备的模拟系统和方法
WO2023116167A1 (zh) * 2021-12-20 2023-06-29 北京有竹居网络技术有限公司 生命周期事件管理方法、装置、存储介质以及电子设备

Similar Documents

Publication Publication Date Title
CN104740872B (zh) 模拟安卓环境中游戏程序运行控制方法及装置
CN105573816A (zh) 虚拟输入的方法、装置及系统
CN110178357A (zh) 远程设备可接入的云中基于云的手机服务
US9183121B2 (en) Network development and testing as a cloud service
US20160117231A1 (en) Complex Network Modeling For Disaster Recovery
CN105550017A (zh) 针对应用进行虚拟输入控制的方法、装置及系统
EP1385088A2 (en) Method and system for implementing a portable adaptable operating environment identity
CN104050013B (zh) 虚拟桌面处理方法、装置及虚拟桌面服务器
CN107408052A (zh) 共享对象层级上的二进制转换
CN109739656A (zh) 接口数据模拟方法、装置、存储介质和电子设备
CN105521603A (zh) 针对跑酷类游戏进行虚拟输入控制的方法、装置及系统
CN106215418A (zh) 一种应用的显示控制方法及其装置、终端
CN109800135A (zh) 一种信息处理方法及终端
CN105573817A (zh) 虚拟输入控制的方法、装置及系统
CN109509242B (zh) 虚拟对象面部表情生成方法及装置、存储介质、电子设备
CN105550046A (zh) 虚拟操控的方法、装置及系统
CN106815055A (zh) 移动应用动态布局的方法与系统
US20210294653A1 (en) Apparatus and method of securely and efficiently interfacing with a cloud computing service
CN105740012A (zh) 一种更新电脑的bios程序的方法
KR100952680B1 (ko) 이동통신 단말의 플랫폼 개발검증 시스템
CN103944960A (zh) 一种智能密集架网络控制方法
CN108170275B (zh) 虚拟现实设备外接设备的输入信息的处理方法及装置
CN105550045A (zh) 利用移动终端对虚拟输入进行控制的方法、装置及系统
CN112346763A (zh) 更新应用apk的方法及装置
CN104820615B (zh) 一种仿真方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160504

RJ01 Rejection of invention patent application after publication