




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 基于Android的智能家居項(xiàng)目背景什么是Android Android一詞的本義指“機(jī)器人”,同時(shí)也是Google于2007年11月5日宣布的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)的名稱,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)軟件。平臺(tái)優(yōu)勢(shì)掙脫運(yùn)營(yíng)商束縛Google應(yīng)用豐富的硬件無限制的開發(fā)開放性發(fā)展趨勢(shì)目前,Android智能手機(jī)正處于快速增長(zhǎng)期,2011年7月末,Android智能手機(jī)在國(guó)內(nèi)的占有率達(dá)到34.8%,在半年之內(nèi)超過了iPhone手機(jī),僅次于Symbian智能手機(jī) .2011.7 各類操作系統(tǒng)智能手機(jī)中國(guó)占有率價(jià)格優(yōu)勢(shì)
2、系統(tǒng)概述兩大模塊智能家居M0+A8智能居平臺(tái)測(cè)試A8智能家居1處理顯示M0數(shù)據(jù)并控制M0前端數(shù)據(jù)中心-A82Zigbee無線傳輸傳輸模塊3采集房間信息發(fā)至前端,并響應(yīng)前端的命令終端采集中心-M04Zigbee無線傳輸傳輸模塊設(shè)計(jì)思想房間溫度房間濕度房間光照房間電壓房間防盜來賓登記溫度控制風(fēng)扇模擬光照控制LED模擬報(bào)警控制蜂鳴器模擬A8M0個(gè)人職責(zé)個(gè)人職責(zé)系統(tǒng)架構(gòu)分析A8平臺(tái)Android底層設(shè)計(jì)詳細(xì)文檔撰寫系統(tǒng)整合Android架構(gòu)層次接口表流程圖(1) (1)初始化加載JNI的庫(kù)流程圖(2) (2)JNI層實(shí)現(xiàn)對(duì)App層的方法流程圖(3) (3)HAL層實(shí)現(xiàn)對(duì)JNI層的函數(shù)接口流程圖(4)
3、(4)HAL層調(diào)用驅(qū)動(dòng)層的函數(shù)接口App-framework層在Android應(yīng)用層中的程序或組件都是用Java語言開發(fā)的,這些Java代碼編譯后變成Dex格式的字節(jié)碼,由Dalvik虛擬機(jī)執(zhí)行,在執(zhí)行過程中需要調(diào)用本地庫(kù)時(shí),由虛擬機(jī)載入這些本地庫(kù),然后讓Java函數(shù)調(diào)用庫(kù)中的函數(shù),虛擬機(jī)相當(dāng)于一座橋梁,讓Java與本地庫(kù)能夠透過標(biāo)準(zhǔn)的JNI界面互相溝通。應(yīng)用程序在虛擬機(jī)里執(zhí)行,通過函數(shù)System.loadLibrary( )通知虛擬機(jī)載入指定的庫(kù),例如在Java代碼中包含代碼如:System.loadLibrary(“l(fā)ibuart_runtime.so”);虛擬機(jī)就會(huì)在Android文件
4、系統(tǒng)的“/system/lib/”目錄中查找l libuart_runtime.so庫(kù)文件,虛擬機(jī)載入libuart_runtime.so后,Java代碼就可以與庫(kù)文件結(jié)合起來一起執(zhí)行。framework入口JNI層/* * 當(dāng)?shù)谝淮渭虞d此庫(kù)時(shí),調(diào)用此函數(shù)注冊(cè)本地方法 */jint JNI_OnLoad(JavaVM* vm, void* reserved) JNIEnv* env = NULL;jint result = -1;LOGI(JNI_OnLoad);if (vm-GetEnv(void*) &env, JNI_VERSION_1_4) != JNI_OK) LOGE(ER
5、ROR: GetEnv failedn);goto fail; /獲取當(dāng)前的VM的環(huán)境,保存在env變量中assert(env != NULL);if (registerMethods(env) != 0) LOGE(ERROR: PlatformLibrary native registration failedn);goto fail; /自己寫的函數(shù),向當(dāng)前JAVA環(huán)境中注冊(cè)接口result = JNI_VERSION_1_4;fail:return result;/* JNI_OnLoad()函數(shù)完成:(1) 把虛擬機(jī)環(huán)境信息保存到本地庫(kù)的一個(gè)結(jié)構(gòu)體“JNIEnv”的實(shí)例中;(2) 建
6、立一個(gè)應(yīng)用層中的UART控制服務(wù)與本地庫(kù)的JNI函數(shù)表;(3) 返回虛擬機(jī)本地庫(kù)使用的JNI版本。*/JNI入口HAL-StubHAL stub 是一種代理人(proxy)的概念,stub 雖然仍是以 *.so的形式存在,但HAL已經(jīng)將 *.so 檔隱藏起來了。Stub 向 HAL提供操作函數(shù)(operations),而 runtime則是向 HAL 取得特定模塊(stub)的 operations,再 callback 這些操作函數(shù)。這種以 indirect function call 的架構(gòu),讓HAL stub 變成是一種包含關(guān)系,即 HAL 里包含了許許多多的 stub(代理人)。Run
7、time 只要說明類型,即 module ID,就可以取得操作函數(shù)。對(duì)于目前的HAL,可以認(rèn)為Android定義了HAL層結(jié)構(gòu)框架,通過幾個(gè)接口訪問硬件從而統(tǒng)一了調(diào)用方式。HAL層const struct uart_module_t HAL_MODULE_INFO_SYM = common: tag: HARDWARE_MODULE_TAG version_major: 1, version_minor: 0, id: UART_HARDWARE_MODULE_ID, /模塊ID,上層的Service通過這個(gè)ID應(yīng)用當(dāng)前Stub name: uart HAL module, author: f
8、arsight, methods: &uart_module_methods, /入口函數(shù)管理結(jié)構(gòu)體HAL_MODULE_INFO_SYM變量是andriod HAL模塊通用的入口地址,且必須為這個(gè)名字,這樣編譯器才會(huì)將這個(gè)結(jié)構(gòu)體的導(dǎo)出符號(hào)變?yōu)椤癏MI”,這樣這個(gè)結(jié)構(gòu)體才能在使用庫(kù)時(shí)被dlsym函數(shù)找到,進(jìn)而返回給hw_get_module函數(shù)HAL入口權(quán)限的問題由于Android應(yīng)用程序無權(quán)限操作底層設(shè)備(如打開、讀寫等),而我們需要通過讀寫USB轉(zhuǎn)成的串口的設(shè)備節(jié)點(diǎn)ttyUSB0,來讀寫Zigbee模塊,所以我們需要修改設(shè)備權(quán)限為777最高權(quán)限。一種簡(jiǎn)單的方法是在system/core/rootdir下的uevent.rc腳本里加入/dev/ttyUSB0 0777 root root即可,但是我們2.1版本里無此腳本。最初想法是在init.rc腳本里添加chmod 0777 /dev/ttyUSB0來修改,但是這樣有一個(gè)致命的缺陷。即Zigbee模塊必須在開機(jī)前就已連接在板上,若是開機(jī)時(shí)未識(shí)別到,還需把掉再插一次,但腳本已經(jīng)執(zhí)行過了,所以放棄此方法。我們采取的方法: 1.通過給APK簽名,賦予應(yīng)用程序system的權(quán)限。 2.在init.rc中注冊(cè)service chmod4uart,去執(zhí)行chmod4uart.sh 3.編寫chmod4uart.s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶車位出租協(xié)議書
- 車主雇傭司機(jī)協(xié)議書
- 鋰電窯爐承包協(xié)議書
- 道路車輛施救協(xié)議書
- 4人入伙合同協(xié)議書
- 項(xiàng)目車位預(yù)定協(xié)議書
- cnc編程學(xué)徒協(xié)議書
- 雕塑方案保密協(xié)議書
- 酒館出租合作協(xié)議書
- 中餐館合伙合同協(xié)議書
- 2025內(nèi)蒙古錫林郭勒蘇能白音華發(fā)電有限公司招聘49人筆試參考題庫(kù)附帶答案詳解
- 紅色教育綜合實(shí)踐課件
- 人教版五下-6.1 同分母分?jǐn)?shù)加減法(導(dǎo)學(xué)案含答案)
- 廈門市2025 屆高三畢業(yè)班第四次質(zhì)量檢測(cè)-化學(xué)+答案
- 腦梗死頭暈護(hù)理查房課件
- 2025物流公司貨車駕駛員勞動(dòng)合同
- 教學(xué)儀器設(shè)備購(gòu)置申請(qǐng)報(bào)告 2 - 副本
- 2025-2030中國(guó)風(fēng)光互補(bǔ)路燈行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 2025年無人機(jī)駕駛員職業(yè)技能考核無人機(jī)操作員客戶服務(wù)能力試題
- 航空客運(yùn)包機(jī)合同
- 馬拉松志愿者培訓(xùn)
評(píng)論
0/150
提交評(píng)論