本發(fā)明涉及一種Android終端設(shè)備,特別是涉及一種適配多種游戲手柄的方法及Android終端設(shè)備。
背景技術(shù):
目前市面上的手柄參差不齊,手柄按鍵響應(yīng)出來的功能也各有所不同,一 款游戲手柄適用于一種適配標(biāo)準(zhǔn),而不同的游戲會(huì)支持不同的適配標(biāo)準(zhǔn),若游戲支持該手柄的適配標(biāo)準(zhǔn),則游戲手柄按鍵的鍵值與游戲功能按鍵的觸控位置能夠形成對(duì)應(yīng)關(guān)系,該款游戲能夠通過該游戲手柄進(jìn)行操作;否則,若游戲不支持該手柄的適配標(biāo)準(zhǔn),游戲手柄按鍵的鍵值與游戲功能按鍵的觸控位置不能形成對(duì)應(yīng)關(guān)系,游戲客戶端不能根據(jù)鍵值查找到相對(duì)應(yīng)的觸控位置,該款游戲不能通過該游戲手柄進(jìn)行操作,這樣會(huì)造成部分游戲需要用到不同的手柄才能使用,因此會(huì)給玩家在使用上帶來很多困擾不便。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明旨在解決因各類手柄鍵值差異化導(dǎo)致使用不便的問題。本發(fā)明主要以插件程序的方式存在于系統(tǒng)中,用戶通過使用該程序可以無需擔(dān)心自己使用的手柄是否可以操作游戲。
為了解決現(xiàn)有技術(shù)存在的不足,本發(fā)明的目的在于提供一種適配多種游戲手柄的方法及Android終端設(shè)備,實(shí)現(xiàn)同一個(gè)Android終端設(shè)備可以適配不同的游戲手柄。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的適配多種游戲手柄的方法,包括以下步驟:
(1)向Android終端設(shè)備發(fā)送手柄事件;
(2)接收所述手柄事件并進(jìn)行轉(zhuǎn)換;
(3)將轉(zhuǎn)換后的手柄事件分發(fā)至系統(tǒng)中;
(4)接收所述轉(zhuǎn)換后的手柄事件,并進(jìn)行回調(diào)。
其中,所述手柄事件為與搖桿、按鍵或者觸摸三類操作相對(duì)應(yīng)的事件。
進(jìn)一步地,步驟(2)所述的對(duì)手柄事件進(jìn)行轉(zhuǎn)換,是對(duì)所述手柄事件的屬性進(jìn)行修改,完成對(duì)所述手柄事件的轉(zhuǎn)換;其中,包括,按鍵轉(zhuǎn)按鍵、搖桿轉(zhuǎn)觸摸及按鍵轉(zhuǎn)觸摸。
更進(jìn)一步地,步驟(4)所述轉(zhuǎn)換后的手柄事件進(jìn)行回調(diào),是通過onKey或/和onMotionEvent方法對(duì)轉(zhuǎn)換后的手柄事件進(jìn)行回調(diào)。
為實(shí)現(xiàn)上述目的,本發(fā)明還提出了一種Android終端設(shè)備,包括,手柄接口模塊(210)、按鍵適配模塊(220),以及應(yīng)用模塊(230),其中,
所述手柄接口模塊(210),接收手柄事件,并將所述手柄事件傳遞給所述按鍵適配模塊(220);
所述按鍵適配模塊(220),其接收所述手柄接口模塊(210)傳遞的所述手柄事件并進(jìn)行轉(zhuǎn)換,再將所述轉(zhuǎn)換后的手柄事件分發(fā)至所述應(yīng)用模塊(230)
所述應(yīng)用模塊(230)接收所述按鍵適配模塊(220)發(fā)送的所述轉(zhuǎn)換后的手柄事件,并進(jìn)行回調(diào)。
進(jìn)一步地,所述按鍵適配模塊(220)包括:事件轉(zhuǎn)換模塊(221)及事件分發(fā)模塊(222),其中,
所述事件轉(zhuǎn)換模塊(221),對(duì)所述手柄事件的屬性進(jìn)行修改,完成對(duì)所述手柄事件的轉(zhuǎn)換,其中,轉(zhuǎn)換類型主要有按鍵轉(zhuǎn)按鍵、搖桿轉(zhuǎn)觸摸及按鍵轉(zhuǎn)觸摸三類;
所述事件分發(fā)模塊(222),其將所述轉(zhuǎn)換后的手柄事件分發(fā)至所述應(yīng)用模塊(230)。
更進(jìn)一步地,所述應(yīng)用模塊(230)包括:事件接收模塊(231)及事件回調(diào)模塊(232),其中,
所述事件接收模塊(231),接收所述按鍵適配模塊(220)分發(fā)的所述轉(zhuǎn)換后的手柄事件,
所述事件回調(diào)模塊(232),其通過onKey或/和onMotionEvent方法對(duì)所述轉(zhuǎn)換后的手柄事件進(jìn)行回調(diào)。
本發(fā)明的適配多種游戲手柄的方法及Android終端設(shè)備,通過對(duì)游戲手柄所發(fā)出的手柄事件的類型進(jìn)行轉(zhuǎn)換,使游戲手柄在不需要更改鍵值的情況下,與不同的游戲完成匹配關(guān)系,使同一游戲手柄可以對(duì)不同的游戲進(jìn)行匹配操作,實(shí)現(xiàn)了同一個(gè)Android終端設(shè)備可以適配不同的游戲手柄,用戶無需擔(dān)心自己使用的手柄是否可以操作游戲,從而擴(kuò)大了游戲手柄的使用范圍,增加了游戲手柄的使用場合,使玩家在對(duì)不同的游戲進(jìn)行操作的過程中,擁有一款游戲手柄即可。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。
附圖說明
附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,并與本發(fā)明的實(shí)施例一起,用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:
圖1為根據(jù)本發(fā)明的適配多種游戲手柄的方法流程圖;
圖2為根據(jù)本發(fā)明的Android終端設(shè)備原理框圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
圖1為根據(jù)本發(fā)明的適配多種游戲手柄的方法流程圖,下面將參考圖1,對(duì)本發(fā)明的適配多種游戲手柄的方法進(jìn)行詳細(xì)描述。
首先,在步驟101,向Android終端設(shè)備發(fā)送手柄事件;
其中,手柄事件主要為與搖桿、按鍵及觸摸等三類操作相對(duì)應(yīng)的事件。
具體而言,搖桿操作分為左右搖桿操作,以搖桿所在空間建立直角坐標(biāo)系,在一定坐標(biāo)值范圍(例如[-1,1])內(nèi),搖桿的移動(dòng)軌跡。
按鍵操作則為按壓按鍵的操作,按鍵操作所對(duì)應(yīng)的事件通過整形數(shù)值進(jìn)行標(biāo)識(shí)。整形數(shù)值包括:上、下、左、右、A、B、X、Y、L1、L2、R1、R2等。
觸摸操作則為觸摸觸控屏等觸點(diǎn)輸入裝置的操作。
在步驟102,接收手柄事件并進(jìn)行轉(zhuǎn)換。
在該步驟中,在Android系統(tǒng)事件管理機(jī)制中,會(huì)將不同事件分發(fā)至不同的隊(duì)列通道中進(jìn)行處理。在分發(fā)的過程中,對(duì)事件的屬性進(jìn)行修改,從而完成事件的轉(zhuǎn)換,其中,轉(zhuǎn)換類型主要有按鍵轉(zhuǎn)按鍵、搖桿轉(zhuǎn)觸摸及按鍵轉(zhuǎn)觸摸三類。
具體而言,在分發(fā)過程中,利用ioctl函數(shù)獲取設(shè)備的屬性來區(qū)分事件屬性,因此只需在事件通道中對(duì)事件進(jìn)行攔截并修改事件屬性。之后可將修改完成的事件分發(fā)至對(duì)應(yīng)的隊(duì)列當(dāng)中。
在步驟103,將轉(zhuǎn)換后的手柄事件分發(fā)至系統(tǒng)中。
在該步驟中,Android框架層的InputDispatcher模塊將轉(zhuǎn)換后的手柄事件分發(fā)到對(duì)應(yīng)的應(yīng)用程序之中。應(yīng)用程序可為一個(gè)以上,內(nèi)置于同一個(gè)應(yīng)用層中。
在步驟104,Android游戲接收轉(zhuǎn)換后的手柄事件。
在該步驟中,Android游戲通過View模塊接收分發(fā)到系統(tǒng)中的轉(zhuǎn)換后的手柄事件,再通過onKey及onMotionEvent兩個(gè)方法對(duì)接收到的轉(zhuǎn)換后的手柄事件進(jìn)行回調(diào)。
圖2為根據(jù)本發(fā)明的Android終端設(shè)備原理框圖,如圖2所示,本發(fā)明的Android終端設(shè)備,包括,手柄接口模塊210、按鍵適配模塊220及應(yīng)用模塊230,其中,
手柄接口模塊210,其接收手柄事件,并將手柄事件傳遞給按鍵適配模塊220,
手柄事件主要為與搖桿、按鍵及觸摸等三類操作相對(duì)應(yīng)的事件。
具體而言,搖桿操作分為左右搖桿操作,以搖桿所在空間建立直角坐標(biāo)系,在一定坐標(biāo)值范圍(例如[-1,1])內(nèi),搖桿的移動(dòng)軌跡。
按鍵操作則為按壓按鍵的操作,按鍵操作所對(duì)應(yīng)的事件通過整形數(shù)值進(jìn)行標(biāo)識(shí)。整形數(shù)值包括:上、下、左、右、A、B、X、Y、L1、L2、R1、R2等。
觸摸操作則為觸摸觸控屏等觸點(diǎn)輸入裝置的操作。
按鍵適配模塊220,其接收手柄接口模塊210端傳遞的手柄事件并進(jìn)行轉(zhuǎn)換,再將轉(zhuǎn)換后的手柄事件分發(fā)至應(yīng)用模塊230,
進(jìn)一步地,按鍵適配模塊220包括:事件轉(zhuǎn)換模塊221及事件分發(fā)模塊222,其中,
事件轉(zhuǎn)換模塊221,其對(duì)手柄事件的屬性進(jìn)行修改,從而完成手柄事件的轉(zhuǎn)換,其中,轉(zhuǎn)換類型主要有按鍵轉(zhuǎn)按鍵、搖桿轉(zhuǎn)觸摸及按鍵轉(zhuǎn)觸摸三類。
具體而言,在Android系統(tǒng)事件管理機(jī)制中,會(huì)將不同事件分發(fā)至不同的隊(duì)列通道中進(jìn)行處理。在分發(fā)的過程中,對(duì)事件的屬性進(jìn)行修改,從而完成事件的轉(zhuǎn)換。在分發(fā)過程中,利用ioctl函數(shù)獲取設(shè)備的屬性來區(qū)分事件屬性,因此只需在事件通道中對(duì)事件進(jìn)行攔截并修改事件屬性。之后可將修改完成的事件分發(fā)至對(duì)應(yīng)的隊(duì)列當(dāng)中。
事件分發(fā)模塊222,其將轉(zhuǎn)換后的手柄事件分發(fā)至應(yīng)用模塊230。
其中,應(yīng)用模塊230可包括:Android游戲應(yīng)用模塊。具體而言,事件分發(fā)模塊222將轉(zhuǎn)換后的手柄事件分發(fā)到對(duì)應(yīng)的應(yīng)用模塊之中。應(yīng)用模塊可為一個(gè)以上,內(nèi)置于同一個(gè)應(yīng)用層中。
應(yīng)用模塊230包括:事件接收模塊231及事件回調(diào)模塊232,其中,
事件接收模塊231,應(yīng)用模塊230通過事件接收模塊231接收事件分發(fā)模塊222分發(fā)的轉(zhuǎn)換后的手柄事件,
事件回調(diào)模塊231,通過onKey或/和onMotionEvent方法對(duì)應(yīng)用模塊230接收到的轉(zhuǎn)換后的手柄事件進(jìn)行回調(diào)。
本發(fā)明的適配多種游戲手柄的方法及Android終端設(shè)備,通過對(duì)游戲手柄所發(fā)出的手柄事件的類型進(jìn)行轉(zhuǎn)換,使游戲手柄在不需要更改鍵值的情況下,與不同的游戲完成匹配關(guān)系,使同一游戲手柄可以對(duì)不同的游戲進(jìn)行匹配操作,從而擴(kuò)大了游戲手柄的使用范圍,增加了游戲手柄的使用場合,使玩家在對(duì)不同的游戲進(jìn)行操作的過程中,擁有一款游戲手柄即可。
本領(lǐng)域普通技術(shù)人員可以理解:以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,對(duì)于本領(lǐng)域的技術(shù)人員來說,其依然可以對(duì)前述各實(shí)施例記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。