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