虛擬輸入控制的方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種虛擬輸入控制的方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]隨著近年來移動(dòng)智能終端的普及,催生了移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展,現(xiàn)在種類繁多而豐富多彩的應(yīng)用讓移動(dòng)智能終端可以滿足人們的各種需求。但是由于在某些方面的技術(shù)瓶頸,諸如電池的續(xù)航能力、屏幕的尺寸以及用戶在使用移動(dòng)設(shè)備時(shí)不可避免的局限(如操作的精準(zhǔn)度等),都會(huì)影響用戶的使用體驗(yàn)。因此如果能在PC上模擬出移動(dòng)終端的運(yùn)行環(huán)境,并充分發(fā)揮PC的優(yōu)勢(shì),例如持續(xù)的電力、大屏幕的絢麗的畫面效果、鍵盤鼠標(biāo)的精準(zhǔn)操作等,可以很大程度上滿足用戶在移動(dòng)智能終端上無法得到的體驗(yàn)。為此安卓(android)模擬器應(yīng)運(yùn)而生。安卓模擬器是一個(gè)能在Windows平臺(tái)模擬安卓手機(jī)系統(tǒng)的模擬器,安卓模擬器能在電腦上模擬出安卓手機(jī)運(yùn)行環(huán)境,安卓模擬器讓用戶在電腦上也能體驗(yàn)安卓游戲和應(yīng)用。比較常用的安卓模擬器有= Android SDK、BlueStacks,可在PC系統(tǒng)和蘋果1S系統(tǒng)運(yùn)行,著名的vmware虛擬機(jī)和Virtual Box虛擬機(jī)也可以模擬安卓系統(tǒng),目前這些模擬器軟件均可運(yùn)行在微軟公司的Windows操作系統(tǒng)平臺(tái)。
[0003]如何運(yùn)用PC現(xiàn)有輸入手段實(shí)現(xiàn)對(duì)虛擬android系統(tǒng)的控制則是關(guān)系到用戶體驗(yàn)的關(guān)鍵技術(shù)。由于需要在虛擬機(jī)中運(yùn)行android,所以通常會(huì)考慮使用開源虛擬機(jī)VirtualBox JirtualBox是一款開源虛擬機(jī)軟件,用戶可以在VirtualBox上安裝并且執(zhí)行Solaris、Windows、D0S、Linux、0S/2Warp、BSD 等系統(tǒng)作為客戶端操作系統(tǒng)。VirtualBox 虛擬機(jī)本身就可以將用戶在虛擬機(jī)上的輸入控制模擬輸入到內(nèi)部運(yùn)行的Guest系統(tǒng)中,但前提是VirtualBox虛擬機(jī)窗口必須是可見的。
[0004]但是,借助VirtualBox實(shí)現(xiàn)虛擬安卓系統(tǒng)至少存在以下問題:
[0005]首先,由于VirtualBox虛擬機(jī)外掛不可定制,因此這對(duì)于一個(gè)希望自己定制外觀的產(chǎn)品來說實(shí)際上就是不可接受的。
[0006]其次,如果沒有額外的輸入控制優(yōu)化組件,VirtualBox會(huì)將用戶的鼠標(biāo)活動(dòng)范圍鎖定的在當(dāng)前的虛擬機(jī)窗口上,并且對(duì)于android這樣的Guest系統(tǒng)的輸入控制實(shí)際上也并不流暢。也就是,VirtualBox將鼠標(biāo)的活動(dòng)范圍鎖定在當(dāng)前窗口會(huì)很大程度上影響用戶體驗(yàn),并且對(duì)于不同的Guest系統(tǒng)并不能保證輸入控制的順暢。VirtualBox將鼠標(biāo)的活動(dòng)范圍鎖定在當(dāng)前窗口是VirtualBox的產(chǎn)品策略所致。
[0007]另外,由于VirtualBox是一個(gè)開源的通用虛擬機(jī)軟件,可以在其上運(yùn)行的操作系統(tǒng)也不僅限于Android,雖然VirtualBox可以為運(yùn)行其中的Guest系統(tǒng)提供輸入控制,但是由于Guest系統(tǒng)種類很多,所以不可能每一個(gè)達(dá)到非常良好的效果。其自身對(duì)Android的輸入控制就不夠流暢。
【發(fā)明內(nèi)容】
[0008]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的虛擬輸入控制的方法、裝置及系統(tǒng)。
[0009]依據(jù)本發(fā)明的一個(gè)方面,提供一種虛擬輸入控制的方法,用于實(shí)現(xiàn)在虛擬操作系統(tǒng)中對(duì)宿主操作系統(tǒng)的輸入進(jìn)行控制,所述方法包括:
[0010]所述宿主操作系統(tǒng)與所述虛擬操作系統(tǒng)建立網(wǎng)絡(luò)連接后,通過所述宿主操作系統(tǒng)中的模擬控制程序啟動(dòng)所述虛擬操作系統(tǒng);
[0011]所述虛擬操作系統(tǒng)通過基礎(chǔ)進(jìn)程加載預(yù)定義腳本,從而將所述虛擬操作系統(tǒng)的IP地址提供給所述宿主操作系統(tǒng),以及,通過所述基礎(chǔ)進(jìn)程啟動(dòng)虛擬輸入服務(wù)進(jìn)程;
[0012]所述宿主操作系統(tǒng)根據(jù)所述虛擬操作系統(tǒng)的IP地址,建立所述模擬控制程序與所述虛擬輸入服務(wù)進(jìn)程之間的連接;
[0013]所述宿主操作系統(tǒng)接收到用戶的控制命令后,根據(jù)所述控制命令轉(zhuǎn)譯得到輸入控制消息,由所述模擬控制程序?qū)⑺鲚斎肟刂葡l(fā)送給所述虛擬輸入服務(wù)進(jìn)程;
[0014]所述虛擬操作系統(tǒng)對(duì)所述輸入控制消息進(jìn)行解譯,得到所述虛擬操作系統(tǒng)可識(shí)別的輸入控制信號(hào)。
[0015]優(yōu)選的,
[0016]所述虛擬操作系統(tǒng)運(yùn)行在與所述宿主操作系統(tǒng)所在物理設(shè)備相獨(dú)立的另一個(gè)物理設(shè)備上;或者,
[0017]所述虛擬操作系統(tǒng)運(yùn)行在虛擬機(jī)上,其中,所述虛擬機(jī)運(yùn)行在所述宿主操作系統(tǒng)所在的物理設(shè)備上,或者,所述虛擬機(jī)運(yùn)行在與所述宿主操作系統(tǒng)所在物理設(shè)備不同的另一個(gè)物理設(shè)備上。
[0018]優(yōu)選的,
[0019]所述虛擬機(jī)為VirtualBox虛擬機(jī);
[0020]所述通過所述宿主操作系統(tǒng)中的模擬控制程序啟動(dòng)所述虛擬操作系統(tǒng),包括:通過所述宿主操作系統(tǒng)中的模擬控制程序控制VirtualBox虛擬機(jī),由VirtualBox虛擬機(jī)啟動(dòng)所述虛擬操作系統(tǒng)。
[0021 ]優(yōu)選的,
[0022]所述虛擬機(jī)為VirtualBox虛擬機(jī);
[0023]所述虛擬操作系統(tǒng)通過基礎(chǔ)進(jìn)程加載預(yù)定義腳本,從而將所述虛擬操作系統(tǒng)的IP地址提供給所述宿主操作系統(tǒng),包括:
[0024]所述虛擬操作系統(tǒng)通過ini t進(jìn)程加載預(yù)定義腳本,運(yùn)行VirtualBox虛擬機(jī)的客戶擴(kuò)展組件,將所述虛擬操作系統(tǒng)的IP地址寫入VirtualBox虛擬機(jī)的客戶屬性;
[0025]所述宿主操作系統(tǒng)讀取所述VirtualBox虛擬機(jī)的客戶屬性,獲取所述虛擬操作系統(tǒng)的IP地址。
[0026]優(yōu)選的,
[0027]所述通過所述基礎(chǔ)進(jìn)程啟動(dòng)虛擬輸入服務(wù)進(jìn)程,包括:通過ini t進(jìn)程啟動(dòng)vinput進(jìn)程;
[0028]所述建立所述模擬控制程序與所述虛擬輸入服務(wù)進(jìn)程之間的連接,包括:在所述虛擬操作系統(tǒng)的指定端口,所述vinput進(jìn)程建立與所述模擬控制程序的連接。
[0029]優(yōu)選的,
[0030]所述根據(jù)所述控制命令轉(zhuǎn)譯得到輸入控制消息,包括:
[0031]所述模擬控制程序?qū)λ隹刂泼钜约翱刂茀?shù)進(jìn)行轉(zhuǎn)譯,生成所述輸入控制消息。
[0032]優(yōu)選的,
[0033]所述虛擬輸入服務(wù)進(jìn)程對(duì)所述輸入控制消息進(jìn)行解譯,得到所述虛擬操作系統(tǒng)可識(shí)別的輸入控制信號(hào),包括:
[0034]對(duì)所述虛擬輸入服務(wù)進(jìn)程接收到的所述輸入控制消息進(jìn)行解譯,得到所述控制命令;
[0035]對(duì)解譯得到的控制命令進(jìn)行硬件抽象層HAL轉(zhuǎn)換,得到所述虛擬操作系統(tǒng)可識(shí)別的輸入控制信號(hào)。
[0036]優(yōu)選的,
[0037]所述宿主操作系統(tǒng)與所述虛擬操作系統(tǒng)建立網(wǎng)絡(luò)連接包括:所述宿主操作系統(tǒng)配置一個(gè)專門用來與所述虛擬操作系統(tǒng)通信的虛擬網(wǎng)絡(luò)連接,使得宿主操作系統(tǒng)和虛擬操作系統(tǒng)在所述虛擬網(wǎng)絡(luò)連接中連通。
[0038]優(yōu)選的,
[0039I所述宿主操作系統(tǒng)包括Windows操作系統(tǒng)、Mac操作系統(tǒng)或Linux操作系統(tǒng);所述虛擬操作系統(tǒng)包括Android操作系統(tǒng)。
[0040]—種虛擬輸入控制的方法,用于實(shí)現(xiàn)在虛擬操作系統(tǒng)中對(duì)宿主操作系統(tǒng)的輸入進(jìn)行控制,所述方法包括:
[0041]所述宿主操作系統(tǒng)與所述虛擬操作系統(tǒng)建立網(wǎng)絡(luò)連接后,通過所述宿主操作系統(tǒng)中的模擬控制程序啟動(dòng)所述虛擬操作系統(tǒng);
[0042]所述宿主操作系統(tǒng)通過所述模擬控制程序獲取所述虛擬操作系統(tǒng)的IP地址,建立所述模擬控制程序與所述虛擬操作系統(tǒng)中虛擬輸入服務(wù)進(jìn)程之間的連接;
[0043]所述宿主操作系統(tǒng)接收到用戶的控制命令后,根據(jù)所述控制命令轉(zhuǎn)譯得到輸入控制消息,由所述模擬控制程序?qū)⑺鲚斎肟刂葡l(fā)送給所述虛擬輸入服務(wù)進(jìn)程。
[0044]優(yōu)選的,
[0045]所述虛擬操作系統(tǒng)運(yùn)行在與所述宿主操作系統(tǒng)所在物理設(shè)備相獨(dú)立的另一個(gè)物理設(shè)備上;或者,
[0046]所述虛擬操作系統(tǒng)運(yùn)行在虛擬機(jī)上,其中,所述虛擬機(jī)運(yùn)行在所述宿主操作系統(tǒng)所在的物理設(shè)備上,或者,所述虛擬機(jī)運(yùn)行在與所述宿主操作系統(tǒng)所在物理設(shè)備不同的另一個(gè)物理設(shè)備上。
[0047]優(yōu)選的,
[0048]所述虛擬機(jī)為VirtualBox虛擬機(jī);
[0049]所述通過所述宿主操作系統(tǒng)中的模擬控制程序啟動(dòng)所述虛擬操作系統(tǒng),包括:通過所述宿主操作系統(tǒng)中的模擬控制程序控制VirtualBox虛擬機(jī),由VirtualBox虛擬機(jī)啟動(dòng)所述虛擬操作系統(tǒng)。
[0050]優(yōu)選的,
[0051 ] 所述虛擬機(jī)為VirtualBox虛擬機(jī);
[0052]所述宿主操作系統(tǒng)通過所述模擬控制程序獲取所述虛擬操作系統(tǒng)的IP地址,包括;所述宿主操作系統(tǒng)通過所述模擬控制程序讀取所述VirtualBox虛擬機(jī)的客戶屬性,獲取所述虛擬操作系統(tǒng)的IP地址。
[0053]優(yōu)選的,
[0054]所述建立所述模擬控制程序與所述虛擬操作系統(tǒng)中虛擬輸入服務(wù)進(jìn)程之間的連接,包括:在所述虛擬操作系統(tǒng)的指定端口,建立所述模擬控制程序與所述虛擬操作系統(tǒng)中虛擬輸入服務(wù)進(jìn)程之間的連接。
[0055]優(yōu)選的,
[0056]所述根據(jù)所述控制命令轉(zhuǎn)譯得到輸入控制消息,包括:
[0057]所述模擬控制程序?qū)λ隹刂泼钜约翱刂茀?shù)進(jìn)行轉(zhuǎn)譯,生成所述輸入控制消息。
[0058]優(yōu)選的,
[0059]所述宿主操作系統(tǒng)與所述虛擬操作系統(tǒng)建立網(wǎng)絡(luò)連接包括:所述宿主操作系統(tǒng)配置一個(gè)專門用來與所述虛擬操作系統(tǒng)通信的虛擬網(wǎng)絡(luò)連接,使得宿主操作系統(tǒng)和虛擬操作系統(tǒng)在所述虛擬網(wǎng)絡(luò)連接中連通。
[0060]優(yōu)選的,
[0061]所述宿主操作系統(tǒng)包括Windows操作系統(tǒng)、Mac操作系統(tǒng)或Linux操作系統(tǒng);所述虛擬操作系統(tǒng)包括Android操作系統(tǒng)。
[0062]—種虛擬輸入控制的方法,用于實(shí)現(xiàn)在虛擬操作系統(tǒng)中對(duì)宿主操作系統(tǒng)的輸入進(jìn)行控制,所述方法包括:
[0063]所述虛擬操作系統(tǒng)與所述宿主操作系統(tǒng)建立網(wǎng)絡(luò)連接后,所述虛擬操作系統(tǒng)通過基礎(chǔ)進(jìn)程加載預(yù)定義腳本,從而將所述虛擬操作系統(tǒng)的IP地址提供給所述宿主操作系統(tǒng),以及,通過所述基礎(chǔ)進(jìn)程啟動(dòng)虛擬輸入服務(wù)進(jìn)程;
[0064]通過將所述虛擬操作系統(tǒng)的IP地址提供給所述宿主操作系統(tǒng),建立所述宿主操作系統(tǒng)中的模擬控制程序與所述虛擬輸入服務(wù)進(jìn)程之間的連接;
[0065]所述虛擬輸入服務(wù)進(jìn)程接收所述輸入控制程序發(fā)送的輸入控制消息,所述虛擬操作系統(tǒng)對(duì)所述宿主操作系統(tǒng)發(fā)送的輸入控制消息進(jìn)行解譯,得到所述虛擬操作系統(tǒng)可識(shí)別的輸入控制信號(hào)。
[0066]優(yōu)選的,
[0067]所述虛擬操作系統(tǒng)運(yùn)行在與所述宿主操作系統(tǒng)所在物理設(shè)備相獨(dú)立的另一個(gè)物理設(shè)備上;或者,
[0068]所述虛擬操作系統(tǒng)運(yùn)行在虛擬機(jī)上,其中,所述虛擬機(jī)運(yùn)行在所述宿主操作系統(tǒng)所在的物理設(shè)備上,或者,所述虛擬機(jī)運(yùn)行在與所述宿主操作系統(tǒng)所在物理設(shè)備不同的另一個(gè)物理設(shè)備上。
[0069]優(yōu)選的,
[0070]所述虛擬機(jī)為VirtualBox虛擬機(jī);
[0071]所述虛擬操作系統(tǒng)通過基礎(chǔ)進(jìn)程加載預(yù)定義腳本,從而將所述虛擬操作系統(tǒng)的IP地址提供給所述宿主操作系統(tǒng),包括:
[0072]所述虛擬操作系統(tǒng)通過ini t進(jìn)程加載預(yù)定義腳本,運(yùn)行VirtualBox虛擬機(jī)的客戶擴(kuò)展組件,將所述虛擬操作系統(tǒng)的IP地址寫入VirtualBox虛擬機(jī)的客戶屬性;
[0073]所述宿主操作系統(tǒng)讀取所述VirtualBox虛擬機(jī)的客戶屬性,獲取所述虛擬操作系統(tǒng)的IP地址。
[0074]優(yōu)選的,
[0075]所述通過所述基礎(chǔ)進(jìn)程啟動(dòng)虛擬輸入服務(wù)進(jìn)程,包括:通過ini t進(jìn)程啟動(dòng)vinput進(jìn)程;
[0076]所述建立所述模擬控制程序與所述虛擬輸入服務(wù)進(jìn)程之間的連接,包括:在所述虛擬操作系統(tǒng)的指定端口,所述vinput進(jìn)程建立與所述模擬控制程序的連接。
[0077]優(yōu)選的,
[0078]所述虛擬輸入服務(wù)進(jìn)程對(duì)所述輸入控制消息進(jìn)行解譯,得到所述虛擬操作系統(tǒng)可識(shí)別的輸入控制信號(hào),包括:
[0079]對(duì)所述虛擬輸入服務(wù)進(jìn)程接收到的所述輸入控制消息進(jìn)行解譯,得到所述控制命令;
[0080]對(duì)解譯得到的控制命令進(jìn)行硬件抽象層HAL轉(zhuǎn)換,得到所述虛擬操作系統(tǒng)可識(shí)別的輸入控制信號(hào)。
[0081 ]優(yōu)選的,
[0082I所述宿主操作系統(tǒng)包括Windows操作系統(tǒng)、Mac操作系統(tǒng)或Linux操作系統(tǒng);