一種安卓設(shè)備的識(shí)別方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種通過(guò)計(jì)算機(jī)對(duì)外部安卓設(shè)備進(jìn)行操作的方法及裝置。
【背景技術(shù)】
[0002]隨著智能電子設(shè)備越來(lái)越普及,智能手機(jī)、平板、電視等的用戶群體越來(lái)越大。隨著用戶群體的擴(kuò)大,已無(wú)法使得全部用戶都能夠熟悉如何對(duì)安卓設(shè)備進(jìn)行操作和控制。如何使用戶更方便、快捷地通過(guò)PC(個(gè)人計(jì)算機(jī),Personal Computer)、筆記本電腦等終端設(shè)備對(duì)智能安卓設(shè)備進(jìn)行互連和操作成為人們比較關(guān)注的問(wèn)題。
[0003]目前,安卓系統(tǒng)已經(jīng)成為智能電子設(shè)備的常見(jiàn)操作系統(tǒng)之一。由于安卓系統(tǒng)的開放性使得人們可以開發(fā)各種接口工具來(lái)連接終端設(shè)備,但同時(shí),其開放性也導(dǎo)致PC的安卓設(shè)備助手越來(lái)越多。在安裝PC安卓設(shè)備助手后用戶可以通過(guò)USB(Universal Serial Bus,通用串行總線)接口實(shí)現(xiàn)對(duì)安卓設(shè)備的操作?,F(xiàn)在比較常用的有奇虎360手機(jī)助手、豌豆莢手機(jī)助手(也稱豌豆莢手機(jī)精靈)、騰訊手機(jī)管家等。通過(guò)這些手機(jī)助手,用戶可以輕松下載、安裝、管理手機(jī)資源,實(shí)現(xiàn)海量資源一鍵安裝,應(yīng)用程序方便管理等功能。
[0004]然而這些傳統(tǒng)安卓設(shè)備助手在插入一部不同品牌不同型號(hào)的設(shè)備的時(shí)候都會(huì)有一個(gè)安裝 ADB (Android Debug Bridge)驅(qū)動(dòng)的過(guò)程。
[0005]結(jié)合圖1,現(xiàn)有一般的Adb工作流程如下:
[0006]1、啟動(dòng) Adb。
[0007]2、此時(shí)Adb server接受到命令,比如Adb devices,并將Adb devices發(fā)送到動(dòng)態(tài)程序庫(kù)AdbWinApi。
[0008]3、AdbWinApi接受到命令后,則把消息Adb devices發(fā)送給對(duì)應(yīng)的windows驅(qū)動(dòng),如果沒(méi)有對(duì)應(yīng)的windows驅(qū)動(dòng),返回NULL給Adb server。
[0009]4、windows驅(qū)動(dòng)通過(guò)USB總線把Adb devices命令傳送到安卓設(shè)備,安卓設(shè)備處理后的結(jié)果(即設(shè)備名稱),原路返回給Adb服務(wù),并在電腦屏幕上顯示安卓設(shè)備的設(shè)備名稱。此時(shí)操作完成。
[0010]安裝驅(qū)動(dòng)時(shí)會(huì)與WINDOWS操作系統(tǒng)的驅(qū)動(dòng)自動(dòng)更新機(jī)制沖突。如果有幾家軟件公司的設(shè)備助手同時(shí)存在的話,安卓設(shè)備ADB驅(qū)動(dòng)的安裝也會(huì)存在沖突。傳統(tǒng)安卓設(shè)備助手都會(huì)在網(wǎng)絡(luò)服務(wù)器上提供一個(gè)常用安卓設(shè)備ADB驅(qū)動(dòng)庫(kù),這樣的話對(duì)于冷門的安卓設(shè)備不提供支持。而且傳統(tǒng)安卓設(shè)備助手還存在以下幾個(gè)問(wèn)題:
[0011]1)PC端首次與安卓設(shè)備鏈接時(shí),耗時(shí)在30秒至I分鐘不等。
[0012]2)兼容性不高,如果需要安裝大量安卓設(shè)備驅(qū)動(dòng),會(huì)導(dǎo)致有些安卓設(shè)備驅(qū)動(dòng)不能正常工作
[0013]3)適配性不高,未來(lái)如果新出了一款安卓設(shè)備,傳統(tǒng)的安卓設(shè)備助手再?zèng)]有更新驅(qū)動(dòng)庫(kù)的情況下,無(wú)法使安卓設(shè)備正常工作。
[0014]造成上述問(wèn)題的原因?yàn)?
[0015]I)上述安卓設(shè)備助手都有自己的驅(qū)動(dòng)庫(kù),每次安卓設(shè)備插入時(shí),助手會(huì)檢測(cè)安卓設(shè)備型號(hào)并且發(fā)送到驅(qū)動(dòng)庫(kù)服務(wù)器,在驅(qū)動(dòng)庫(kù)服務(wù)器進(jìn)行匹配后下載至用戶計(jì)算機(jī)上安裝,這種方式在網(wǎng)絡(luò)不發(fā)達(dá)地區(qū)或者是完全沒(méi)有網(wǎng)絡(luò)的地區(qū),使用有局限性。
[0016]2)而且在沒(méi)有更新驅(qū)動(dòng)庫(kù)的情況下,新安卓設(shè)備會(huì)在舊驅(qū)動(dòng)庫(kù)中匹配失敗,導(dǎo)致驅(qū)動(dòng)無(wú)法下載。
[0017]3)兼容性問(wèn)題,因?yàn)榘沧吭O(shè)備廠商繁多,相互之間開發(fā)的技術(shù)細(xì)節(jié)也相對(duì)保密,所以在安卓設(shè)備驅(qū)動(dòng)運(yùn)行中會(huì)獨(dú)占某些操作系統(tǒng)資源,導(dǎo)致其他安卓設(shè)備驅(qū)動(dòng)無(wú)法正常工作。
【發(fā)明內(nèi)容】
[0018]本發(fā)明通過(guò)一種全新的思路解決上述問(wèn)題,完全改變了傳統(tǒng)安卓設(shè)備助手為安卓設(shè)備在PC上安裝驅(qū)動(dòng)的技術(shù)格局,而此項(xiàng)發(fā)明完全沒(méi)有驅(qū)動(dòng)庫(kù),兼容所有的安卓設(shè)備,急速響應(yīng)安卓設(shè)備接入,安卓設(shè)備插入PC后1-3秒就能識(shí)別,對(duì)其進(jìn)行操作。
[0019]本發(fā)明提供一種安卓設(shè)備的識(shí)別方法和裝置,包括,I)在ADB進(jìn)程中,通過(guò)鉤子進(jìn)程接管連接到電腦的所述安卓設(shè)備;2)將所述安卓設(shè)備的生產(chǎn)廠商ID即VID、產(chǎn)品ID即PID修改為一特定值,VID和PID —起組成所述安卓設(shè)備的識(shí)別碼;3)這有所有插入電腦的不同安卓設(shè)備被虛擬為具有同樣的VID和PID碼,這樣使用一個(gè)ADB驅(qū)動(dòng)可以識(shí)別不同的安卓設(shè)備。
[0020]本發(fā)明還提供一種另外的安卓設(shè)備的識(shí)別方法和裝置,包括:1)在過(guò)濾單元中設(shè)置鉤子單元,當(dāng)安卓設(shè)備一插上電腦,該過(guò)濾單元中的鉤子單元啟動(dòng),該設(shè)備被過(guò)濾單元接管,并將設(shè)備的VID_PID修改為一預(yù)定值,隨后將該值發(fā)送給分發(fā)單元;同時(shí),過(guò)濾單元讀取安卓設(shè)備的設(shè)備描述符并通知封裝單元,從而實(shí)現(xiàn)安卓設(shè)備驅(qū)動(dòng)程序與接口的對(duì)接。2)分發(fā)單元收到過(guò)濾單元的通知后,分發(fā)單元會(huì)檢查安卓設(shè)備的VID_PID是否為所述預(yù)定值;如果是,則復(fù)制該安卓設(shè)備的句柄,發(fā)送給服務(wù)單元;如果不是,則放棄抓取;3)服務(wù)單元收到ADB命令后,通過(guò)分發(fā)單元發(fā)來(lái)的句柄,對(duì)安卓設(shè)備進(jìn)行操作。
[0021]進(jìn)一步地,其中還包括對(duì)連接的設(shè)備是否為安卓設(shè)備的判斷過(guò)程,如果是安卓設(shè)備則進(jìn)行讀取,如果不是,服務(wù)單元發(fā)送消息給分發(fā)單元進(jìn)而通知過(guò)濾單元放棄對(duì)設(shè)備的抓取。
[0022]進(jìn)一步地,其中由封裝單元實(shí)現(xiàn)所述是否為安卓設(shè)備的判斷過(guò)程。
[0023]進(jìn)一步地,其中所述判斷是否為安卓設(shè)備的方式為具體方式為:檢查這個(gè)設(shè)備的主類是不是OxFF,隨后判斷子類是不是0x42,如果這兩個(gè)值都符合標(biāo)準(zhǔn),就可以認(rèn)定它是安卓設(shè)備,如果任一項(xiàng)不滿足則認(rèn)定不是安卓設(shè)備。
[0024]進(jìn)一步地,其中如果同時(shí)有多個(gè)識(shí)別程序啟動(dòng)時(shí),則分發(fā)單元負(fù)責(zé)判斷哪一助手得到該設(shè)備。
[0025]進(jìn)一步地,其中當(dāng)前鼠標(biāo)或光標(biāo)當(dāng)前鼠標(biāo)在哪個(gè)助手程序中,則與哪個(gè)設(shè)備連。
[0026]進(jìn)一步地,其中在所述識(shí)別過(guò)程中,服務(wù)單元同時(shí)執(zhí)行下面步驟:
[0027]I)進(jìn)行初始化步驟;2)執(zhí)行查找設(shè)備步驟,并通過(guò)全局唯一標(biāo)識(shí)符(GUID)來(lái)枚舉所有當(dāng)前的活動(dòng)接口 ;3)判斷這些活動(dòng)接口中是否有USB接口,如果沒(méi)有則返回到步驟2)查找下一設(shè)備,如果有執(zhí)行步驟4) ;4)獲取每個(gè)USB接口信息及設(shè)備名稱,并判斷該設(shè)備名稱是否存在于ADB傳輸列表中,如果是,則表明該設(shè)備之前已被查找識(shí)別過(guò),則返回步驟2)查找下一設(shè)備;如果該設(shè)備沒(méi)成不存在于ADB傳輸列表中,表明該設(shè)備為新設(shè)備,則執(zhí)行步驟5) ;5)通過(guò)USB接口名稱打開USB設(shè)備,并將接口名稱放入ADB的USB_device_handle結(jié)構(gòu)體中,隨后執(zhí)行步驟6) ;6)進(jìn)行再次識(shí)別,判斷設(shè)備是否為安卓設(shè)備,首先取出設(shè)備的VID和PID碼,隨后判斷該VID碼是否存在預(yù)存的VID列表中,如果存在則說(shuō)明該設(shè)備為安卓設(shè)備,隨后執(zhí)行步驟7);如果不存在,則說(shuō)明該USB設(shè)備不是安卓設(shè)備,返回步驟2)查找下一設(shè)備。7)得到該安卓設(shè)備USB設(shè)備串號(hào),并注冊(cè)到ADB傳輸列表中,隨后返回步驟2)查找下一個(gè)USB設(shè)備。
[0028]發(fā)明效果:
[0029]本發(fā)明無(wú)需給每一安卓設(shè)備單獨(dú)安裝驅(qū)動(dòng),可以適配所有已知的、未知的符合安卓ADB標(biāo)準(zhǔn)的設(shè)備,鏈接成功率高達(dá)100%。
[0030]傳統(tǒng)安卓設(shè)備助手需要對(duì)安卓設(shè)備的VID_PID進(jìn)行匹配,然后必須聯(lián)網(wǎng)下載對(duì)應(yīng)的驅(qū)動(dòng)安裝才能使用。根據(jù)每個(gè)用戶的網(wǎng)絡(luò)環(huán)境,這種方式導(dǎo)致驅(qū)動(dòng)安裝時(shí)快時(shí)慢,如果網(wǎng)絡(luò)不穩(wěn)定還會(huì)導(dǎo)致安裝失敗,用戶感知度降低。而本發(fā)明對(duì)市面所有安卓設(shè)備都大比例兼容,并不需要安裝安卓設(shè)備驅(qū)動(dòng),可以無(wú)驅(qū)鏈接,提高用戶感知度。
[0031]傳統(tǒng)安卓設(shè)備助手是在windows復(fù)雜的環(huán)境下安裝驅(qū)動(dòng),這樣導(dǎo)致了有些安卓設(shè)備驅(qū)動(dòng)會(huì)安裝不上,不能共存,并且會(huì)導(dǎo)致一些未知的錯(cuò)誤發(fā)生。還會(huì)導(dǎo)致注冊(cè)表和系統(tǒng)目錄下有冗長(zhǎng)的驅(qū)動(dòng)信息。我們接管了 windows對(duì)USB設(shè)備的管理,避開了 windows復(fù)雜的環(huán)境,提高了 USB設(shè)備連接的穩(wěn)定性。
【附圖說(shuō)明】
:
[0032]圖1是現(xiàn)有安卓設(shè)備助手Adb的流程圖。
[0033]圖2是本發(fā)明安卓設(shè)備的Adb的流程圖
[0034]圖3是本發(fā)明服務(wù)單元執(zhí)行識(shí)別設(shè)備的流程圖
【具體實(shí)施方式】
:
[0035]下面先對(duì)ADB進(jìn)行簡(jiǎn)單說(shuō)明:
[0036]Adb由pc端的Adb server,pc端的Adb client,和安卓設(shè)備端的Adb守護(hù)進(jìn)程組成。Pc端的Adb client和Adb server模塊一般可以作在同一個(gè)程序中(例如Adb.exe),如果該程序是作為client啟動(dòng)的(如運(yùn)行命令A(yù)db devices),則此時(shí)其會(huì)檢測(cè)其Adb server進(jìn)程是否啟動(dòng),如果沒(méi)有啟動(dòng)會(huì)啟動(dòng)Adb Server0其中:
[0037]Adb Client:Adb server在pc端開啟了之后一般不會(huì)結(jié)束的,每執(zhí)行一個(gè)Adb命令(這里指除了專門針對(duì)server的命令,如Adb shell, Adb install等等)就相當(dāng)于啟動(dòng)了一個(gè)Adb client,此Adb client會(huì)連接到Adb server,然后通過(guò)Ad