亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向嵌入式領(lǐng)域的Android教學(xué)方法探討

        2016-05-14 20:29:37鄧招奇郝亞茹鄧春健
        計(jì)算機(jī)教育 2016年6期
        關(guān)鍵詞:Android系統(tǒng)

        鄧招奇 郝亞茹 鄧春健

        摘要:根據(jù)Android系統(tǒng)本身的開源特性以及脫胎于Linux系統(tǒng)的繼承特性,提出一種橫向借鑒Linux系統(tǒng)知識進(jìn)行擴(kuò)展、縱向挖掘Android系統(tǒng)知識進(jìn)行延伸的教學(xué)方法,說明教學(xué)思路,結(jié)合實(shí)例闡述教學(xué)過程。

        關(guān)鍵詞:Android教學(xué);Linux系統(tǒng);Android系統(tǒng);橫向借鑒;縱向挖掘

        引言

        物聯(lián)網(wǎng)的發(fā)展如火如荼,大有趕超互聯(lián)網(wǎng)的勢頭,而物聯(lián)網(wǎng)本身基于物物相聯(lián)的理念,催生了眾多的智能嵌入式設(shè)備。但是,智能嵌入式設(shè)備并不是空中樓閣,而是基于低功耗精簡指令的硬件設(shè)備輔以高度可定制化開源系統(tǒng)的一種軟硬結(jié)合體。Android作為一種開源且專門面向移動嵌入式設(shè)備的系統(tǒng),無疑成為眾多智能嵌入式設(shè)備的首選,成為物聯(lián)網(wǎng)不可或缺的一個環(huán)節(jié)。因此,Android相關(guān)教學(xué)日益凸顯其重要性。

        不過,目前的Android教學(xué)多注重系統(tǒng)層面之上APP開發(fā)的實(shí)踐,而沒有深入Android系統(tǒng)內(nèi)部,學(xué)生往往知其然不知其所以然,對底層的知識沒有完整系統(tǒng)的概念。這種教學(xué)顯然無法適應(yīng)當(dāng)前物聯(lián)網(wǎng)迅猛發(fā)展、智能嵌入式設(shè)備呈井噴之勢的現(xiàn)狀。因?yàn)椴还苁俏锫?lián)網(wǎng)還是智能嵌入式設(shè)備,其關(guān)注的不僅僅是上層的APP應(yīng)用,更需要深入Android系統(tǒng)的底層,在完全了解其機(jī)制的基礎(chǔ)上,才能定制開發(fā)出適應(yīng)嵌入式物聯(lián)網(wǎng)需求的智能設(shè)備,更好地實(shí)現(xiàn)物物相聯(lián)的理念。另外,傳統(tǒng)的嵌入式設(shè)備多以Linux作為首選系統(tǒng),而Android系統(tǒng)脫胎于Linux系統(tǒng),二者之間有著千絲萬縷的聯(lián)系。面對老牌的嵌入式可定制系統(tǒng)Linux,在進(jìn)行Android系統(tǒng)的教學(xué)和實(shí)踐時,肯定存在許多可以舉一反三的例子。因此,Android相關(guān)教學(xué)除了可以在應(yīng)用開發(fā)的層面深入系統(tǒng)底層,還可以從Linux的教學(xué)中汲取更多的知識。

        1教學(xué)思路

        圖1是Android系統(tǒng)結(jié)構(gòu)圖,可以看到Android的底層是Linux內(nèi)核,中間層是和Linux兼容的標(biāo)準(zhǔn)C庫,同時加入核心庫和虛擬機(jī)構(gòu)成Android特有的runtime環(huán)境。目前的Android教學(xué)一般只關(guān)注最上層的應(yīng)用程序及其需要調(diào)用的應(yīng)用程序框架接口,并沒有深入Android系統(tǒng)的底層。不過Android系統(tǒng)本身是開源的,這為我們深入其底層提供了前提條件。另外,從圖1可以看到,Android系統(tǒng)是基于Linux內(nèi)核的衍生版本,許多Linux系統(tǒng)的理念可以直接借鑒,這就為深入理解Android系統(tǒng)提供了一面鏡子。基于上述想法,我們設(shè)計(jì)開發(fā)了以全智A20為核心的教學(xué)實(shí)驗(yàn)板,同時兼容Linux和Android兩套系統(tǒng),且可以很方便地進(jìn)行系統(tǒng)切換。在實(shí)際教學(xué)過程中,應(yīng)以此實(shí)驗(yàn)板為基礎(chǔ),進(jìn)行從應(yīng)用到底層的全方位的知識傳授。

        由于Android系統(tǒng)以及其上的應(yīng)用都是實(shí)踐性很強(qiáng)的知識,因此我們采用項(xiàng)目驅(qū)動的教學(xué)模式,將諸多知識點(diǎn)分散于各種項(xiàng)目需求中。針對項(xiàng)目需求,通過對Android系統(tǒng)的深入理解以及對Android和Linux關(guān)系的完整把握,我們首先分析該需求所要實(shí)現(xiàn)的功能如何在Linux系統(tǒng)上通過調(diào)用庫函數(shù)以及使用腳本來實(shí)現(xiàn):然后考慮如何在Android的應(yīng)用層調(diào)用應(yīng)用程序框架的接口完成上述功能,最后綜合上述兩個方案,研究如何深入Android系統(tǒng)的內(nèi)部,在系統(tǒng)層面借鑒Linux的思想,通過修改底層源代碼來實(shí)現(xiàn)項(xiàng)目需求的功能。對于每個項(xiàng)目需求,都可以從三方面來分析和實(shí)現(xiàn),最終可以實(shí)現(xiàn)借鑒Linux的系統(tǒng)知識、融會貫通Android的上層應(yīng)用開發(fā)、深入理解Android系統(tǒng)底層原理的教學(xué)目的。

        2教學(xué)實(shí)例

        前述的教學(xué)實(shí)驗(yàn)板,可以用外接電池供電,且Linux和Android系統(tǒng)的底層均實(shí)現(xiàn)了電源管理模塊的驅(qū)動,另外板載一組5個LED燈;通過GPIO與核心A20連接。下面就以LED燈顯示電池電量為例,分別從3個方面進(jìn)行教學(xué)方法的分析,其中在Linux系統(tǒng)下主要用udev規(guī)則和shell腳本實(shí)現(xiàn)。在Android系統(tǒng)下實(shí)現(xiàn)電池電量的管理,主要有兩種方案:一是直接在應(yīng)用層開發(fā)App,另外一種是在Android系統(tǒng)的源碼層尋求突破。這兩種方案的本質(zhì)是一樣的,都是被動地獲得電池電量變化的信號,來改變LED的顯示。

        1)Linux系統(tǒng)的電池電量管理實(shí)現(xiàn)。

        Linux系統(tǒng)分為內(nèi)核態(tài)和用戶態(tài),在用戶態(tài)運(yùn)行的程序調(diào)用底層的c庫。如圖2所示,Udev是Linux系統(tǒng)用戶態(tài)的一個守護(hù)進(jìn)程,用來動態(tài)管理外部設(shè)備。系統(tǒng)啟動后,它就一直在后臺運(yùn)行,與內(nèi)核保持socket通訊,監(jiān)聽內(nèi)核上報(bào)的uEvent事件。一個很直觀的例子是,如果有U盤插入USB接口,內(nèi)核就會上報(bào)acRon=add的事件。而此處,如果電池電量發(fā)生了變化,負(fù)責(zé)監(jiān)控電池的芯片就會上報(bào)powersupply事件。相應(yīng)的處理方法是在udev的規(guī)則目錄/etc/udev/rule.d/下創(chuàng)建一個規(guī)則文件10-ba.t-monitor.roles,在其中監(jiān)聽power_supply事件,并且指明相應(yīng)的處理腳本。當(dāng)電池電量變化時,udev就會根據(jù)規(guī)則調(diào)用處理腳本,讀取當(dāng)前的電池電量,然后根據(jù)比例點(diǎn)亮或熄滅LED燈,如此就實(shí)現(xiàn)了Linux系統(tǒng)下的電池電量管理。

        2)Android系統(tǒng)應(yīng)用層的電池電量管理實(shí)現(xiàn)。

        Android是在Linux系統(tǒng)上的擴(kuò)展,它的層次結(jié)構(gòu)簡圖如圖1所示,上層是應(yīng)用程序框架(AF),最上層的APP應(yīng)用主要通過Java編寫,使用框架提供的API控制接口和資源。為了正確地設(shè)置LED燈暗滅來反應(yīng)電池的電量變化,需要實(shí)時獲取電池的電量值。在Android的AF層提供了各種系統(tǒng)廣播信號,當(dāng)內(nèi)核態(tài)的某些狀態(tài)發(fā)生變化時,就會發(fā)布相應(yīng)的廣播事件ACTION BATTERY CHANGED,注冊了這個廣播事件的接收器就會收到該廣播,如圖3所示。在廣播接收器內(nèi)部可以查詢實(shí)時的電量,并且設(shè)置LED燈的亮滅,最終實(shí)現(xiàn)Android應(yīng)用層的電池電量管理。

        3)Android系統(tǒng)底層的電池電量管理實(shí)現(xiàn)。

        按照前面的方案,Android系統(tǒng)可以在電池電量變化時發(fā)出廣播,其后臺有一個服務(wù)不斷監(jiān)視電池的變化,一旦變化,就會在AF層發(fā)出廣播,我們可以直接利用這個服務(wù),找到電池變化的關(guān)鍵點(diǎn),在廣播前或后讀取電量,并設(shè)置LED的亮滅。通過深入理解Android源碼,可以發(fā)現(xiàn)隨著Android系統(tǒng)的啟動,系統(tǒng)會啟動一系列的服務(wù),其中就包括電池服務(wù)BatteryService,如圖3所示,電池服務(wù)內(nèi)部實(shí)例化一個觀察者,按照udev的規(guī)則注冊uevent子系統(tǒng)power_supply然后HAL層的uevent維持一個死循環(huán),與內(nèi)核層通過socket通訊,一旦內(nèi)核驅(qū)動檢測到電池電量的變化,就會上報(bào)HAL層,uevent就會觸發(fā)觀察者的onUevent函數(shù),最終調(diào)用到電池服務(wù)的onUevent,發(fā)布電量變化的廣播。按照前面的方案,如果注冊了電池電量變化的廣播,此時就可以收到廣播消息,然后就可以做出相應(yīng)的處理。而這就是我們要尋找的關(guān)鍵點(diǎn),只要在這里調(diào)用查詢電量并且設(shè)置LED燈的腳本即可,此處等同于Linux系統(tǒng)的處理方式。

        對比Linux和Android系統(tǒng)的電池電量管理,二者本質(zhì)上是相同的,最終都是通過監(jiān)聽power_supply,被動地等待系統(tǒng)觸發(fā),實(shí)現(xiàn)時只需要注冊觸發(fā)事件,設(shè)置好處理函數(shù)即可。對比Android的兩個方案,應(yīng)用層方案比源碼層方案多出一個service和一個廣播接收,這樣就消耗了更多的資源,相對來說,源碼層的方案直接使用AF框架層的service,不需要注冊廣播,僅僅執(zhí)行電量設(shè)置的邏輯即可。從中可以看到Android開源的益處,我們可以深入系統(tǒng)源碼的內(nèi)部,進(jìn)行全方位的定制,實(shí)現(xiàn)所需的功能。深入了解Android底層的源碼,在使用AF層的API之前,不斷深入地挖掘其背后的東西,可以更深刻地理解API本身的功能,從而更好更正確地使用它。

        3教學(xué)效果

        我們以計(jì)算機(jī)學(xué)院嵌入式專業(yè)的學(xué)生為對象,開展Android教學(xué)方法的實(shí)踐和教學(xué)評估。此教學(xué)方法開展的前提是學(xué)生已經(jīng)完成了Linux系統(tǒng)的相關(guān)課程,并且對Linux系統(tǒng)的上層開發(fā)和底層原理有一定程度的理解。我們按照前述項(xiàng)目驅(qū)動的教學(xué)模式,將整個Android課程劃分成16個具體項(xiàng)目,分別開展16周32學(xué)時的理論課程和16周32學(xué)時的實(shí)驗(yàn)課程。采用這種知識講授和上機(jī)操作相結(jié)合的方法,促使學(xué)生借鑒已經(jīng)學(xué)過的Linux知識,深入理解Android系統(tǒng)的底層原理,定制實(shí)現(xiàn)Android上層應(yīng)用。對比往年的Android教學(xué)效果,學(xué)生不僅能夠掌握Android上層應(yīng)用的開發(fā)方法,還可以深入Android系統(tǒng)內(nèi)部,加深對Linux系統(tǒng)知識的理解,為嵌入式系統(tǒng)定制開發(fā)打下基礎(chǔ)。這些教學(xué)效果不僅僅體現(xiàn)在上機(jī)實(shí)驗(yàn)結(jié)果和期末教學(xué)評估,更重要的是使學(xué)生在面對實(shí)際的嵌入式項(xiàng)目開發(fā)時能夠從底層機(jī)制思考問題,從根本上提高學(xué)生解決具體問題的能力。

        4結(jié)語

        物聯(lián)網(wǎng)的蓬勃發(fā)展對嵌入式領(lǐng)域Android教學(xué)提出了新的要求,僅僅掌握Android應(yīng)用層的開發(fā)技巧已經(jīng)力不從心,必須深入Android系統(tǒng)的底層核心,了解其內(nèi)部的實(shí)現(xiàn)原理。Android系統(tǒng)衍生于Linux系統(tǒng),是一個實(shí)踐性很強(qiáng)的系統(tǒng),處于不斷演化更新之中,上層的應(yīng)用程序框架還沒有達(dá)到穩(wěn)定期,但其底層的Linux內(nèi)核卻堅(jiān)如磐石。因此,我們采用項(xiàng)目驅(qū)動的教學(xué)模式,將Android的知識點(diǎn)分散到各個實(shí)際項(xiàng)目之中,開發(fā)設(shè)計(jì)用于教學(xué)的嵌入式實(shí)驗(yàn)板,分別從Linux系統(tǒng)層面、Android系統(tǒng)應(yīng)用程序?qū)用婧虯ndroid系統(tǒng)底層3個方面尋求每個具體項(xiàng)目的解決方案。在不斷學(xué)習(xí)和實(shí)踐的過程中,學(xué)生不僅能夠開發(fā)出Android的上層應(yīng)用,更可以借鑒Linux系統(tǒng)的知識,深入Android系統(tǒng)底層,理解和修改系統(tǒng)源碼,實(shí)現(xiàn)對Android系統(tǒng)的定制,從而滿足嵌入式系統(tǒng)定制的要求。這樣,我們就實(shí)現(xiàn)了一種橫向借鑒Linux系統(tǒng)知識進(jìn)行擴(kuò)展、縱向挖掘Android系統(tǒng)知識進(jìn)行延伸的教學(xué)方法。下一步,我們將開展深入的研究,逐步完善該教學(xué)方法,以期達(dá)到更好的教學(xué)效果。

        猜你喜歡
        Android系統(tǒng)
        掌游西塘APP設(shè)計(jì)與實(shí)現(xiàn)
        基于污點(diǎn)傳播動態(tài)分析的Android安全系統(tǒng)研究
        Android系統(tǒng)上的移動互聯(lián)網(wǎng)集成平臺開發(fā)機(jī)制
        Android系統(tǒng)核心管理工具設(shè)計(jì)與實(shí)現(xiàn)
        Android下的機(jī)械式電表數(shù)字識別技術(shù)研究
        基于Android系統(tǒng)的掌上班級課表與學(xué)生考勤管理系統(tǒng)
        基于GPS和iBeacon的智能校園信息發(fā)布平臺設(shè)計(jì)與實(shí)現(xiàn)
        基于增強(qiáng)現(xiàn)實(shí)技術(shù)的導(dǎo)航系統(tǒng)研究
        基于Android的溫室智能視頻監(jiān)控系統(tǒng)研究
        面向移動終端的語音簽到系統(tǒng)
        黑丝美女喷水在线观看| 色婷婷久久免费网站| 久热爱精品视频在线观看久爱 | 国产精品9999久久久久| 国内精品久久久久影院薰衣草 | 色偷偷久久一区二区三区| 粉嫩少妇内射浓精videos| 亚洲国产成人手机在线电影| 高跟丝袜一区二区三区| 97超碰国产一区二区三区| 婷婷久久av综合一区二区三区| av一区二区三区在线| 亚洲乱码一区av春药高潮| 波多野结衣av手机在线观看| 欧美日韩综合网在线观看| 日韩久久av电影| 中文字幕人妻乱码在线| 极品一区二区在线视频| 欧美老妇交乱视频在线观看| 99久久久无码国产精品6| 日本55丰满熟妇厨房伦| 在线丝袜欧美日韩制服| 国内精品久久人妻互换| 日本一区二区国产精品| 一本色道久久88加勒比—综合| 无码一区二区三区在线| 欧美午夜刺激影院| 在线无码精品秘 在线观看| 国产日产亚洲系列首页| 中文区中文字幕免费看| 国产午夜福利100集发布| 九九精品无码专区免费| 国产免费人成视频在线观看播放| 日本一区二区三区丰满熟女| 天天干天天日夜夜操| 亚洲日韩欧洲无码av夜夜摸| 99久久综合狠狠综合久久一区| 成人免费播放视频影院| 狠狠躁夜夜躁人人躁婷婷视频| 久久久久久久无码高潮| 欧美日韩亚洲综合久久久|