一種操作系統(tǒng)中控制硬件設(shè)備的方法和模塊的制作方法
【專利摘要】一種操作系統(tǒng)中控制硬件設(shè)備的方法和模塊,獲取到用于控制硬件設(shè)備動(dòng)作的狀態(tài)數(shù)據(jù),將其下發(fā)并存儲(chǔ)到緩沖單元;調(diào)用硬件設(shè)備驅(qū)動(dòng),硬件設(shè)備驅(qū)動(dòng)讀取緩沖單元中的狀態(tài)數(shù)據(jù),根據(jù)狀態(tài)數(shù)據(jù)控制硬件設(shè)備動(dòng)作的狀態(tài)。調(diào)用硬件設(shè)備驅(qū)動(dòng)包括:調(diào)用已有的硬件設(shè)備驅(qū)動(dòng),以控制硬件設(shè)備動(dòng)作;或者獲取鏈接庫加載指令,加載鏈接庫;獲取用于控制硬件設(shè)備動(dòng)作的指令,調(diào)用鏈接庫中與該指令對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù);執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作。硬件設(shè)備驅(qū)動(dòng)控制硬件設(shè)備執(zhí)行動(dòng)作為直接控制方式,能夠有效避免在驅(qū)動(dòng)硬件設(shè)備動(dòng)作時(shí)出現(xiàn)中斷、延遲等現(xiàn)象,從而提高數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,為高速數(shù)據(jù)傳輸提供了保證。
【專利說明】一種操作系統(tǒng)中控制硬件設(shè)備的方法和模塊
【技術(shù)領(lǐng)域】
[0001] 本申請(qǐng)涉及電子設(shè)備操作系統(tǒng)的開發(fā),具體涉及一種操作系統(tǒng)中控制硬件設(shè)備的 方法和模塊。
【背景技術(shù)】
[0002] 請(qǐng)參考圖1,為安卓系統(tǒng)的架構(gòu)示意圖。
[0003] 第一層101為Linux內(nèi)核驅(qū)動(dòng)層(Linux kernel),其由C/C++實(shí)現(xiàn)。安卓核心系 統(tǒng)服務(wù)依賴于Linux內(nèi)核,包括安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議、驅(qū)動(dòng)模型等。Linux 內(nèi)核也作為硬件和軟件棧之間的抽象層,除了標(biāo)準(zhǔn)的Linux內(nèi)核外,安卓還增加了內(nèi)核的 驅(qū)動(dòng)程序,例如:Binder(IPC)驅(qū)動(dòng)、camera驅(qū)動(dòng)、電源管理等。
[0004] 第二層為組件庫和虛擬機(jī)層,其中,102為組件庫層(Libraries),103為虛擬機(jī)層 (Android Runtime),組件庫層102通過C/C++實(shí)現(xiàn),包含C/C++庫,用于安卓系統(tǒng)中不同的 組件使用,它們通過安卓應(yīng)用程序框架為開發(fā)者進(jìn)行服務(wù)。虛擬機(jī)層103作為安卓系統(tǒng)的 運(yùn)動(dòng)環(huán)境,其提供了 Java編程語言核心庫的大多數(shù)功能,由Dalvik Java虛擬機(jī)和基礎(chǔ)的 Java類庫組成。
[0005] 第三層104為應(yīng)用框架層(Application Framework),在安卓系統(tǒng)中,開發(fā)人員也 可以完全訪問核心應(yīng)用程序所使用的API (Application Programming Interface,應(yīng)用程 序編程接口)框架。
[0006] 第四層105為應(yīng)用程序?qū)樱ˋpplications),安卓應(yīng)用程序都是采用Java語言編寫 的,用戶開發(fā)的安卓應(yīng)用程序和安卓的核心應(yīng)用程序是同一層次的,它們都是基于安卓的 系統(tǒng)API構(gòu)建的。
[0007] 目前,眾多的電子設(shè)備采用安卓系統(tǒng),且設(shè)備硬件上都安裝有閃光燈,在很多情況 下,用戶具有使用閃光燈的需求,因此,如何在安卓系統(tǒng)上實(shí)現(xiàn)閃光燈的控制,是本領(lǐng)域技 術(shù)人員正在研究的問題。
[0008] -方面,隨著光通信的發(fā)展,越來越多的電子設(shè)備通過使用閃光燈來進(jìn)行光通信。 在安卓系統(tǒng)中,例如,用戶在應(yīng)用程序?qū)涌刂茖⒛骋粩?shù)據(jù)通過閃光燈以光通信的方式發(fā)送 出去,則該數(shù)據(jù)作為待發(fā)送數(shù)據(jù),根據(jù)相應(yīng)的編碼規(guī)則將該數(shù)據(jù)轉(zhuǎn)換成控制閃光燈亮滅的 時(shí)間數(shù)據(jù),即在應(yīng)用程序?qū)赢a(chǎn)生了控制閃光燈開關(guān)的時(shí)間數(shù)據(jù)。然而應(yīng)用程序?qū)釉讷@取到 控制閃光燈的指令后,對(duì)閃光燈驅(qū)動(dòng)的調(diào)用指令是一條一條發(fā)送的,閃光燈驅(qū)動(dòng)執(zhí)行完一 條指令后,等待應(yīng)用程序?qū)影l(fā)送的下一條指令,加上應(yīng)用程序?qū)訉⒅噶顐鬟_(dá)到驅(qū)動(dòng)層需要 經(jīng)過應(yīng)用框架層、組件庫層和虛擬機(jī)層等層級(jí),其間,必然會(huì)出現(xiàn)一定的時(shí)間延遲,從而影 響光通信過程中數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。
[0009] 在光通信中,通常采用的是可見光通信,該可見光即可用于進(jìn)行數(shù)據(jù)傳輸,又可以 作為照明用。然而,由于上述時(shí)間延遲問題,使得數(shù)據(jù)傳輸過程中,為了保證數(shù)據(jù)的準(zhǔn)確性, 需要適當(dāng)限制其傳輸速度(可見光的閃爍頻率)。因此,對(duì)于需要對(duì)數(shù)據(jù)進(jìn)行高速傳輸時(shí), 無法很好地適用。
[0010] 另一方面,在安卓系統(tǒng)中,當(dāng)需要控制閃光燈的開關(guān)時(shí),通常是先調(diào)用camera driver,利用camera自帶的接口,通過設(shè)置camera的參數(shù),來實(shí)現(xiàn)閃光燈的開關(guān)。而這種 對(duì)閃光燈的控制方式,屬于間接控制,其對(duì)閃光燈的調(diào)用具有一定的時(shí)間延遲。
【發(fā)明內(nèi)容】
[0011] 本申請(qǐng)?zhí)峁┑囊环N操作系統(tǒng)中控制硬件設(shè)備的方法和模塊,可以直接控制硬件設(shè) 備,并解決信息傳輸延遲、中斷的問題。
[0012] 根據(jù)本申請(qǐng)的第一方面,本申請(qǐng)?zhí)峁┝艘环N操作系統(tǒng)中控制硬件設(shè)備的方法,包 括:
[0013] 獲取用于控制硬件設(shè)備動(dòng)作的狀態(tài)數(shù)據(jù);
[0014] 將所述狀態(tài)數(shù)據(jù)下發(fā)并存儲(chǔ)到緩沖單元中;
[0015] 調(diào)用硬件設(shè)備驅(qū)動(dòng),所述硬件設(shè)備驅(qū)動(dòng)讀取保存在緩沖單元中的狀態(tài)數(shù)據(jù),根據(jù) 所述狀態(tài)數(shù)據(jù)控制硬件設(shè)備動(dòng)作的狀態(tài);
[0016] 其中所述調(diào)用硬件設(shè)備驅(qū)動(dòng)具體包括:調(diào)用已有的硬件設(shè)備驅(qū)動(dòng),以控制硬件設(shè) 備動(dòng)作;或者,
[0017] 獲取鏈接庫加載指令,加載鏈接庫,所述鏈接庫中包括用于控制硬件設(shè)備動(dòng)作的 功能實(shí)現(xiàn)函數(shù);
[0018] 獲取用于控制硬件設(shè)備動(dòng)作的指令;
[0019] 調(diào)用所述鏈接庫中與所述控制硬件設(shè)備動(dòng)作的指令對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù);
[0020] 執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作。
[0021] 在某些實(shí)施例中,獲取用于控制硬件設(shè)備動(dòng)作的狀態(tài)數(shù)據(jù),具體為:獲取原始數(shù) 據(jù),對(duì)原始數(shù)據(jù)編碼后得到所述狀態(tài)數(shù)據(jù)。
[0022] 在某些實(shí)施例中,所述硬件設(shè)備為發(fā)光器件、震動(dòng)器、攝像頭、傳感器或麥克風(fēng)。
[0023] 在某些實(shí)施例中,所述硬件設(shè)備為發(fā)光器件時(shí),所述硬件設(shè)備驅(qū)動(dòng)為發(fā)光器件驅(qū) 動(dòng),所述狀態(tài)數(shù)據(jù)為表示時(shí)間數(shù)據(jù)的數(shù)組;所述硬件設(shè)備驅(qū)動(dòng)根據(jù)所述狀態(tài)數(shù)據(jù)控制硬件 設(shè)備動(dòng)作的狀態(tài),具體為:發(fā)光器件驅(qū)動(dòng)按照所述數(shù)組中數(shù)據(jù)元素的順序控制發(fā)光器件開 啟或關(guān)閉的時(shí)間。
[0024] 在某些實(shí)施例中,所述狀態(tài)數(shù)據(jù)為表示時(shí)間數(shù)據(jù)、亮度數(shù)據(jù)或強(qiáng)度數(shù)據(jù)的數(shù)組。
[0025] 在某些實(shí)施例中,所述操作系統(tǒng)為安卓系統(tǒng)、Blackberry 0S系統(tǒng)、windows phone 系統(tǒng)、windows mobile系統(tǒng)、I0S系統(tǒng)或Mac 0S系統(tǒng)。
[0026] 在某些實(shí)施例中,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時(shí),所述安卓系統(tǒng)的內(nèi)核驅(qū)動(dòng)層中 設(shè)置有所述硬件設(shè)備的驅(qū)動(dòng),所述硬件設(shè)備的驅(qū)動(dòng)執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬 件設(shè)備執(zhí)行相應(yīng)的動(dòng)作;或者,
[0027] 當(dāng)所述操作系統(tǒng)為I0S系統(tǒng),所述I0S系統(tǒng)的核心系統(tǒng)層中設(shè)置有所述硬件設(shè)備 的驅(qū)動(dòng),所述硬件設(shè)備的驅(qū)動(dòng)執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng) 作。
[0028] 在某些實(shí)施例中,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時(shí),所述安卓系統(tǒng)的JNI層定義有 相應(yīng)的JNI接口函數(shù);
[0029] 獲取鏈接庫加載指令,加載鏈接庫后,根據(jù)所述接口函數(shù)調(diào)用所述鏈接庫中與控 制硬件設(shè)備動(dòng)作的指令對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù),以供內(nèi)核驅(qū)動(dòng)層的硬件設(shè)備驅(qū)動(dòng)執(zhí)行相應(yīng)的 功能實(shí)現(xiàn)函數(shù);或者,
[0030] 當(dāng)所述操作系統(tǒng)為I0S系統(tǒng)時(shí),則利用LibSystem庫訪問核心系統(tǒng)層提供的接口 函數(shù);
[0031] 獲取鏈接庫加載指令,加載鏈接庫后,根據(jù)所述接口函數(shù)調(diào)用所述鏈接庫中與控 制硬件設(shè)備動(dòng)作的指令對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù),以供核心系統(tǒng)層的硬件設(shè)備驅(qū)動(dòng)執(zhí)行相應(yīng)的 功能實(shí)現(xiàn)函數(shù)。
[0032] 在某些實(shí)施例中,JNI層保存有功能實(shí)現(xiàn)函數(shù)實(shí)例化后的地址。
[0033] 在某些實(shí)施例中,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時(shí),所述安卓系統(tǒng)還包括硬件抽象 層,所述安卓系統(tǒng)的硬件抽象層運(yùn)行于內(nèi)核驅(qū)動(dòng)層之上,用于在內(nèi)核驅(qū)動(dòng)層的支持下,為安 卓系統(tǒng)的應(yīng)用框架層和JNI層提供對(duì)硬件設(shè)備控制的接口實(shí)現(xiàn);或者
[0034] 當(dāng)所述操作系統(tǒng)為I0S系統(tǒng),所述I0S系統(tǒng)還包括核心服務(wù)層。
[0035] 根據(jù)本申請(qǐng)的第二方面,本申請(qǐng)?zhí)峁┝艘环N操作系統(tǒng)中控制硬件設(shè)備的模塊,包 括:
[0036] 狀態(tài)數(shù)據(jù)獲取單元,用于獲取用于控制硬件設(shè)備動(dòng)作的狀態(tài)數(shù)據(jù);
[0037] 傳輸單元,用于將所述狀態(tài)數(shù)據(jù)下發(fā);
[0038] 緩沖單元,用于存儲(chǔ)傳輸單元下發(fā)的狀態(tài)數(shù)據(jù);
[0039] 第一執(zhí)行單元,用于調(diào)用硬件設(shè)備驅(qū)動(dòng),并控制所述硬件設(shè)備驅(qū)動(dòng)讀取保存在緩 沖單元中的狀態(tài)數(shù)據(jù),根據(jù)所述狀態(tài)數(shù)據(jù)控制硬件設(shè)備動(dòng)作的狀態(tài);
[0040] 第一執(zhí)行單元調(diào)用硬件設(shè)備驅(qū)動(dòng)時(shí),調(diào)用已有的硬件設(shè)備驅(qū)動(dòng),以控制硬件設(shè)備 動(dòng)作;或者,所述操作系統(tǒng)中控制硬件設(shè)備的模塊還包括:
[0041] 加載單元,用于獲取鏈接庫加載指令,并加載鏈接庫,所述鏈接庫中包括用于控制 硬件設(shè)備動(dòng)作的功能實(shí)現(xiàn)函數(shù);
[0042] 檢測(cè)單元,用于獲取控制硬件設(shè)備動(dòng)作的指令;
[0043] 調(diào)用單元,用于調(diào)用所述鏈接庫中與所述控制硬件設(shè)備動(dòng)作的指令對(duì)應(yīng)的功能實(shí) 現(xiàn)函數(shù);
[0044] 第二執(zhí)行單元,用于控制硬件設(shè)備驅(qū)動(dòng)執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件 設(shè)備執(zhí)行相應(yīng)的動(dòng)作。
[0045] 在某些實(shí)施例中,所述狀態(tài)數(shù)據(jù)獲取單元還包括編碼子單元,用于獲取原始數(shù)據(jù), 對(duì)原始數(shù)據(jù)編碼后得到所述狀態(tài)數(shù)據(jù)。
[0046] 在某些實(shí)施例中,所述硬件設(shè)備為發(fā)光器件、震動(dòng)器、攝像頭、傳感器或麥克風(fēng)。
[0047] 在某些實(shí)施例中,所述硬件設(shè)備為發(fā)光器件時(shí),所述硬件設(shè)備驅(qū)動(dòng)為發(fā)光器件驅(qū) 動(dòng),所述狀態(tài)數(shù)據(jù)為表示時(shí)間數(shù)據(jù)的數(shù)組;所述第一執(zhí)行單元控制硬件設(shè)備驅(qū)動(dòng)根據(jù)所述 狀態(tài)數(shù)據(jù)控制硬件設(shè)備的狀態(tài)時(shí):第一執(zhí)行單元控制發(fā)光器件驅(qū)動(dòng)按照所述數(shù)組中數(shù)據(jù)元 素的順序控制發(fā)光器件開啟或關(guān)閉的時(shí)間。
[0048] 在某些實(shí)施例中,所述狀態(tài)數(shù)據(jù)為表示時(shí)間數(shù)據(jù)、亮度數(shù)據(jù)或強(qiáng)度數(shù)據(jù)的數(shù)組。
[0049] 在某些實(shí)施例中,所述操作系統(tǒng)為安卓系統(tǒng)、Blackberry 0S系統(tǒng)、windows phone 系統(tǒng)、windows mobile系統(tǒng)、I0S系統(tǒng)或Mac 0S系統(tǒng)。
[0050] 在某些實(shí)施例中,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時(shí),所述安卓系統(tǒng)的內(nèi)核驅(qū)動(dòng)層中 設(shè)置有所述硬件設(shè)備的驅(qū)動(dòng),所述第二執(zhí)行單元用于控制硬件設(shè)備的驅(qū)動(dòng)執(zhí)行被調(diào)用的功 能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作;或者
[0051] 當(dāng)所述操作系統(tǒng)為I0S系統(tǒng)時(shí),所述I0S系統(tǒng)的核心系統(tǒng)層中設(shè)置有所述硬件設(shè) 備的驅(qū)動(dòng),所述第二執(zhí)行單元用于控制硬件設(shè)備的驅(qū)動(dòng)執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控 制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作。
[0052] 在某些實(shí)施例中,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時(shí),所述安卓系統(tǒng)的架構(gòu)還包括JNI 層,所述JNI層定義有相應(yīng)的JNI接口函數(shù);
[0053] 調(diào)用單元用于根據(jù)所述接口函數(shù)調(diào)用所述鏈接庫中與控制硬件設(shè)備動(dòng)作的指令 對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù),以供內(nèi)核驅(qū)動(dòng)層的硬件設(shè)備驅(qū)動(dòng)執(zhí)行相應(yīng)的功能實(shí)現(xiàn)函數(shù);或者
[0054] 所述操作系統(tǒng)為I0S系統(tǒng)時(shí),則利用LibSystem庫訪問核心系統(tǒng)層提供的接口函 數(shù);
[0055] 調(diào)用單元用于根據(jù)所述接口函數(shù)調(diào)用所述鏈接庫中與控制硬件設(shè)備動(dòng)作的指令 對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù),以供內(nèi)核驅(qū)動(dòng)層的硬件設(shè)備驅(qū)動(dòng)執(zhí)行相應(yīng)的功能實(shí)現(xiàn)函數(shù)。
[0056] 在某些實(shí)施例中,所述JNI層保存有功能實(shí)現(xiàn)函數(shù)實(shí)例化后的地址。
[0057] 在某些實(shí)施例中,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時(shí),所述安卓系統(tǒng)的架構(gòu)還包括硬 件抽象層,所述硬件抽象層運(yùn)行于內(nèi)核驅(qū)動(dòng)層之上,用于在內(nèi)核驅(qū)動(dòng)層的支持下,為安卓系 統(tǒng)的應(yīng)用框架層和JNI層提供對(duì)硬件設(shè)備控制的接口實(shí)現(xiàn);或者
[0058] 當(dāng)所述操作系統(tǒng)為I0S系統(tǒng)時(shí),所述I0S系統(tǒng)還包括核心服務(wù)層。
[0059] 本申請(qǐng)?zhí)峁┑牟僮飨到y(tǒng)中控制硬件設(shè)備的方法和模塊,在獲取到用于控制硬件設(shè) 備動(dòng)作的狀態(tài)數(shù)據(jù)后,先將狀態(tài)數(shù)據(jù)下發(fā)并存儲(chǔ)到緩沖單元中,之后調(diào)用硬件設(shè)備驅(qū)動(dòng),該 硬件設(shè)備驅(qū)動(dòng)讀取保存在緩沖單元中的狀態(tài)數(shù)據(jù),根據(jù)狀態(tài)數(shù)據(jù)控制硬件設(shè)備動(dòng)作的狀 態(tài)。調(diào)用硬件設(shè)備驅(qū)動(dòng)具體包括:調(diào)用已有的硬件設(shè)備驅(qū)動(dòng),以控制硬件設(shè)備動(dòng)作;或者, 獲取鏈接庫加載指令,加載鏈接庫;在獲取用于控制硬件設(shè)備動(dòng)作的指令后,調(diào)用鏈接庫中 與硬件設(shè)備動(dòng)作指令對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù);之后執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件 設(shè)備執(zhí)行相應(yīng)的動(dòng)作。本申請(qǐng)?zhí)峁┑牟僮飨到y(tǒng)中控制硬件設(shè)備的方法和模塊中,硬件設(shè)備 驅(qū)動(dòng)控制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作為直接控制方式,另外,由于狀態(tài)數(shù)據(jù)存儲(chǔ)在緩沖單元 中,硬件設(shè)備驅(qū)動(dòng)被調(diào)用后,便直接讀取存儲(chǔ)在緩沖單元中的狀態(tài)數(shù)據(jù),該讀取過程是連續(xù) 的,避免了硬件設(shè)備驅(qū)動(dòng)在驅(qū)動(dòng)硬件設(shè)備動(dòng)作的過程中出現(xiàn)中斷、延遲等現(xiàn)象,從而提高了 數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,并為高速數(shù)據(jù)傳輸提供了保證。
【專利附圖】
【附圖說明】
[0060] 圖1為安卓系統(tǒng)的架構(gòu)示意圖;
[0061] 圖2為本申請(qǐng)一種實(shí)施例提供的安卓系統(tǒng)的架構(gòu)示意圖;
[0062] 圖3為本申請(qǐng)一種實(shí)施例提供的安卓系統(tǒng)的架構(gòu)分析示意圖;
[0063] 圖4為本申請(qǐng)一種實(shí)施例安卓系統(tǒng)中控制硬件設(shè)備的方法流程示意圖;
[0064] 圖5為本申請(qǐng)一種實(shí)施例安卓系統(tǒng)中控制硬件設(shè)備的模塊的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0065] 為了更好地理解本申請(qǐng),本申請(qǐng)實(shí)施例以安卓系統(tǒng)中控制發(fā)光器件(閃光燈) 開關(guān)為例進(jìn)行說明,應(yīng)當(dāng)理解,本申請(qǐng)中所指的操作系統(tǒng)還可以是Blackberry OS系統(tǒng)、 windows phone系統(tǒng)、windows mobile系統(tǒng)、I0S系統(tǒng)或Mac OS系統(tǒng)等其他操作系統(tǒng)。
[0066] 在本申請(qǐng)實(shí)施例中,通過在Linux內(nèi)核空間(Linux Kernel層)實(shí)現(xiàn)內(nèi)核驅(qū)動(dòng)程 序(閃光燈驅(qū)動(dòng))和在用戶空間實(shí)現(xiàn)硬件抽象層接口,以向更上一層提供硬件訪問接口,即 為安卓系統(tǒng)的應(yīng)用框架層提供硬件服務(wù)。由于安卓系統(tǒng)的應(yīng)用程序是用Java語言編寫的, 硬件驅(qū)動(dòng)程序是用C/C++語言來實(shí)現(xiàn)的,而Java提供了 JNI (Java Native Interface, Java 本地調(diào)用)方法調(diào)用,因此,在安卓系統(tǒng)中,Java應(yīng)用程序可以通過JNI來調(diào)用硬件抽象層 接口。
[0067] 請(qǐng)參考圖2,本申請(qǐng)實(shí)施例中,將安卓系統(tǒng)的架構(gòu)分為五層。第一層201為Linux內(nèi) 核驅(qū)動(dòng)層(Linux kernel),第二層202為硬件抽象層(HAL,Hardware Abstraction Layer), 第三層203、204為組件庫層203 (Libraries)和虛擬機(jī)層204 (Android Runtime),第四層 205為應(yīng)用框架層(Application Framework),第五層206為應(yīng)用程序?qū)樱ˋpplications)。 [0068] 基于圖2,請(qǐng)參考圖3,其示出了從另一角度對(duì)安卓系統(tǒng)的架構(gòu)的分析??蓪⒄麄€(gè) 安卓系統(tǒng)分為硬件、內(nèi)核空間和用戶空間三個(gè)部分,其各自包括的構(gòu)架內(nèi)容如圖3所示。 [0069] 在本申請(qǐng)實(shí)施例中,將JNI層劃分到第三層中,JNI層為應(yīng)用框架層設(shè)計(jì)了一系列 接口函數(shù),而在這些接口函數(shù)的具體實(shí)現(xiàn)中,利用回調(diào)函數(shù)與硬件抽象層進(jìn)行交互。
[0070] 需要說明的是,本申請(qǐng)實(shí)施例提供的控制閃光燈開關(guān)的方法也同樣適用于圖1所 示架構(gòu)的安卓系統(tǒng),本實(shí)施例中增加硬件抽象層的作用在于,為不具有標(biāo)準(zhǔn)Linux內(nèi)核驅(qū) 動(dòng)層接口的硬件設(shè)備提供接入的路徑,將原本可讀性差的接口轉(zhuǎn)化成可讀性好的接口,提 供給上層程序調(diào)用。即硬件抽象層運(yùn)行于Linux內(nèi)核驅(qū)動(dòng)層之上,用于在Linux內(nèi)核驅(qū)動(dòng) 層的支持下,為應(yīng)用框架層和JNI層提供對(duì)閃光燈控制的接口實(shí)現(xiàn)。
[0071] 圖1和圖2中各層的內(nèi)部框架為本領(lǐng)域技術(shù)人員熟知的,因此,本申請(qǐng)不對(duì)其進(jìn)行 一一翻譯和說明。
[0072] 本申請(qǐng)實(shí)施例中,還利用緩沖單元將用于控制硬件設(shè)備動(dòng)作的狀態(tài)數(shù)據(jù)先存儲(chǔ), 該緩沖單元內(nèi)存儲(chǔ)的數(shù)據(jù)為硬件設(shè)備驅(qū)動(dòng)可直接讀取的,狀態(tài)數(shù)據(jù)存儲(chǔ)完畢后,再調(diào)用硬 件設(shè)備驅(qū)動(dòng),硬件設(shè)備驅(qū)動(dòng)讀取保存在緩存單元中的狀態(tài)數(shù)據(jù),根據(jù)狀態(tài)數(shù)據(jù)控制硬件設(shè) 備動(dòng)作的狀態(tài)。硬件設(shè)備驅(qū)動(dòng)讀取緩存單元中的狀態(tài)數(shù)據(jù)是連續(xù)的,不會(huì)出現(xiàn)時(shí)間延遲、中 斷等現(xiàn)象,從而保證了數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,同時(shí)也為高速數(shù)據(jù)傳輸提供了保證。
[0073] 本申請(qǐng)實(shí)施例中硬件設(shè)備可以為發(fā)光器件、震動(dòng)器、攝像頭、傳感器或麥克風(fēng)。為 了便于對(duì)本申請(qǐng)進(jìn)行說明,本申請(qǐng)實(shí)施例主要以硬件設(shè)備為發(fā)光器件(閃光燈)進(jìn)行說明, 相應(yīng)的,硬件設(shè)備驅(qū)動(dòng)為閃光燈驅(qū)動(dòng),狀態(tài)數(shù)據(jù)為時(shí)間數(shù)據(jù),硬件設(shè)備動(dòng)作為閃光燈的開啟 或關(guān)閉。
[0074] 下面通過【具體實(shí)施方式】結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)說明。
[0075] 請(qǐng)參考圖4,本實(shí)施例提供了一種操作系統(tǒng)中控制硬件設(shè)備的方法,包括下面步 驟:
[0076] 步驟401 :獲取原始數(shù)據(jù)。具體的,原始數(shù)據(jù)可以是用戶輸入的數(shù)據(jù),例如用戶輸 入的銀行卡賬號(hào)。在安卓系統(tǒng)中,可以由應(yīng)用程序?qū)荧@取原始數(shù)據(jù)。
[0077] 步驟402 :對(duì)原始數(shù)據(jù)進(jìn)行編碼,以得到用于控制閃光燈開啟或關(guān)閉的時(shí)間數(shù)據(jù), 例如,控制閃光燈開5s、關(guān)2s、開3s……在安卓系統(tǒng)中,可以由應(yīng)用程序?qū)訉?duì)原始數(shù)據(jù)進(jìn)行 編碼。
[0078] 在某些實(shí)施例中,如果用戶直接輸入用于控制閃光燈開啟或關(guān)閉的時(shí)間數(shù)據(jù),即 原始數(shù)據(jù)便是時(shí)間數(shù)據(jù),此時(shí)則不需要進(jìn)行編碼操作。
[0079] 閃光燈具體可以是電子設(shè)備中自身的光源,例如LED閃光燈;或者其他光源,例如 插接在手機(jī)上的光源,可以為激光發(fā)射器或者LED。
[0080] 獲取的原始數(shù)據(jù)通常為N進(jìn)位制數(shù)據(jù),對(duì)原始數(shù)據(jù)進(jìn)行編碼相當(dāng)于將該N進(jìn)位制 數(shù)據(jù)編碼為電信號(hào)單元,具體如下:
[0081] 將N進(jìn)位制數(shù)據(jù)按位依次轉(zhuǎn)換為與其對(duì)應(yīng)的電信號(hào)單元,該步驟包括:將N進(jìn)位制 數(shù)據(jù)中每個(gè)不同的數(shù)字編碼為不同的電信號(hào)單元,電信號(hào)單元內(nèi)的高低電平持續(xù)時(shí)間段分 別為Til、Ti2···和Tij,i、j、N為自然數(shù),不同的電信號(hào)單元以分隔標(biāo)志隔開,其中,本例的 電信號(hào)單元內(nèi)的高低電平并不默認(rèn)為先高電平后低電平,也可以先低電平后高電平,高低 電平之間其分隔標(biāo)志可以為電平的跳變,或者以持續(xù)時(shí)間段不同的高低電平為特征電平, 其分隔標(biāo)志為不同于特征電平的基準(zhǔn)電平。
[0082] 在一可選實(shí)施例中,可以對(duì)至少部分待編碼的N進(jìn)位制數(shù)據(jù)編碼為狀態(tài)不同的電 平信號(hào),按照電平信號(hào)大小分為多檔,不同檔表示N進(jìn)位制數(shù)據(jù)中的不同數(shù)字。
[0083] 本步驟中,如果原始數(shù)據(jù)是未轉(zhuǎn)換為N進(jìn)位制數(shù)據(jù)的數(shù)據(jù)時(shí),需要先將原始數(shù)據(jù) 轉(zhuǎn)換為N進(jìn)位制數(shù)據(jù)。
[0084] 本例中,Ti2、Ti3…和Tij與Til的運(yùn)算值為預(yù)定值或預(yù)定范圍,這里的運(yùn)算是指: Ti2、Ti3···和Tij與Til的比值、乘積、差、和、倒數(shù)、和/或算余數(shù)。
[0085] 本步驟中,以二進(jìn)制數(shù)據(jù)為例,即當(dāng)N = 2時(shí),將二進(jìn)制數(shù)據(jù)0編碼為第一電信號(hào) 單元,第一電信號(hào)單元內(nèi)的高低電平持續(xù)時(shí)間段分別為T11和T12 ;將二進(jìn)制數(shù)據(jù)1編碼為 第二電信號(hào)單元,第二電信號(hào)單元內(nèi)的高低電平持續(xù)時(shí)間段分別為T21和T22,其中,T11時(shí) 間段為預(yù)設(shè)時(shí)間,T12 = Tll,T21 = Tll,T22 = m*T21,m為設(shè)定的系數(shù);或者,T11時(shí)間段 為預(yù)設(shè)時(shí)間范圍,T12、Til、T21在同一時(shí)間范圍內(nèi),T122 = m*21,m為設(shè)定的系數(shù),最終使 得T22與T21運(yùn)算值不等于T12與T11運(yùn)算值。
[0086] 電平的跳變是從高電平到低電平的跳變,在二進(jìn)制數(shù)據(jù)中,一個(gè)電信號(hào)單元內(nèi)的 電平發(fā)生一次跳變,其中,高電平控制LED閃光燈發(fā)光,低電平控制LED閃光燈不發(fā)光;在其 他實(shí)施例中,可以采用相反的控制方式,如:電平發(fā)生為低電平到高電平的跳變,其中,低電 平控制LED閃光燈發(fā)光,高電平控制LED閃光燈不發(fā)光。
[0087] 步驟403 :將時(shí)間數(shù)據(jù)下發(fā)。在安卓系統(tǒng)中,具體可以為:應(yīng)用程序?qū)訉r(shí)間數(shù)據(jù) 下發(fā)到內(nèi)核驅(qū)動(dòng)層。
[0088] 步驟404 :將下發(fā)的時(shí)間數(shù)據(jù)存儲(chǔ)到緩沖單元中。在安卓系統(tǒng)中,具體為:內(nèi)核驅(qū) 動(dòng)層獲取到應(yīng)用程序?qū)酉掳l(fā)的時(shí)間數(shù)據(jù)后,將其存儲(chǔ)到設(shè)置在內(nèi)核驅(qū)動(dòng)層的緩沖單元中。 緩沖單元內(nèi)存儲(chǔ)的數(shù)據(jù)為發(fā)光器件驅(qū)動(dòng)可直接讀取的,緩沖單元起到暫時(shí)保存時(shí)間數(shù)據(jù)的 作用,其可以是緩沖寄存器。在其他實(shí)施例中,該緩沖單元也可以是利用現(xiàn)有的系統(tǒng)存儲(chǔ)單 元,通過程序的方法將該存儲(chǔ)單元分離出一部分或全部空間作為本實(shí)施例中的緩沖單元。
[0089] 緩沖寄存器又稱緩沖器,可分為輸入緩沖器和輸出緩沖器兩種。前者的作用是將 外設(shè)送來的數(shù)據(jù)暫時(shí)存放,以便處理器將它取走;后者的作用是用來暫時(shí)存放處理器送往 外設(shè)的數(shù)據(jù)。緩沖器可以使高速工作的CPU與慢速工作的外設(shè)起協(xié)調(diào)和緩沖作用,實(shí)現(xiàn)數(shù) 據(jù)傳送的同步。
[0090] 步驟405 :應(yīng)用框架層檢測(cè)獲取鏈接庫加載指令。
[0091 ] 在具體實(shí)施例中,一方面,安卓系統(tǒng)在啟動(dòng)后會(huì)自動(dòng)加載相應(yīng)的鏈接庫,因此,鏈 接庫加載指令可以是安卓系統(tǒng)在啟動(dòng)后發(fā)出的一個(gè)指令;另一方面,鏈接庫只有在需要調(diào) 用相應(yīng)的功能實(shí)現(xiàn)函數(shù)時(shí)才需要進(jìn)行加載,因此,鏈接庫加載指令可以是安卓系統(tǒng)檢測(cè)到 要進(jìn)行功能實(shí)現(xiàn)函數(shù)的調(diào)用時(shí)發(fā)出的一個(gè)指令。
[0092] 步驟406 :應(yīng)用框架層加載鏈接庫,鏈接庫中包括用于控制閃光燈動(dòng)作的功能實(shí) 現(xiàn)函數(shù)。
[0093] 功能實(shí)現(xiàn)函數(shù)為用于控制閃光燈動(dòng)作的函數(shù),例如:
[0094] led_on
[0095] led_off
[0096] ......
[0097] 或者當(dāng)led的驅(qū)動(dòng)信號(hào)需要由另外一個(gè)設(shè)備給出時(shí),例如CPU芯片或攝像頭芯片 等,則需要先打開該設(shè)備,然后再驅(qū)動(dòng)LED發(fā)光。這樣的優(yōu)勢(shì)是控制燈的模式更加靈活,例 如不同顏色、不同亮度等,則可以寫如下函數(shù):
[0098] led_deViCe_〇pen//打開閃光燈(可選,其功能是打開上述設(shè)備)
[0099] led_deViCe_cl〇Se//關(guān)閉閃光燈(可選,其功能是打開上述設(shè)備)
[0100] led_on
[0101] led_off
[0102] ......
[0103] 上述用于控制閃光燈動(dòng)作的函數(shù)在定義完畢后,可以保存在.c文件里,.c文件中 是所有變量和函數(shù)的定義。
[0104] 步驟407 :應(yīng)用程序?qū)荧@取用于控制閃光燈動(dòng)作的指令。該指令可以是用戶通過 安卓設(shè)備的人機(jī)交互界面(即應(yīng)用程序?qū)樱┹斎氲挠糜诳刂崎W光燈動(dòng)作的指令;也可以是 應(yīng)用程序?qū)又幸丫幋a好的指令串,例如用"〇"和"1"表示的數(shù)據(jù)串,其中,"〇"表示閃光燈 關(guān)閉,"1"表示閃光燈打開。
[0105] 基于步驟301,步驟303中用于控制閃光燈動(dòng)作的指令也可以作為鏈接庫加載指 令,用于控制閃光燈動(dòng)作的指令即可理解為要進(jìn)行功能實(shí)現(xiàn)函數(shù)的調(diào)用,因此,需要說明的 是,本實(shí)施例中提供的方法的步驟順序不應(yīng)該理解為對(duì)本申請(qǐng)的限定,在其他實(shí)施例中,其 步驟順序可以根據(jù)實(shí)際情況進(jìn)行適當(dāng)?shù)淖儞Q。
[0106] 步驟408 :應(yīng)用程序?qū)訖z測(cè)鏈接庫是否加載完畢,如果否,則繼續(xù)待鏈接庫加載完 畢,如果是,則繼續(xù)步驟409。
[0107] 步驟409 :應(yīng)用程序?qū)诱{(diào)用鏈接庫中與用于控制閃光燈動(dòng)作的指令對(duì)應(yīng)的功能實(shí) 現(xiàn)函數(shù)。
[0108] 應(yīng)用程序?qū)涌梢栽跈z測(cè)到鏈接庫全部加載完畢時(shí)調(diào)用功能實(shí)現(xiàn)函數(shù),或者在檢測(cè) 的同時(shí)即進(jìn)行調(diào)用,或者可以設(shè)定預(yù)定的時(shí)間,當(dāng)滿足一定的預(yù)定時(shí)間時(shí),便調(diào)用功能實(shí)現(xiàn) 函數(shù)。
[0109] 步驟410 :Linux內(nèi)核驅(qū)動(dòng)層執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制閃光燈執(zhí)行相應(yīng) 的動(dòng)作。
[0110] 本實(shí)施例中,Linux內(nèi)核驅(qū)動(dòng)層中設(shè)置有閃光燈驅(qū)動(dòng),閃光燈驅(qū)動(dòng)執(zhí)行被調(diào)用的功 能實(shí)現(xiàn)函數(shù),以控制閃光燈執(zhí)行相應(yīng)的動(dòng)作。
[0111] 步驟411 :閃光燈驅(qū)動(dòng)讀取保存在緩沖單元中的時(shí)間數(shù)據(jù)。
[0112] 步驟412 :閃光燈驅(qū)動(dòng)讀取時(shí)間數(shù)據(jù)后,根據(jù)時(shí)間數(shù)據(jù)控制發(fā)光器件開啟或關(guān)閉 的時(shí)間。
[0113] 目前,閃光燈通常只用于作為camera的輔助硬件,只有在使用camera時(shí),才有可 能會(huì)使用到閃光燈,因此,安卓系統(tǒng)中在使用閃光燈時(shí),必須先調(diào)用camera driver,通過設(shè) 置camera參數(shù)來實(shí)現(xiàn)閃光燈的控制。即,對(duì)閃光燈的控制為間接控制的方式。
[0114] 在通過camera driver控制閃光燈時(shí)會(huì)出現(xiàn)時(shí)間延遲的問題,但對(duì)于目前閃光燈 的應(yīng)用范圍,該時(shí)間延遲不會(huì)影響正常的使用。然而,隨著光通信(例如可見光通信)的發(fā) 展,當(dāng)需要通過光進(jìn)行信息傳輸時(shí),由于光通信對(duì)傳輸速度及信息傳輸準(zhǔn)確性的要求,上述 時(shí)間延遲的問題便逐漸突顯出來,并成為光通信發(fā)展的障礙之一。
[0115] 本實(shí)施例中,在安卓系統(tǒng)的Linux內(nèi)核驅(qū)動(dòng)層中獨(dú)立設(shè)置有閃光燈驅(qū)動(dòng),在控制 閃光燈時(shí),可以直接調(diào)用閃光燈驅(qū)動(dòng),其對(duì)閃光燈的控制方式為直接控制??梢员苊庠谕ㄟ^ camera driver控制閃光燈時(shí)出現(xiàn)的時(shí)間延遲。
[0116] 需要說明的是,步驟405-步驟409為本實(shí)施例提供的一種硬件設(shè)備驅(qū)動(dòng)(閃光燈 驅(qū)動(dòng))調(diào)用方式,屬于直接控制的方式。在其他實(shí)施例中,可以采用現(xiàn)有技術(shù)中的任一種方 式調(diào)用已有的硬件設(shè)備驅(qū)動(dòng),以控制硬件設(shè)備動(dòng)作,例如采用上述間接控制的方式。
[0117] JNI層定義有接口函數(shù)。應(yīng)用程序?qū)痈鶕?jù)JNI層的接口函數(shù)調(diào)用鏈接庫中與控制 閃光燈動(dòng)作的指令對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù),以供Linux內(nèi)核驅(qū)動(dòng)層的閃光燈驅(qū)動(dòng)執(zhí)行相應(yīng)的 功能實(shí)現(xiàn)函數(shù)。
[0118] 當(dāng)操作系統(tǒng)為I0S系統(tǒng),則syscall為本地化接口處,可實(shí)現(xiàn)安卓系統(tǒng)中JNI層 定義有接口函數(shù)的作用,此處不再贅述。
[0119] JNI層的接口函數(shù)定義了 C/C++函數(shù)與JAVA函數(shù)的對(duì)應(yīng)關(guān)系,該接口函數(shù)采用 JNI方法將硬件抽象層的C/C++函數(shù)映射到應(yīng)用程序?qū)拥腏AVA函數(shù)上,以實(shí)現(xiàn)硬件抽象層 (采用C/C++語言)與應(yīng)用程序?qū)樱ú捎肑AVA語言)的交互。led_on為JAVA函數(shù),只有 通過JNI接口的映射才能調(diào)用底層的功能函數(shù),它會(huì)在JNI層中映射成名為java_全包名 _類名_led_on的本地函數(shù),再在函數(shù)里調(diào)用底層功能函數(shù)。
[0120] 安卓運(yùn)行環(huán)境中的Dalvik虛擬機(jī)在調(diào)用一個(gè)成員函數(shù)時(shí),如果發(fā)現(xiàn)該成員函數(shù) 是一個(gè)JNI方法,那么就會(huì)直接跳到它的地址去執(zhí)行。即,JNI方法是直接在本地操作系統(tǒng) 上執(zhí)行的,而不是由Dalvik虛擬機(jī)解釋器執(zhí)行。因此,JNI方法是安卓應(yīng)用程序與本地操 作系統(tǒng)直接進(jìn)行通信的一個(gè)手段,通過JNI方法使得通信更加高效。
[0121] 優(yōu)選的,JNI層保存有功能實(shí)現(xiàn)函數(shù)實(shí)例化后的地址,以便于JNI層直接調(diào)用功能 實(shí)現(xiàn)函數(shù)。實(shí)例化是指在面向?qū)ο蟮木幊讨?,用類(Class)創(chuàng)建對(duì)象的過程。例如:在閃光 燈的控制過程中,將閃光燈動(dòng)作作為類,將開啟閃光燈、關(guān)閉閃光燈等具體的功能實(shí)現(xiàn)函數(shù) 創(chuàng)建為對(duì)象。該對(duì)象的創(chuàng)建過程,即為實(shí)例化。該對(duì)象創(chuàng)建完后會(huì)有一對(duì)應(yīng)的地址,JNI層 保存該地址后,在后續(xù)調(diào)用該功能實(shí)現(xiàn)函數(shù)時(shí),即可以根據(jù)該地址快速查詢到相應(yīng)的對(duì)象, 而不需要先檢索該功能實(shí)現(xiàn)函數(shù)對(duì)應(yīng)的類。
[0122] 本實(shí)施例中,在硬件抽象層定義有下面三個(gè)結(jié)構(gòu)體:
[0123] struct hw_module_t ;//模塊類型:每一個(gè)硬件模塊的必須申明一個(gè)hal_ module_info_sym的數(shù)據(jù)結(jié)構(gòu)體,該結(jié)構(gòu)體的第一個(gè)成員必須是以hw_module_t為數(shù)據(jù)的 結(jié)構(gòu)體。
[0124] struct hw_module_methods_t ;//模塊方法:該結(jié)構(gòu)體僅提供一個(gè)打開特殊設(shè)備 的open函數(shù)的接口,其傳入?yún)?shù)為"hw_module_t,id"和"w_device_t",該函數(shù)用于初始 化hw_device_t的各個(gè)成員。
[0125] strcut hw_device_t.//設(shè)備類型:對(duì)于每一個(gè)設(shè)備數(shù)據(jù)結(jié)構(gòu)體都必須以該結(jié)構(gòu) 體開頭,該結(jié)構(gòu)體是所有設(shè)備的引導(dǎo)線,在該結(jié)構(gòu)體之后才是每一個(gè)設(shè)備自己的數(shù)據(jù)。
[0126] 本實(shí)施例中,在定義硬件模塊類型結(jié)構(gòu)體時(shí),硬件抽象層規(guī)定不能直接使用hw_ module_t結(jié)構(gòu)體,需要做一個(gè)繼承,即在該結(jié)構(gòu)體外再套一層結(jié)構(gòu)體,但hw_module_t結(jié)構(gòu) 體必須是該結(jié)構(gòu)體的第一個(gè)成員變量數(shù)據(jù)類型,以方便兩者之間的強(qiáng)制轉(zhuǎn)換。其部分程序 代碼可參考如下: struct led niodule t
[0127] { striict liw module t common;
[0128] struct led-control-device-t { struct hw device t common; ini (:f:sei on)(struct led control device t *de\, iiit32 t led); int (^set oif)(struct led control de^ ice t :' de\; int32 t led); 1; stnict led control coiitext t { struct led-control-device-t device; I;
[0129] 定義結(jié)構(gòu)體的作用:把相關(guān)的變量與功能打包在一起,代碼進(jìn)行封裝,以避免隨意 被更改。結(jié)構(gòu)體是一種優(yōu)選的方式,并不是必須的。
[0130] 結(jié)構(gòu)體是由一系列具有相同類型或不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合。結(jié)構(gòu)體用來 封裝一些屬性、參數(shù)等值(即數(shù)據(jù)成員),以組成新的類型,封裝后使得該屬性、參數(shù)等值可 以被多次利用。
[0131] 對(duì)于閃光燈驅(qū)動(dòng),其定義的結(jié)構(gòu)體可以包括閃光燈亮度、閃光燈開/關(guān)時(shí)間等,而 亮度值、開/關(guān)時(shí)間則作為數(shù)據(jù)成員被封裝在相應(yīng)類別的結(jié)構(gòu)體中。另外,對(duì)于采用C++定 義的結(jié)構(gòu)體,其數(shù)據(jù)成員還可以為函數(shù),不僅可以用于描述對(duì)象的狀態(tài),還可以用于描述對(duì) 象的行為,例如控制閃光燈開/關(guān)的函數(shù)LED_0N,LED_0FF,LED_DEVICE_0PEN,LED_DEVICE_ CLOSE,它們分別對(duì)應(yīng)前述的 led_on,led_off,led_device_open,led_device_close 函數(shù)。
[0132] 在某些實(shí)施例中,時(shí)間數(shù)據(jù)為一數(shù)組。閃光燈驅(qū)動(dòng)根據(jù)時(shí)間數(shù)據(jù)控制閃光燈開啟 或關(guān)閉的時(shí)間,具體為:發(fā)光器件驅(qū)動(dòng)按照數(shù)組中數(shù)據(jù)元素的順序控制閃光燈開啟或關(guān)閉 的時(shí)間。當(dāng)然,在其他實(shí)施例中,時(shí)間數(shù)據(jù)的格式也可以采用現(xiàn)有技術(shù)中其他可行的方式。
[0133] 本實(shí)施例提供操作系統(tǒng)中控制閃光燈的方法中,利用緩沖單元將用于控制閃光燈 開啟或關(guān)閉的時(shí)間數(shù)據(jù)先存儲(chǔ),時(shí)間數(shù)據(jù)存儲(chǔ)完畢后,再調(diào)用發(fā)光器件驅(qū)動(dòng),閃光燈驅(qū)動(dòng)讀 取保存在緩存器中的時(shí)間數(shù)據(jù),根據(jù)時(shí)間數(shù)據(jù)控制閃光燈開啟或關(guān)閉的時(shí)間。閃光燈驅(qū)動(dòng) 讀取緩存器中的時(shí)間數(shù)據(jù)是連續(xù)的,不會(huì)出現(xiàn)時(shí)間延遲現(xiàn)象,從而保證了數(shù)據(jù)傳輸?shù)臏?zhǔn)確 性,同時(shí)也為光通信的高速數(shù)據(jù)傳輸提供了保證。
[0134] 需要說明的是,本實(shí)施例中的操作系統(tǒng)可以是安卓系統(tǒng)、Blackberry 0S系統(tǒng)、 windows phone系統(tǒng)、windows mobile系統(tǒng)、I0S系統(tǒng)、Mac 0S系統(tǒng)等,雖然各個(gè)系統(tǒng)存在 著差異,但為了實(shí)現(xiàn)本實(shí)施例控制發(fā)光器件的方法,在本發(fā)明的構(gòu)思下,本領(lǐng)域技術(shù)人員可 以通過適當(dāng)?shù)母淖円赃_(dá)到目的。
[0135] 在某些實(shí)施例中,狀態(tài)數(shù)據(jù)還可以是用于控制閃光燈發(fā)光強(qiáng)度的強(qiáng)度數(shù)據(jù)。在其 他實(shí)施例中,如果硬件設(shè)備為震動(dòng)器,相應(yīng)的,狀態(tài)數(shù)據(jù)也可以是用于控制震動(dòng)器震動(dòng)強(qiáng)度 的強(qiáng)度數(shù)據(jù)。對(duì)于其他硬件設(shè)備,其實(shí)現(xiàn)原理與閃光燈的實(shí)現(xiàn)原理一致,本實(shí)施例不再贅 述。
[0136] 請(qǐng)參考圖5,對(duì)應(yīng)于本實(shí)施例提供的操作系統(tǒng)中控制硬件設(shè)備的方法,本實(shí)施例還 提供了一種操作系統(tǒng)中控制硬件設(shè)備的模塊,包括狀態(tài)數(shù)據(jù)獲取單元501、傳輸單元502、 緩沖單元503、加載單元504、檢測(cè)單元505、調(diào)用單元506、第一執(zhí)行單元508和第二執(zhí)行單 元 507。
[0137] 狀態(tài)數(shù)據(jù)獲取單元501用于獲取用于控制硬件設(shè)備動(dòng)作的狀態(tài)數(shù)據(jù)。
[0138] 傳輸單元502用于將狀態(tài)數(shù)據(jù)下發(fā)。
[0139] 緩沖單元503用于存儲(chǔ)傳輸單元502下發(fā)的狀態(tài)數(shù)據(jù)。
[0140] 第一執(zhí)行單元508用于調(diào)用硬件設(shè)備驅(qū)動(dòng),并控制硬件設(shè)備驅(qū)動(dòng)讀取保存在緩沖 單元503中的狀態(tài)數(shù)據(jù),根據(jù)該狀態(tài)數(shù)據(jù)控制硬件設(shè)備動(dòng)作的狀態(tài)。
[0141] 加載單元504用于獲取鏈接庫加載指令,并加載鏈接庫,鏈接庫中包括用于控制 硬件設(shè)備動(dòng)作的功能實(shí)現(xiàn)函數(shù)。
[0142] 檢測(cè)單元505用于獲取控制硬件設(shè)備動(dòng)作的指令。
[0143] 調(diào)用單元506用于調(diào)用鏈接庫中與控制硬件設(shè)備動(dòng)作的指令對(duì)應(yīng)的功能實(shí)現(xiàn)函 數(shù)。
[0144] 第二執(zhí)行單元507用于控制硬件設(shè)備驅(qū)動(dòng)執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬 件設(shè)備執(zhí)行相應(yīng)的動(dòng)作。
[0145] 在具體實(shí)施例中,狀態(tài)數(shù)據(jù)獲取單元501還包括編碼子單元5010,用于獲取原始 數(shù)據(jù),對(duì)原始數(shù)據(jù)編碼后得到狀態(tài)數(shù)據(jù)。
[0146] 在具體實(shí)施例中,硬件設(shè)備為發(fā)光器件、震動(dòng)器、攝像頭、傳感器或麥克風(fēng)。
[0147] 在具體實(shí)施例中,硬件設(shè)備為發(fā)光器件時(shí),硬件設(shè)備驅(qū)動(dòng)為發(fā)光器件驅(qū)動(dòng),狀態(tài)數(shù) 據(jù)為表示時(shí)間數(shù)據(jù)的數(shù)組;第一執(zhí)行單元508控制硬件設(shè)備驅(qū)動(dòng)根據(jù)狀態(tài)數(shù)據(jù)控制硬件設(shè) 備的狀態(tài)時(shí):第一執(zhí)行單元508控制發(fā)光器件驅(qū)動(dòng)按照數(shù)組中數(shù)據(jù)元素的順序控制發(fā)光器 件開啟或關(guān)閉的時(shí)間。
[0148] 在具體實(shí)施例中,狀態(tài)數(shù)據(jù)為表示時(shí)間數(shù)據(jù)、亮度數(shù)據(jù)或強(qiáng)度數(shù)據(jù)的數(shù)組。
[0149] 在具體實(shí)施例中,操作系統(tǒng)為安卓系統(tǒng)、Blackberry 0S系統(tǒng)、windows phone系 統(tǒng)、windows mobile系統(tǒng)、I0S系統(tǒng)或Mac 0S系統(tǒng)。
[0150] 在具體實(shí)施例中,當(dāng)操作系統(tǒng)為安卓系統(tǒng)時(shí),安卓系統(tǒng)的內(nèi)核驅(qū)動(dòng)層中設(shè)置有硬 件設(shè)備的驅(qū)動(dòng),第二執(zhí)行單元507用于控制硬件設(shè)備的驅(qū)動(dòng)執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù), 以控制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作;或者,當(dāng)操作系統(tǒng)為I0S系統(tǒng)時(shí),I0S系統(tǒng)的核心系統(tǒng)層 中設(shè)置有硬件設(shè)備的驅(qū)動(dòng),第二執(zhí)行單元507用于控制硬件設(shè)備的驅(qū)動(dòng)執(zhí)行被調(diào)用的功能 實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作。
[0151] 在具體實(shí)施例中,當(dāng)操作系統(tǒng)為安卓系統(tǒng)時(shí),安卓系統(tǒng)的架構(gòu)還包括JNI層,JNI 層定義有相應(yīng)的JNI接口函數(shù);調(diào)用單元506用于根據(jù)接口函數(shù)調(diào)用鏈接庫中與控制硬件 設(shè)備動(dòng)作的指令對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù),以供內(nèi)核驅(qū)動(dòng)層的硬件設(shè)備驅(qū)動(dòng)執(zhí)行相應(yīng)的功能實(shí) 現(xiàn)函數(shù);或者,操作系統(tǒng)為I0S系統(tǒng)時(shí),則利用LibSystem庫訪問核心系統(tǒng)層提供的接口函 數(shù);調(diào)用單元506用于根據(jù)接口函數(shù)調(diào)用鏈接庫中與控制硬件設(shè)備動(dòng)作的指令對(duì)應(yīng)的功能 實(shí)現(xiàn)函數(shù),以供內(nèi)核驅(qū)動(dòng)層的硬件設(shè)備驅(qū)動(dòng)執(zhí)行相應(yīng)的功能實(shí)現(xiàn)函數(shù)。
[0152] 在具體實(shí)施例中,JNI層保存有功能實(shí)現(xiàn)函數(shù)實(shí)例化后的地址。
[0153] 在具體實(shí)施例中,當(dāng)操作系統(tǒng)為安卓系統(tǒng)時(shí),安卓系統(tǒng)的架構(gòu)還包括硬件抽象層, 硬件抽象層運(yùn)行于內(nèi)核驅(qū)動(dòng)層之上,用于在內(nèi)核驅(qū)動(dòng)層的支持下,為安卓系統(tǒng)的應(yīng)用框架 層和JNI層提供對(duì)硬件設(shè)備控制的接口實(shí)現(xiàn);或者,當(dāng)操作系統(tǒng)為I0S系統(tǒng)時(shí),I0S系統(tǒng)還 包括核心服務(wù)層。
[0154] 需要說明的是,本實(shí)施例中,加載單元504、檢測(cè)單元505、調(diào)用單元506、第二執(zhí)行 單元507對(duì)硬件設(shè)備驅(qū)動(dòng)(閃光燈驅(qū)動(dòng))調(diào)用方式屬于直接控制的方式。在其他實(shí)施例中, 第一執(zhí)行單元508可以采用現(xiàn)有技術(shù)中的任一種方式調(diào)用已有的硬件設(shè)備驅(qū)動(dòng),以控制硬 件設(shè)備動(dòng)作,例如采用間接控制的方式。
[0155] 本實(shí)施例提供的操作系統(tǒng)中控制硬件設(shè)備的模塊與上述控制硬件設(shè)備的方法對(duì) 應(yīng),此處不再對(duì)其工作原理進(jìn)行贅述。
[0156] 本申請(qǐng)實(shí)施例提供的操作系統(tǒng)中控制硬件設(shè)備的方法和模塊,在獲取到用于控制 硬件設(shè)備動(dòng)作的狀態(tài)數(shù)據(jù)后,先將狀態(tài)數(shù)據(jù)下發(fā)并存儲(chǔ)到緩沖單元中,之后調(diào)用硬件設(shè)備 驅(qū)動(dòng),該硬件設(shè)備驅(qū)動(dòng)讀取保存在緩沖單元中的狀態(tài)數(shù)據(jù),根據(jù)狀態(tài)數(shù)據(jù)控制硬件設(shè)備動(dòng) 作的狀態(tài)。調(diào)用硬件設(shè)備驅(qū)動(dòng)具體包括:調(diào)用已有的硬件設(shè)備驅(qū)動(dòng),以控制硬件設(shè)備動(dòng)作; 或者,獲取鏈接庫加載指令,加載鏈接庫;在獲取用于控制硬件設(shè)備動(dòng)作的指令后,調(diào)用鏈 接庫中與硬件設(shè)備動(dòng)作指令對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù);之后執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控 制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作。本申請(qǐng)?zhí)峁┑牟僮飨到y(tǒng)中控制硬件設(shè)備的方法和模塊中,硬 件設(shè)備驅(qū)動(dòng)控制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作為直接控制方式,另外,由于狀態(tài)數(shù)據(jù)存儲(chǔ)在緩 沖單元中,硬件設(shè)備驅(qū)動(dòng)被調(diào)用后,便直接讀取存儲(chǔ)在緩沖單元中的狀態(tài)數(shù)據(jù),該讀取過程 是連續(xù)的,避免了硬件設(shè)備驅(qū)動(dòng)在驅(qū)動(dòng)硬件設(shè)備動(dòng)作的過程中出現(xiàn)中斷、延遲等現(xiàn)象,從而 提高了數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,并為高速數(shù)據(jù)傳輸提供了保證。
[0157] 本領(lǐng)域技術(shù)人員可以理解,上述實(shí)施方式中各種方法的全部或部分步驟可以通過 程序來指令相關(guān)硬件完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包 括:只讀存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器、磁盤或光盤等。
[0158] 以上內(nèi)容是結(jié)合具體的實(shí)施方式對(duì)本申請(qǐng)所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本申 請(qǐng)的具體實(shí)施只局限于這些說明。對(duì)于本申請(qǐng)所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫 離本申請(qǐng)發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換。
【權(quán)利要求】
1. 一種操作系統(tǒng)中控制硬件設(shè)備的方法,其特征在于,包括: 獲取用于控制硬件設(shè)備動(dòng)作的狀態(tài)數(shù)據(jù); 將所述狀態(tài)數(shù)據(jù)下發(fā)并存儲(chǔ)到緩沖單元中; 調(diào)用硬件設(shè)備驅(qū)動(dòng),所述硬件設(shè)備驅(qū)動(dòng)讀取保存在緩沖單元中的狀態(tài)數(shù)據(jù),根據(jù)所述 狀態(tài)數(shù)據(jù)控制硬件設(shè)備動(dòng)作的狀態(tài); 其中所述調(diào)用硬件設(shè)備驅(qū)動(dòng)具體包括:調(diào)用已有的硬件設(shè)備驅(qū)動(dòng),以控制硬件設(shè)備動(dòng) 作;或者, 獲取鏈接庫加載指令,加載鏈接庫,所述鏈接庫中包括用于控制硬件設(shè)備動(dòng)作的功能 實(shí)現(xiàn)函數(shù); 獲取用于控制硬件設(shè)備動(dòng)作的指令; 調(diào)用所述鏈接庫中與所述控制硬件設(shè)備動(dòng)作的指令對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù); 執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作。
2. 如權(quán)利要求1所述的方法,其特征在于,獲取用于控制硬件設(shè)備動(dòng)作的狀態(tài)數(shù)據(jù),具 體為:獲取原始數(shù)據(jù),對(duì)原始數(shù)據(jù)編碼后得到所述狀態(tài)數(shù)據(jù)。
3. 如權(quán)利要求1所述的方法,其特征在于,所述硬件設(shè)備為發(fā)光器件、震動(dòng)器、攝像頭、 傳感器或麥克風(fēng)。
4. 如權(quán)利要求3所述的方法,其特征在于,所述硬件設(shè)備為發(fā)光器件時(shí),所述硬件設(shè)備 驅(qū)動(dòng)為發(fā)光器件驅(qū)動(dòng),所述狀態(tài)數(shù)據(jù)為表示時(shí)間數(shù)據(jù)的數(shù)組;所述硬件設(shè)備驅(qū)動(dòng)根據(jù)所述 狀態(tài)數(shù)據(jù)控制硬件設(shè)備動(dòng)作的狀態(tài),具體為:發(fā)光器件驅(qū)動(dòng)按照所述數(shù)組中數(shù)據(jù)元素的順 序控制發(fā)光器件開啟或關(guān)閉的時(shí)間。
5. 如權(quán)利要求1所述的方法,其特征在于,所述狀態(tài)數(shù)據(jù)為表示時(shí)間數(shù)據(jù)、亮度數(shù)據(jù)或 強(qiáng)度數(shù)據(jù)的數(shù)組。
6. 如權(quán)利要求1所述的方法,其特征在于,所述操作系統(tǒng)為安卓系統(tǒng)、Blackberry 0S 系統(tǒng)、windows phone 系統(tǒng)、windows mobile 系統(tǒng)、IOS 系統(tǒng)或 Mac OS 系統(tǒng)。
7. 如權(quán)利要求1-6任一項(xiàng)所述的方法,其特征在于,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時(shí),所 述安卓系統(tǒng)的內(nèi)核驅(qū)動(dòng)層中設(shè)置有所述硬件設(shè)備的驅(qū)動(dòng),所述硬件設(shè)備的驅(qū)動(dòng)執(zhí)行被調(diào)用 的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作;或者, 當(dāng)所述操作系統(tǒng)為I0S系統(tǒng),所述I0S系統(tǒng)的核心系統(tǒng)層中設(shè)置有所述硬件設(shè)備的驅(qū) 動(dòng),所述硬件設(shè)備的驅(qū)動(dòng)執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作。
8. 如權(quán)利要求7所述的方法,其特征在于,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時(shí),所述安卓系 統(tǒng)的JNI層定義有相應(yīng)的JNI接口函數(shù); 獲取鏈接庫加載指令,加載鏈接庫后,根據(jù)所述接口函數(shù)調(diào)用所述鏈接庫中與控制硬 件設(shè)備動(dòng)作的指令對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù),以供內(nèi)核驅(qū)動(dòng)層的硬件設(shè)備驅(qū)動(dòng)執(zhí)行相應(yīng)的功能 實(shí)現(xiàn)函數(shù);或者, 當(dāng)所述操作系統(tǒng)為I0S系統(tǒng)時(shí),則利用LibSystem庫訪問核心系統(tǒng)層提供的接口函 數(shù); 獲取鏈接庫加載指令,加載鏈接庫后,根據(jù)所述接口函數(shù)調(diào)用所述鏈接庫中與控制硬 件設(shè)備動(dòng)作的指令對(duì)應(yīng)的功能實(shí)現(xiàn)函數(shù),以供核心系統(tǒng)層的硬件設(shè)備驅(qū)動(dòng)執(zhí)行相應(yīng)的功能 實(shí)現(xiàn)函數(shù)。
9. 如權(quán)利要求8所述的方法,其特征在于,JNI層保存有功能實(shí)現(xiàn)函數(shù)實(shí)例化后的地 址。
10. 如權(quán)利要求8所述的方法,其特征在于,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時(shí),所述安卓 系統(tǒng)還包括硬件抽象層,所述安卓系統(tǒng)的硬件抽象層運(yùn)行于內(nèi)核驅(qū)動(dòng)層之上,用于在內(nèi)核 驅(qū)動(dòng)層的支持下,為安卓系統(tǒng)的應(yīng)用框架層和JNI層提供對(duì)硬件設(shè)備控制的接口實(shí)現(xiàn);或 者 當(dāng)所述操作系統(tǒng)為IOS系統(tǒng),所述IOS系統(tǒng)還包括核心服務(wù)層。
11. 一種操作系統(tǒng)中控制硬件設(shè)備的模塊,其特征在于,包括: 狀態(tài)數(shù)據(jù)獲取單元,用于獲取用于控制硬件設(shè)備動(dòng)作的狀態(tài)數(shù)據(jù); 傳輸單元,用于將所述狀態(tài)數(shù)據(jù)下發(fā); 緩沖單元,用于存儲(chǔ)傳輸單元下發(fā)的狀態(tài)數(shù)據(jù); 第一執(zhí)行單元,用于調(diào)用硬件設(shè)備驅(qū)動(dòng),并控制所述硬件設(shè)備驅(qū)動(dòng)讀取保存在緩沖單 元中的狀態(tài)數(shù)據(jù),根據(jù)所述狀態(tài)數(shù)據(jù)控制硬件設(shè)備動(dòng)作的狀態(tài); 第一執(zhí)行單元調(diào)用硬件設(shè)備驅(qū)動(dòng)時(shí),調(diào)用已有的硬件設(shè)備驅(qū)動(dòng),以控制硬件設(shè)備動(dòng)作; 或者,所述操作系統(tǒng)中控制硬件設(shè)備的模塊還包括: 加載單元,用于獲取鏈接庫加載指令,并加載鏈接庫,所述鏈接庫中包括用于控制硬件 設(shè)備動(dòng)作的功能實(shí)現(xiàn)函數(shù); 檢測(cè)單元,用于獲取控制硬件設(shè)備動(dòng)作的指令; 調(diào)用單元,用于調(diào)用所述鏈接庫中與所述控制硬件設(shè)備動(dòng)作的指令對(duì)應(yīng)的功能實(shí)現(xiàn)函 數(shù); 第二執(zhí)行單元,用于控制硬件設(shè)備驅(qū)動(dòng)執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備 執(zhí)行相應(yīng)的動(dòng)作。
12. 如權(quán)利要求11所述的模塊,其特征在于,所述狀態(tài)數(shù)據(jù)獲取單元還包括編碼子單 元,用于獲取原始數(shù)據(jù),對(duì)原始數(shù)據(jù)編碼后得到所述狀態(tài)數(shù)據(jù)。
13. 如權(quán)利要求11所述的模塊,其特征在于,所述硬件設(shè)備為發(fā)光器件、震動(dòng)器、攝像 頭、傳感器或麥克風(fēng)。
14. 如權(quán)利要求13所述的模塊,其特征在于,所述硬件設(shè)備為發(fā)光器件時(shí),所述硬件設(shè) 備驅(qū)動(dòng)為發(fā)光器件驅(qū)動(dòng),所述狀態(tài)數(shù)據(jù)為表示時(shí)間數(shù)據(jù)的數(shù)組;所述第一執(zhí)行單元控制硬 件設(shè)備驅(qū)動(dòng)根據(jù)所述狀態(tài)數(shù)據(jù)控制硬件設(shè)備的狀態(tài)時(shí):第一執(zhí)行單元控制發(fā)光器件驅(qū)動(dòng)按 照所述數(shù)組中數(shù)據(jù)元素的順序控制發(fā)光器件開啟或關(guān)閉的時(shí)間。
15. 如權(quán)利要求11所述的模塊,其特征在于,所述狀態(tài)數(shù)據(jù)為表示時(shí)間數(shù)據(jù)、亮度數(shù)據(jù) 或強(qiáng)度數(shù)據(jù)的數(shù)組。
16. 如權(quán)利要求11所述的模塊,其特征在于,所述操作系統(tǒng)為安卓系統(tǒng)、Blackberry OS 系統(tǒng)、windows phone 系統(tǒng)、windows mobile 系統(tǒng)、IOS 系統(tǒng)或 Mac OS 系統(tǒng)。
17. 如權(quán)利要求11-16任一項(xiàng)所述的模塊,其特征在于,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng) 時(shí),所述安卓系統(tǒng)的內(nèi)核驅(qū)動(dòng)層中設(shè)置有所述硬件設(shè)備的驅(qū)動(dòng),所述第二執(zhí)行單元用于控 制硬件設(shè)備的驅(qū)動(dòng)執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動(dòng)作;或者 當(dāng)所述操作系統(tǒng)為I0S系統(tǒng)時(shí),所述I0S系統(tǒng)的核心系統(tǒng)層中設(shè)置有所述硬件設(shè)備的 驅(qū)動(dòng),所述第二執(zhí)行單元用于控制硬件設(shè)備的驅(qū)動(dòng)執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬 件設(shè)備執(zhí)行相應(yīng)的動(dòng)作。
18. 如權(quán)利要求17所述的模塊,其特征在于,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時(shí),所述安卓 系統(tǒng)的架構(gòu)還包括JNI層,所述JNI層定義有相應(yīng)的JNI接口函數(shù); 調(diào)用單元用于根據(jù)所述接口函數(shù)調(diào)用所述鏈接庫中與控制硬件設(shè)備動(dòng)作的指令對(duì)應(yīng) 的功能實(shí)現(xiàn)函數(shù),以供內(nèi)核驅(qū)動(dòng)層的硬件設(shè)備驅(qū)動(dòng)執(zhí)行相應(yīng)的功能實(shí)現(xiàn)函數(shù);或者 所述操作系統(tǒng)為IOS系統(tǒng)時(shí),則利用LibSystem庫訪問核心系統(tǒng)層提供的接口函數(shù); 調(diào)用單元用于根據(jù)所述接口函數(shù)調(diào)用所述鏈接庫中與控制硬件設(shè)備動(dòng)作的指令對(duì)應(yīng) 的功能實(shí)現(xiàn)函數(shù),以供內(nèi)核驅(qū)動(dòng)層的硬件設(shè)備驅(qū)動(dòng)執(zhí)行相應(yīng)的功能實(shí)現(xiàn)函數(shù)。
19. 如權(quán)利要求18所述的模塊,其特征在于,所述JNI層保存有功能實(shí)現(xiàn)函數(shù)實(shí)例化后 的地址。
20. 如權(quán)利要求18所述的模塊,其特征在于,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時(shí),所述安卓 系統(tǒng)的架構(gòu)還包括硬件抽象層,所述硬件抽象層運(yùn)行于內(nèi)核驅(qū)動(dòng)層之上,用于在內(nèi)核驅(qū)動(dòng) 層的支持下,為安卓系統(tǒng)的應(yīng)用框架層和JNI層提供對(duì)硬件設(shè)備控制的接口實(shí)現(xiàn);或者 當(dāng)所述操作系統(tǒng)為IOS系統(tǒng)時(shí),所述IOS系統(tǒng)還包括核心服務(wù)層。
【文檔編號(hào)】G06F9/44GK104267956SQ201410510111
【公開日】2015年1月7日 申請(qǐng)日期:2014年9月28日 優(yōu)先權(quán)日:2014年9月28日
【發(fā)明者】不公告發(fā)明人 申請(qǐng)人:深圳光啟創(chuàng)新技術(shù)有限公司