操作系統(tǒng)中直接控制硬件設(shè)備的方法和模塊的制作方法
【專利摘要】一種操作系統(tǒng)中直接控制硬件設(shè)備的方法和模塊,其中,先獲取鏈接庫加載指令,加載鏈接庫■’在獲取用于控制硬件設(shè)備動作的指令后,調(diào)用鏈接庫中與硬件設(shè)備動作指令對應(yīng)的功能實(shí)現(xiàn)函數(shù);之后執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動作,從而實(shí)現(xiàn)對硬件設(shè)備的直接控制。
【專利說明】操作系統(tǒng)中直接控制硬件設(shè)備的方法和模塊
【技術(shù)領(lǐng)域】
[0001] 本申請涉及電子設(shè)備操作系統(tǒng)的開發(fā),具體涉及一種操作系統(tǒng)中直接控制硬件設(shè) 備的方法和模塊。
【背景技術(shù)】
[0002] 請參考圖1,為安卓(安卓)系統(tǒng)的架構(gòu)示意圖。
[0003] 第一層101為Linux內(nèi)核驅(qū)動層(Linux kernel),其由C/C++實(shí)現(xiàn)。安卓核心系 統(tǒng)服務(wù)依賴于Linux內(nèi)核,包括安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議、驅(qū)動模型等。Linux 內(nèi)核也作為硬件和軟件棧之間的抽象層,除了標(biāo)準(zhǔn)的Linux內(nèi)核外,安卓還增加了內(nèi)核的 驅(qū)動程序,例如:Binder(IPC)驅(qū)動、camera驅(qū)動、電源管理等。
[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)動環(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ù)人員正在研究的問題。在安卓系統(tǒng)中,當(dāng)需要控制閃光燈的開關(guān)時,通常是先調(diào)用camera driver,利用camera自帶的接口,通過設(shè)置camera的參數(shù),來實(shí)現(xiàn)閃光燈的開關(guān)。而這種 對閃光燈的控制方式,屬于間接控制,其對閃光燈的調(diào)用具有一定的時間延遲。
【發(fā)明內(nèi)容】
[0008] 根據(jù)本申請的第一方面,本申請?zhí)峁┝艘环N操作系統(tǒng)中直接控制硬件設(shè)備的方 法,包括:
[0009] 獲取鏈接庫加載指令,加載鏈接庫,所述鏈接庫中包括用于控制硬件設(shè)備動作的 功能實(shí)現(xiàn)函數(shù);
[0010] 獲取用于控制硬件設(shè)備動作的指令;
[0011] 調(diào)用所述鏈接庫中與所述控制硬件設(shè)備動作的指令對應(yīng)的功能實(shí)現(xiàn)函數(shù);
[0012] 執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動作。
[0013] 根據(jù)本申請的第二方面,本申請還提供了一種操作系統(tǒng)中直接控制硬件設(shè)備的模 塊,包括:
[0014] 加載單元,用于獲取鏈接庫加載指令,并加載鏈接庫,所述鏈接庫中包括用于控制 硬件設(shè)備動作的功能實(shí)現(xiàn)函數(shù);
[0015] 檢測單元,用于獲取控制硬件設(shè)備動作的指令;
[0016] 調(diào)用單元,用于調(diào)用所述鏈接庫中與所述控制硬件設(shè)備動作的指令對應(yīng)的功能實(shí) 現(xiàn)函數(shù);
[0017] 執(zhí)行單元,用于執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動作。
[0018] 本申請?zhí)峁┑牟僮飨到y(tǒng)中直接控制硬件設(shè)備的方法和模塊中,先獲取鏈接庫加載 指令,加載鏈接庫;在獲取用于控制硬件設(shè)備動作的指令后,調(diào)用鏈接庫中與硬件設(shè)備動作 指令對應(yīng)的功能實(shí)現(xiàn)函數(shù);之后執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的 動作,從而實(shí)現(xiàn)對硬件設(shè)備的直接控制。
【專利附圖】
【附圖說明】
[0019] 圖1為安卓系統(tǒng)的架構(gòu)示意圖;
[0020]圖2為本申請一種實(shí)施例提供的安卓系統(tǒng)的架構(gòu)示意圖;
[0021]圖3為本申請一種實(shí)施例提供的安卓系統(tǒng)的架構(gòu)分析示意圖;
[0022] 圖4為本申請一種實(shí)施例中安卓系統(tǒng)中直接控制閃光燈開關(guān)的方法的流程示意 圖;
[0023]圖5為本申請一種實(shí)施例中安卓系統(tǒng)中直接控制閃光燈開關(guān)的模塊的結(jié)構(gòu)示意 圖。
【具體實(shí)施方式】
[0024] 為了更好地理解本申請,本申請實(shí)施例以安卓系統(tǒng)中直接控制閃光燈開關(guān)為例進(jìn) 行說明,應(yīng)當(dāng)理解,本申請中所指的操作系統(tǒng)還可以是ioS、mac os等其他操作系統(tǒng),硬件設(shè) 備還可以是電子設(shè)備中攝像頭、藍(lán)牙、傳感器、麥克風(fēng)等。
[0025] 下面通過具體實(shí)施例對本申請做進(jìn)一步說明。
[0026] 在本申請實(shí)施例中,通過在Linux內(nèi)核空間(Linux Kernel層)實(shí)現(xiàn)內(nèi)核驅(qū)動程 序(閃光燈驅(qū)動)和在用戶空間實(shí)現(xiàn)硬件抽象層接口,以向更上一層提供硬件訪問接口,即 為安卓系統(tǒng)的應(yīng)用框架層提供硬件服務(wù)。由于安卓系統(tǒng)的應(yīng)用程序是用Java語言編寫的, 硬件驅(qū)動程序是用C/C++語言來實(shí)現(xiàn)的,而Java提供了 JNI(Java Native Interface, Java 本地調(diào)用)方法調(diào)用,因此,在安卓系統(tǒng)中,Java應(yīng)用程序可以通過JNI來調(diào)用硬件抽象層 接口。
[0027] 請參考圖2,本實(shí)施例中,將安卓系統(tǒng)的架構(gòu)分為五層。第一層201為Linux內(nèi)核 驅(qū)動層(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)。
[0028] 基于圖2,請參考圖3,其示出了從另一角度對安卓系統(tǒng)的架構(gòu)的分析。可將整個 安卓系統(tǒng)分為硬件、內(nèi)核空間和用戶空間三個部分,其各自包括的構(gòu)架內(nèi)容如圖3所示。
[0029] 在本實(shí)施例中,將JNI層劃分到第三層中,JNI層為應(yīng)用框架層設(shè)計了一系列接口 函數(shù),而在這些接口函數(shù)的具體實(shí)現(xiàn)中,利用回調(diào)函數(shù)與硬件抽象層進(jìn)行交互。
[0030] 需要說明的是,本申請實(shí)施例提供的直接控制閃光燈開關(guān)的方法也同樣適用于圖 1所示架構(gòu)的安卓系統(tǒng),本實(shí)施例中增加硬件抽象層的作用在于,為不具有標(biāo)準(zhǔn)Linux內(nèi)核 驅(qū)動層接口的硬件設(shè)備提供接入的路徑,將原本可讀性差的接口轉(zhuǎn)化成可讀性好的接口, 提供給上層程序調(diào)用。即硬件抽象層運(yùn)行于Linux內(nèi)核驅(qū)動層之上,用于在Linux內(nèi)核驅(qū) 動層的支持下,為應(yīng)用框架層和JNI層提供對閃光燈控制的接口實(shí)現(xiàn)。
[0031] 圖1和圖2中各層的內(nèi)部框架為本領(lǐng)域技術(shù)人員熟知的,因此,本申請不對其進(jìn)行 一一翻譯和說明。
[0032] 請參考圖4,本實(shí)施例提供了一種安卓系統(tǒng)中直接控制閃光燈開關(guān)的方法,包括下 面步驟:
[0033] 步驟301 :應(yīng)用框架層檢測獲取鏈接庫加載指令。
[0034] 在具體實(shí)施例中,一方面,安卓系統(tǒng)在啟動后會自動加載相應(yīng)的鏈接庫,因此,鏈 接庫加載指令可以是安卓系統(tǒng)在啟動后發(fā)出的一個指令;另一方面,鏈接庫只有在需要調(diào) 用相應(yīng)的功能實(shí)現(xiàn)函數(shù)時才需要進(jìn)行加載,因此,鏈接庫加載指令可以是安卓系統(tǒng)檢測到 要進(jìn)行功能實(shí)現(xiàn)函數(shù)的調(diào)用時發(fā)出的一個指令。
[0035] 步驟302 :應(yīng)用框架層加載鏈接庫,鏈接庫中包括用于控制閃光燈動作的功能實(shí) 現(xiàn)函數(shù)。
[0036] 功能實(shí)現(xiàn)函數(shù)為用于控制閃光燈動作的函數(shù),例如:
[0037] led_on
[0038] led_off
[0039] ......
[0040] 或者當(dāng)led的驅(qū)動信號需要由另外一個設(shè)備給出時,例如CPU芯片或攝像頭芯片 等,則需要先打開該設(shè)備,然后再驅(qū)動LED發(fā)光。這樣的優(yōu)勢是控制燈的模式更加靈活,例 如不同顏色、不同亮度等,則可以寫如下函數(shù):
[0041] led_device_open//打開閃光燈(可選,其功能是打開上述設(shè)備)
[0042] led_device_close//關(guān)閉閃光燈(可選,其功能是打開上述設(shè)備)
[0043] led_on
[0044] led_off
[0045] ......
[0046] 上述用于控制閃光燈動作的函數(shù)在定義完畢后,可以保存在.c文件里,.c文件中 是所有變量和函數(shù)的定義。
[0047] 步驟303 :應(yīng)用程序?qū)荧@取用于控制閃光燈動作的指令。該指令可以是用戶通過 安卓設(shè)備的人機(jī)交互界面(即應(yīng)用程序?qū)樱┹斎氲挠糜诳刂崎W光燈動作的指令;也可以是 應(yīng)用程序?qū)又幸丫幋a好的指令串,例如用"0"和"1"表示的數(shù)據(jù)串,其中,"0"表示閃光燈 關(guān)閉,"1"表示閃光燈打開。
[0048] 基于步驟301,步驟303中用于控制閃光燈動作的指令也可以作為鏈接庫加載指 令,用于控制閃光燈動作的指令即可理解為要進(jìn)行功能實(shí)現(xiàn)函數(shù)的調(diào)用,因此,需要說明的 是,本實(shí)施例中提供的方法的步驟順序不應(yīng)該理解為對本申請的限定,在其他實(shí)施例中,其 步驟順序可以根據(jù)實(shí)際情況進(jìn)行適當(dāng)?shù)淖儞Q。
[0049] 步驟304 :應(yīng)用程序?qū)訖z測鏈接庫是否加載完畢,如果否,則繼續(xù)待鏈接庫加載完 畢,如果是,則繼續(xù)步驟305。
[0050] 步驟305 :應(yīng)用程序?qū)诱{(diào)用鏈接庫中與用于控制閃光燈動作的指令對應(yīng)的功能實(shí) 現(xiàn)函數(shù)。
[0051] 應(yīng)用程序?qū)涌梢栽跈z測到鏈接庫全部加載完畢時調(diào)用功能實(shí)現(xiàn)函數(shù),或者在檢測 的同時即進(jìn)行調(diào)用,或者可以設(shè)定預(yù)定的時間,當(dāng)滿足一定的預(yù)定時間時,便調(diào)用功能實(shí)現(xiàn) 函數(shù)。
[0052] 步驟306 :Linux內(nèi)核驅(qū)動層執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制閃光燈執(zhí)行相應(yīng) 的動作。
[0053] 本實(shí)施例中,Linux內(nèi)核驅(qū)動層中設(shè)置有閃光燈驅(qū)動,閃光燈驅(qū)動執(zhí)行被調(diào)用的功 能實(shí)現(xiàn)函數(shù),以控制閃光燈執(zhí)行相應(yīng)的動作。
[0054] 目前,閃光燈通常只用于作為camera的輔助硬件,只有在使用camera時,才有可 能會使用到閃光燈,因此,安卓系統(tǒng)中在使用閃光燈時,必須先調(diào)用camera driver,通過設(shè) 置camera參數(shù)來實(shí)現(xiàn)閃光燈的控制。即,對閃光燈的控制為間接控制的方式。
[0055] 在通過camera driver控制閃光燈時會出現(xiàn)時間延遲的問題,但對于目前閃光燈 的應(yīng)用范圍,該時間延遲不會影響正常的使用。然而,隨著光通信(例如可見光通信)的發(fā) 展,當(dāng)需要通過光進(jìn)行信息傳輸時,由于光通信對傳輸速度及信息傳輸準(zhǔn)確性的要求,上述 時間延遲的問題便逐漸突顯出來,并成為光通信發(fā)展的障礙之一。
[0056] 本實(shí)施例中,在安卓系統(tǒng)的Linux內(nèi)核驅(qū)動層中獨(dú)立設(shè)置有閃光燈驅(qū)動,在控制 閃光燈時,可以直接調(diào)用閃光燈驅(qū)動,其對閃光燈的控制方式為直接控制??梢员苊庠谕ㄟ^ camera driver控制閃光燈時出現(xiàn)的時間延遲。
[0057] JNI層定義有接口函數(shù)。應(yīng)用程序?qū)痈鶕?jù)JNI層的接口函數(shù)調(diào)用鏈接庫中與控制 閃光燈動作的指令對應(yīng)的功能實(shí)現(xiàn)函數(shù),以供Linux內(nèi)核驅(qū)動層的閃光燈驅(qū)動執(zhí)行相應(yīng)的 功能實(shí)現(xiàn)函數(shù)。
[0058] 當(dāng)所述操作系統(tǒng)為I0S系統(tǒng),則syscall為本地化接口處,可實(shí)現(xiàn)安卓系統(tǒng)中JNI 層定義有接口函數(shù)的作用,此處不再贅述。
[0059] JNI層的接口函數(shù)定義了 C/C++函數(shù)與JAVA函數(shù)的對應(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ù),它會在JNI層中映射成名為java_全包名 _類名_led_on的本地函數(shù),再在函數(shù)里調(diào)用底層功能函數(shù)。
[0060] 安卓運(yùn)行環(huán)境中的Dalvik虛擬機(jī)在調(diào)用一個成員函數(shù)時,如果發(fā)現(xiàn)該成員函數(shù) 是一個JNI方法,那么就會直接跳到它的地址去執(zhí)行。即,JNI方法是直接在本地操作系統(tǒng) 上執(zhí)行的,而不是由Dalvik虛擬機(jī)解釋器執(zhí)行。因此,JNI方法是安卓應(yīng)用程序與本地操 作系統(tǒng)直接進(jìn)行通信的一個手段,通過JNI方法使得通信更加高效。
[0061] 優(yōu)選的,JNI層保存有功能實(shí)現(xiàn)函數(shù)實(shí)例化后的地址,以便于JNI層直接調(diào)用功能 實(shí)現(xiàn)函數(shù)。實(shí)例化是指在面向?qū)ο蟮木幊讨?,用類(Class)創(chuàng)建對象的過程。例如:在閃光 燈的控制過程中,將閃光燈動作作為類,將開啟閃光燈、關(guān)閉閃光燈等具體的功能實(shí)現(xiàn)函數(shù) 創(chuàng)建為對象。該對象的創(chuàng)建過程,即為實(shí)例化。該對象創(chuàng)建完后會有一對應(yīng)的地址,JNI層 保存該地址后,在后續(xù)調(diào)用該功能實(shí)現(xiàn)函數(shù)時,即可以根據(jù)該地址快速查詢到相應(yīng)的對象, 而不需要先檢索該功能實(shí)現(xiàn)函數(shù)對應(yīng)的類。
[0062] 本實(shí)施例中,在硬件抽象層定義有下面三個結(jié)構(gòu)體:
[0063] struct hw_module_t ;//模塊類型:每一個硬件模塊的必須申明一個hal_ module_info_sym的數(shù)據(jù)結(jié)構(gòu)體,該結(jié)構(gòu)體的第一個成員必須是以hw_module_t為數(shù)據(jù)的 結(jié)構(gòu)體。
[0064] struct hwm_odule_methods_t ;//模塊方法:該結(jié)構(gòu)體僅提供一個打開特殊設(shè)備 的open函數(shù)的接口,其傳入?yún)?shù)為"hw_module_t, id"和"w_device_t",該函數(shù)用于初始 化hw_device_t的各個成員。
[0065] strcut hw_device_t.//設(shè)備類型:對于每一個設(shè)備數(shù)據(jù)結(jié)構(gòu)體都必須以該結(jié)構(gòu) 體開頭,該結(jié)構(gòu)體是所有設(shè)備的引導(dǎo)線,在該結(jié)構(gòu)體之后才是每一個設(shè)備自己的數(shù)據(jù)。
[0066] 本實(shí)施例中,在定義硬件模塊類型結(jié)構(gòu)體時,硬件抽象層規(guī)定不能直接使用hw_ module_t結(jié)構(gòu)體,需要做一個繼承,即在該結(jié)構(gòu)體外再套一層結(jié)構(gòu)體,但hw_module_t結(jié)構(gòu) 體必須是該結(jié)構(gòu)體的第一個成員變量數(shù)據(jù)類型,以方便兩者之間的強(qiáng)制轉(zhuǎn)換。其部分程序 代碼可參考如下:
[0067]
[0068]
【權(quán)利要求】
1. 一種操作系統(tǒng)中直接控制硬件設(shè)備的方法,其特征在于,包括: 獲取鏈接庫加載指令,加載鏈接庫,所述鏈接庫中包括用于控制硬件設(shè)備動作的功能 實(shí)現(xiàn)函數(shù); 獲取用于控制硬件設(shè)備動作的指令; 調(diào)用所述鏈接庫中與所述控制硬件設(shè)備動作的指令對應(yīng)的功能實(shí)現(xiàn)函數(shù); 執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動作。
2.如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時,所述安卓系 統(tǒng)的內(nèi)核驅(qū)動層中設(shè)置有所述硬件設(shè)備的驅(qū)動,所述硬件設(shè)備的驅(qū)動執(zhí)行被調(diào)用的功能實(shí) 現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動作;或者, 當(dāng)所述操作系統(tǒng)為IOS系統(tǒng),所述IOS系統(tǒng)的核心系統(tǒng)層中設(shè)置有所述硬件設(shè)備的驅(qū) 動,所述硬件設(shè)備的驅(qū)動執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動作。
3.如權(quán)利要求2所述的方法,其特征在于,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時,所述安卓系 統(tǒng)的JNI層定義有相應(yīng)的JNI接口函數(shù); 獲取鏈接庫加載指令,加載鏈接庫后,根據(jù)所述接口函數(shù)調(diào)用所述鏈接庫中與控制硬 件設(shè)備動作的指令對應(yīng)的功能實(shí)現(xiàn)函數(shù),以供內(nèi)核驅(qū)動層的硬件設(shè)備驅(qū)動執(zhí)行相應(yīng)的功能 實(shí)現(xiàn)函數(shù);或者, 當(dāng)所述操作系統(tǒng)為IOS系統(tǒng)時,則利用LibSystem庫訪問核心系統(tǒng)層提供的接口函 數(shù); 獲取鏈接庫加載指令,加載鏈接庫后,根據(jù)所述接口函數(shù)調(diào)用所述鏈接庫中與控制硬 件設(shè)備動作的指令對應(yīng)的功能實(shí)現(xiàn)函數(shù),以供核心系統(tǒng)層的硬件設(shè)備驅(qū)動執(zhí)行相應(yīng)的功能 實(shí)現(xiàn)函數(shù)。
4.如權(quán)利要求3所述的方法,其特征在于,JNI層保存有功能實(shí)現(xiàn)函數(shù)實(shí)例化后的地 址。
5.如權(quán)利要求3所述的方法,其特征在于,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時,所述安卓系 統(tǒng)還包括硬件抽象層,所述安卓系統(tǒng)的硬件抽象層運(yùn)行于內(nèi)核驅(qū)動層之上,用于在內(nèi)核驅(qū) 動層的支持下,為安卓系統(tǒng)的應(yīng)用框架層和JNI層提供對硬件設(shè)備控制的接口實(shí)現(xiàn);或者 當(dāng)所述操作系統(tǒng)為IOS系統(tǒng),所述IOS系統(tǒng)還包括核心服務(wù)層。
6.如權(quán)利要求1-5任一項(xiàng)所述的方法,其特征在于,所述硬件設(shè)備為閃光燈、攝像頭、 傳感器或麥克風(fēng)。
7. 一種操作系統(tǒng)中直接控制硬件設(shè)備的模塊,其特征在于,包括: 加載單元,用于獲取鏈接庫加載指令,并加載鏈接庫,所述鏈接庫中包括用于控制硬件 設(shè)備動作的功能實(shí)現(xiàn)函數(shù); 檢測單元,用于獲取控制硬件設(shè)備動作的指令; 調(diào)用單元,用于調(diào)用所述鏈接庫中與所述控制硬件設(shè)備動作的指令對應(yīng)的功能實(shí)現(xiàn)函 數(shù); 執(zhí)行單元,用于執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動作。
8.如權(quán)利要求7所述的模塊,其特征在于,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時,所述安卓系 統(tǒng)的內(nèi)核驅(qū)動層中設(shè)置有所述硬件設(shè)備的驅(qū)動,所述執(zhí)行單元用于控制硬件設(shè)備的驅(qū)動執(zhí) 行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè)備執(zhí)行相應(yīng)的動作;或者 當(dāng)所述操作系統(tǒng)為IOS系統(tǒng)時,所述IOS系統(tǒng)的核心系統(tǒng)層中設(shè)置有所述硬件設(shè)備的 驅(qū)動,所述執(zhí)行單元用于控制硬件設(shè)備的驅(qū)動執(zhí)行被調(diào)用的功能實(shí)現(xiàn)函數(shù),以控制硬件設(shè) 備執(zhí)行相應(yīng)的動作。
9.如權(quán)利要求8所述的模塊,其特征在于,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時,所述安卓系 統(tǒng)的架構(gòu)還包括JNI層,所述JNI層定義有相應(yīng)的JNI接口函數(shù); 調(diào)用單元用于根據(jù)所述接口函數(shù)調(diào)用所述鏈接庫中與控制硬件設(shè)備動作的指令對應(yīng) 的功能實(shí)現(xiàn)函數(shù),以供內(nèi)核驅(qū)動層的硬件設(shè)備驅(qū)動執(zhí)行相應(yīng)的功能實(shí)現(xiàn)函數(shù);或者 所述操作系統(tǒng)為IOS系統(tǒng)時,則利用LibSystem庫訪問核心系統(tǒng)層提供的接口函數(shù); 調(diào)用單元用于根據(jù)所述接口函數(shù)調(diào)用所述鏈接庫中與控制硬件設(shè)備動作的指令對應(yīng) 的功能實(shí)現(xiàn)函數(shù),以供內(nèi)核驅(qū)動層的硬件設(shè)備驅(qū)動執(zhí)行相應(yīng)的功能實(shí)現(xiàn)函數(shù)。
10.如權(quán)利要求9所述的模塊,其特征在于,所述JNI層保存有功能實(shí)現(xiàn)函數(shù)實(shí)例化后 的地址。
11.如權(quán)利要求9所述的模塊,其特征在于,當(dāng)所述操作系統(tǒng)為安卓系統(tǒng)時,所述安卓 系統(tǒng)的架構(gòu)還包括硬件抽象層,所述硬件抽象層運(yùn)行于內(nèi)核驅(qū)動層之上,用于在內(nèi)核驅(qū)動 層的支持下,為安卓系統(tǒng)的應(yīng)用框架層和JNI層提供對硬件設(shè)備控制的接口實(shí)現(xiàn);或者 當(dāng)所述操作系統(tǒng)為IOS系統(tǒng)時,所述IOS系統(tǒng)還包括核心服務(wù)層。
12.如權(quán)利要求7-11任一項(xiàng)所述的模塊,其特征在于,所述硬件設(shè)備為閃光燈、攝像 頭、傳感器或麥克風(fēng)。
【文檔編號】G06F9/44GK104216709SQ201410415227
【公開日】2014年12月17日 申請日期:2014年8月20日 優(yōu)先權(quán)日:2014年8月20日
【發(fā)明者】不公告發(fā)明人 申請人:深圳光啟創(chuàng)新技術(shù)有限公司