999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向嵌入式領域的Android教學方法探討

2016-05-14 20:29:37鄧招奇郝亞茹鄧春健
計算機教育 2016年6期

鄧招奇 郝亞茹 鄧春健

摘要:根據Android系統本身的開源特性以及脫胎于Linux系統的繼承特性,提出一種橫向借鑒Linux系統知識進行擴展、縱向挖掘Android系統知識進行延伸的教學方法,說明教學思路,結合實例闡述教學過程。

關鍵詞:Android教學;Linux系統;Android系統;橫向借鑒;縱向挖掘

引言

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

不過,目前的Android教學多注重系統層面之上APP開發的實踐,而沒有深入Android系統內部,學生往往知其然不知其所以然,對底層的知識沒有完整系統的概念。這種教學顯然無法適應當前物聯網迅猛發展、智能嵌入式設備呈井噴之勢的現狀。因為不管是物聯網還是智能嵌入式設備,其關注的不僅僅是上層的APP應用,更需要深入Android系統的底層,在完全了解其機制的基礎上,才能定制開發出適應嵌入式物聯網需求的智能設備,更好地實現物物相聯的理念。另外,傳統的嵌入式設備多以Linux作為首選系統,而Android系統脫胎于Linux系統,二者之間有著千絲萬縷的聯系。面對老牌的嵌入式可定制系統Linux,在進行Android系統的教學和實踐時,肯定存在許多可以舉一反三的例子。因此,Android相關教學除了可以在應用開發的層面深入系統底層,還可以從Linux的教學中汲取更多的知識。

1教學思路

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

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

2教學實例

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

1)Linux系統的電池電量管理實現。

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

2)Android系統應用層的電池電量管理實現。

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

3)Android系統底層的電池電量管理實現。

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

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

3教學效果

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

4結語

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

主站蜘蛛池模板: 成人国产精品一级毛片天堂| 国产va在线| 欧美乱妇高清无乱码免费| 四虎亚洲国产成人久久精品| 精品国产免费观看一区| 99久久精品国产麻豆婷婷| 亚洲天堂日韩在线| 亚洲69视频| 国产精品偷伦视频免费观看国产| 精品国产91爱| 久久福利片| 亚洲天堂精品视频| 欧美成人aⅴ| 国产成人亚洲日韩欧美电影| 中文字幕亚洲综久久2021| 精品无码一区二区三区在线视频| 国产视频大全| 黄色在线不卡| 亚洲精品大秀视频| 国产高清色视频免费看的网址| 亚洲精品无码AⅤ片青青在线观看| 亚洲 成人国产| 狠狠干欧美| 亚洲天堂网在线观看视频| 亚洲中文字幕精品| 精品久久香蕉国产线看观看gif| 亚洲中文字幕在线观看| 国产专区综合另类日韩一区| 国产门事件在线| 婷婷色中文网| 99视频在线观看免费| 亚洲国产中文精品va在线播放| 夜夜操国产| 国产一区二区精品高清在线观看 | 精品国产99久久| 亚洲V日韩V无码一区二区 | 午夜视频在线观看免费网站| 国产97区一区二区三区无码| 美女被躁出白浆视频播放| 精品午夜国产福利观看| 58av国产精品| 国产精品太粉嫩高中在线观看| 亚洲一级毛片在线播放| 国产欧美精品一区aⅴ影院| 国产美女91视频| 黄色国产在线| 9啪在线视频| 精品国产免费观看| 国产亚洲精品资源在线26u| 国产男人天堂| 欧美一区精品| 国产91在线|中文| 青青青国产在线播放| 亚洲va欧美va国产综合下载| 欧美劲爆第一页| 久热中文字幕在线| 无码人中文字幕| 久久精品波多野结衣| 国产夜色视频| 亚洲欧美精品一中文字幕| 中文字幕调教一区二区视频| 久久精品亚洲专区| 国产色网站| 午夜激情婷婷| 99青青青精品视频在线| 久久美女精品| 欧美综合区自拍亚洲综合绿色| 免费人成网站在线观看欧美| 2021国产乱人伦在线播放| 中国一级毛片免费观看| 黄色网在线| 亚亚洲乱码一二三四区| 欧美亚洲国产一区| 午夜性刺激在线观看免费| 亚洲开心婷婷中文字幕| 久久网欧美| 亚洲愉拍一区二区精品| 欧美自慰一级看片免费| 日韩在线影院| 亚洲国产中文在线二区三区免| 亚洲成年人网| 亚洲丝袜第一页|