基于PC機(jī)實(shí)現(xiàn)運(yùn)行Android系統(tǒng)應(yīng)用的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明具體涉及一種基于PC機(jī)實(shí)現(xiàn)運(yùn)行Android系統(tǒng)應(yīng)用的方法。
【背景技術(shù)】
[0002]隨著智能手機(jī)的蓬勃發(fā)展,手機(jī)上的應(yīng)用,游戲等層出不窮。但有些應(yīng)用如游戲等在手機(jī)上操作會有很多不方便的地方,比如玩游戲時,手機(jī)電量下降太快,發(fā)熱高,容易被來電,短信打斷,屏幕小,操作不便等。很多人期望能夠在個人PC機(jī)上使用同樣的應(yīng)用、游戲。但目前的實(shí)際情況是很多應(yīng)用只有手機(jī)版本,并無PC機(jī)版本。當(dāng)前的解決方案是在PC機(jī)上使用模擬器模擬手機(jī)運(yùn)行相關(guān)應(yīng)用,但存在運(yùn)行速度慢,兼容性差等諸多問題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問題,在于提供一種基于PC機(jī)實(shí)現(xiàn)運(yùn)行Android系統(tǒng)應(yīng)用的方法。本發(fā)明的思路是:使用真實(shí)的硬件產(chǎn)品運(yùn)行相關(guān)手機(jī)應(yīng)用,該硬件產(chǎn)品與真實(shí)的手機(jī)硬件架構(gòu)相當(dāng);該硬件產(chǎn)品的顯示透過有線或者無線方式傳輸送入PC,由PC以窗口方式顯示;PC透過有線或者無線方式與該硬件產(chǎn)品通信,傳輸相關(guān)指令,鍵盤鼠標(biāo)信息;PC界面下的各種輸入法均可用于該硬件產(chǎn)品,PC端可通過軟件方式用鍵盤鼠標(biāo)模擬定義手機(jī)上的觸屏操作。
[0004]本發(fā)明先配置一運(yùn)行有Android系統(tǒng)的Android設(shè)備。本發(fā)明包括以下步驟:
(I )PC機(jī)和Android設(shè)備上分別運(yùn)行一數(shù)據(jù)驅(qū)動發(fā)送模塊I和一數(shù)據(jù)驅(qū)動接收模塊2,在所述數(shù)據(jù)驅(qū)動接收模塊2與數(shù)據(jù)驅(qū)動發(fā)送模塊I之間建立socket連接;
(2)數(shù)據(jù)驅(qū)動接收模塊2將Android設(shè)備的顯示內(nèi)容發(fā)送給PC機(jī),由PC機(jī)進(jìn)行顯示;所述數(shù)據(jù)驅(qū)動發(fā)送模塊I接收鍵盤操作和鼠標(biāo)操作消息,并轉(zhuǎn)換成Android設(shè)備可識別的操作指令,然后發(fā)送給所述數(shù)據(jù)驅(qū)動接收模塊2 ;
(3)Android設(shè)備對所述操作指令進(jìn)行處理,并執(zhí)行相應(yīng)操作,從而實(shí)現(xiàn)PC機(jī)運(yùn)行Android系統(tǒng)的運(yùn)用。
[0005]對于本發(fā)明中步驟(I)的具體操作方法可以優(yōu)選為:PC機(jī)上運(yùn)行一數(shù)據(jù)驅(qū)動發(fā)送模塊1,所述數(shù)據(jù)驅(qū)動發(fā)送模塊I內(nèi)置有Android系統(tǒng)的adb工具;數(shù)據(jù)驅(qū)動發(fā)送模塊I調(diào)用adb工具,使用adb forward命令,將PC機(jī)的一網(wǎng)絡(luò)通信端口映射到Android設(shè)備的另一網(wǎng)絡(luò)通信端口,一 Linux應(yīng)用程序數(shù)據(jù)驅(qū)動接收模塊2即以root身份運(yùn)行在Android設(shè)備上,從而所述數(shù)據(jù)驅(qū)動接收模塊2與數(shù)據(jù)驅(qū)動發(fā)送模塊I之間建立socket連接。
[0006]對于本發(fā)明中步驟(2)的具體操作方法可以優(yōu)選為:數(shù)據(jù)驅(qū)動發(fā)送模塊I在PC機(jī)上建立一個窗口,窗口顯示Android設(shè)備的顯示內(nèi)容,并通過Windows消息循環(huán),接收對所述窗口進(jìn)行的所有鍵盤操作和鼠標(biāo)操作消息,并對鍵盤操作和鼠標(biāo)操作消息進(jìn)行數(shù)據(jù)封裝后發(fā)送給數(shù)據(jù)驅(qū)動接收模塊2。
[0007]數(shù)據(jù)驅(qū)動發(fā)送模塊I對鍵盤操作和鼠標(biāo)操作消息進(jìn)行數(shù)據(jù)封裝的具體操作方法可以優(yōu)選為: (1)針對于鍵盤操作,將被操作的鍵盤鍵的虛擬鍵碼轉(zhuǎn)換為Android系統(tǒng)中的鍵碼,并按照數(shù)據(jù)驅(qū)動接收模塊2和數(shù)據(jù)驅(qū)動發(fā)送模塊I之間的通信協(xié)議封裝為操作指令;
(2)針對于鼠標(biāo)操作,將鼠標(biāo)左鍵按下、鼠標(biāo)左鍵彈起和鼠標(biāo)左鍵按下時拖動處理為三種操作類型,將光標(biāo)指向轉(zhuǎn)換為光標(biāo)位置相對于所述窗口左上角的坐標(biāo),然后按照數(shù)據(jù)驅(qū)動接收模塊2和數(shù)據(jù)驅(qū)動發(fā)送模塊I之間的通信協(xié)議封裝為操作指令。
[0008]對于本發(fā)明中步驟(3)的具體操作方法可以優(yōu)選為:
A.當(dāng)數(shù)據(jù)驅(qū)動接收模塊2啟動時,遍歷Android設(shè)備的/dev/input下所有虛擬設(shè)備文件,并根據(jù)Linux內(nèi)核公布的虛擬輸入設(shè)備文件協(xié)議,識別并選擇Android設(shè)備中的一鍵盤設(shè)備和一多點(diǎn)觸控設(shè)備,然后打開其相應(yīng)的虛擬設(shè)備文件;
B.數(shù)據(jù)驅(qū)動接收模塊2接收所述鍵盤操作和鼠標(biāo)操作消息,按照時間先后依次寫入所述虛擬設(shè)備文件中;
C.Android設(shè)備上的Android系統(tǒng)根據(jù)所述虛擬輸入設(shè)備文件協(xié)議,從所述虛擬設(shè)備文件中讀取所述鍵盤操作和鼠標(biāo)操作消息并進(jìn)行處理,即將PC機(jī)的鍵盤輸入消息和鼠標(biāo)輸入消息轉(zhuǎn)換為Android系統(tǒng)的輸入消息。
[0009]本發(fā)明的優(yōu)點(diǎn)在于:使用PC機(jī)的鍵盤和鼠標(biāo)來操控Android設(shè)備的應(yīng)用,操作更熟悉且更加方便快捷,更符合操控需求;避免了在手機(jī)上運(yùn)行應(yīng)用的弊端,解決了使用手機(jī)運(yùn)行某些應(yīng)用的不方便;實(shí)現(xiàn)了 WINDOWS系統(tǒng)與安卓系統(tǒng)的雙融合,同時在多任務(wù)系統(tǒng)下共存,并無縫交互,即可使用同一套鼠標(biāo)鍵盤,鼠標(biāo)移動到Windows下面時鍵鼠控制Windows應(yīng)用,移動到Android窗口時,鍵鼠自動控制Android應(yīng)用。
【附圖說明】
[0010]圖1是本發(fā)明中的數(shù)據(jù)驅(qū)動發(fā)送模塊與數(shù)據(jù)驅(qū)動接收模塊連接與通信的示意框圖。
【具體實(shí)施方式】
[0011]以下實(shí)施例結(jié)合附圖詳細(xì)地說明本發(fā)明。
[0012]本發(fā)明基于PC機(jī)實(shí)現(xiàn)運(yùn)行Android系統(tǒng)應(yīng)用的方法,先配置一運(yùn)行有Android系統(tǒng)的Android設(shè)備,本實(shí)施例包括以下步驟:
(I )PC機(jī)和Android設(shè)備上分別運(yùn)行一數(shù)據(jù)驅(qū)動發(fā)送模塊I和一數(shù)據(jù)驅(qū)動接收模塊2,在所述數(shù)據(jù)驅(qū)動接收模塊2與數(shù)據(jù)驅(qū)動發(fā)送模塊I之間建立socket連接,具體地:
PC機(jī)上運(yùn)行一數(shù)據(jù)驅(qū)動發(fā)送模塊1,所述數(shù)據(jù)驅(qū)動發(fā)送模塊I內(nèi)置有Android系統(tǒng)的adb工具;數(shù)據(jù)驅(qū)動發(fā)送模塊I調(diào)用adb工具,使用adb forward命令,將PC機(jī)的一任選的網(wǎng)絡(luò)通信端口映射到Android設(shè)備的另一任選的網(wǎng)絡(luò)通信端口(例如:adb forward tcp:6100tcp:7100 ;即可將PC機(jī)上6100網(wǎng)絡(luò)通信端口映射到Android設(shè)備的7100端口,其中6100端口和7100端口也可換為其他端口);如此,在PC機(jī)上即可以使用操作系統(tǒng)提供的API,與Android設(shè)備中的Android系統(tǒng)建立標(biāo)準(zhǔn)的socket連接。然后在Android設(shè)備的Android系統(tǒng)中,會以root身份運(yùn)行一個標(biāo)準(zhǔn)的Linux應(yīng)用程序(無界面)即數(shù)據(jù)驅(qū)動接收模塊2,并且會在每次Android系統(tǒng)啟動時自動運(yùn)行。
[0013]在圖1中,數(shù)據(jù)驅(qū)動發(fā)送模塊I與接收模塊2通過ADB連接起來,ADB連接成功后,兩個模塊通過SOCKET進(jìn)行通信。
[0014]數(shù)據(jù)驅(qū)動發(fā)送模塊I是專門接收底層鍵鼠驅(qū)動事件、Launcher指令集和用戶控制指令的模塊,這些指令通過該模塊做相應(yīng)的數(shù)據(jù)處理和封裝,并通過SOCKET發(fā)送到數(shù)據(jù)驅(qū)動接收模塊2,數(shù)據(jù)驅(qū)動接收模塊2根據(jù)接收到的指令集做出相應(yīng)的處理并反饋到PC機(jī)上。
[0015]當(dāng)數(shù)據(jù)驅(qū)動發(fā)送模塊I需要和數(shù)據(jù)驅(qū)動接收模塊2交互時,基本上都需要實(shí)時獲取指令數(shù)據(jù),比如用戶的點(diǎn)擊事件和鍵盤事件,接收端需要知道并作出相應(yīng)處理。要獲取發(fā)送模塊的指令信息,有兩種方法:第一種是客戶端使用Pull (拉)的方式,就是隔一段時間就去發(fā)送模塊上獲取一下信息,看是否有更新的信息出現(xiàn)。第二種就是發(fā)送模塊使用Push(推送)的