版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Android是以Linux為基礎(chǔ)的操作系統(tǒng),它的源代碼是開源的,主要應(yīng)用在移動(dòng)端設(shè)備上,國內(nèi)一般稱其為“安卓”。Android操作系統(tǒng)最初由AndyRubin開發(fā),最初主要支持手機(jī)。Android系統(tǒng)正式發(fā)行前,分別有兩大操作是蘋果公司的ios和RIM的BlackberryOS。2011年第一季度,Android在全球的市場份額超過塞班系統(tǒng),躍居全球第一。目前,Android系統(tǒng)在智能手機(jī)領(lǐng)域的用戶使用率已超過85%。Android的系統(tǒng)架構(gòu)同其它操作系統(tǒng)一樣,也采用了分層的架構(gòu)。Android從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫層和Linux核心層。Android是以Linux為核心的一個(gè)手機(jī)操作平臺(tái),作為一個(gè)開放式的操作系統(tǒng),隨著Android的不斷發(fā)展,已經(jīng)開始允許使用多種編程語言來開發(fā)Android應(yīng)用程序,而也不是單純的以Java語言開發(fā),從而受到更多開發(fā)者的喜愛,成為真正意義上的開放式操作系統(tǒng)[95-97]。1.Linux內(nèi)核層Android系統(tǒng)建立在Linux2.6內(nèi)核以上,這一層為Android設(shè)備中的各種硬件提供了底層的驅(qū)動(dòng),比如內(nèi)存管理、安全性、網(wǎng)絡(luò)協(xié)議、進(jìn)程和驅(qū)動(dòng)模型等核心系統(tǒng)服務(wù)都要依賴Linux內(nèi)核。Linux內(nèi)核同時(shí)也是系統(tǒng)硬件和軟件棧中間的抽象層。2.系統(tǒng)運(yùn)行庫層這一層以一些C/C++庫為Android系統(tǒng)提供了主要的特性支持。本層中還有Android運(yùn)行時(shí)庫,主要提供一些核心庫,可以允許開發(fā)者使用Java語言去編寫需要的Android應(yīng)用。因此系統(tǒng)運(yùn)行庫層主要由提供Android系統(tǒng)特性的函數(shù)庫和Android運(yùn)行時(shí)庫兩部分組成。一般說來,Android應(yīng)用開發(fā)者不能直接調(diào)用這套C/C++庫集,但可以通過其上的應(yīng)用框架層來調(diào)用這些庫。常用的一些核心庫及其功能如下所示:(1)系統(tǒng)C庫:針對(duì)于嵌入式Linux設(shè)備設(shè)置而成;(2)多媒體媒體庫:該庫可以支持錄制和回放音頻和視頻格式,以及靜態(tài)圖像文件,包括MPEG4,MP3,AMR,JPG和PNG等多種格式;(3)3D庫:是基于OpenGLES1.0API實(shí)現(xiàn)的,該庫使用硬件3D加速或高度3D軟件光柵掃描器;(4)界面管理器:管理訪問顯示子系統(tǒng)和從多個(gè)程序中合成二維和三維圖形層(5)FreeType:用于位圖和矢量字體渲染(6)SQLite:給所有應(yīng)用程序提供輕量級(jí)的關(guān)系數(shù)據(jù)庫引擎圖5-1Android系統(tǒng)架構(gòu)層次Fig.5-1AndroidsystemarchitecturelevelAndroid運(yùn)行環(huán)境大致有兩大部分構(gòu)成,分別是Android核心庫集和Dalvik虛擬機(jī)。Android核心庫集,允許使用者用Java語言去編寫Android應(yīng)用程序;而Dalvik虛擬機(jī)可以使單獨(dú)的Android應(yīng)用在進(jìn)程中獨(dú)立運(yùn)行,并擁有一個(gè)自己的Dalvik虛擬機(jī)實(shí)例。Dalvik虛擬機(jī)與PC或服務(wù)器運(yùn)行的虛擬機(jī)對(duì)比而言,更適合在應(yīng)用在移動(dòng)終端,Dalvik虛擬機(jī)運(yùn)行時(shí)擁有專有的.dex文件,減少運(yùn)算產(chǎn)生的冗余信息,提高運(yùn)算性能,節(jié)省大量的內(nèi)存空間。3應(yīng)用框架層大量的API被儲(chǔ)存在Android應(yīng)用程序框架層內(nèi)部,研發(fā)者可以使用,面向的對(duì)象是底層的應(yīng)用程序框架。應(yīng)用程序框架層不僅可以作為程序開發(fā)的基礎(chǔ)模塊,也能用作軟件復(fù)用,研發(fā)者只要遵守了框架的約定,那他們所研發(fā)的任何一個(gè)應(yīng)用程序均可發(fā)布,那么這個(gè)功能模塊也能被其它應(yīng)用程序調(diào)用。本層為開發(fā)者可以方便使用組件和硬件奠定了基礎(chǔ),可供開發(fā)出更完美優(yōu)秀的應(yīng)用程序。4.應(yīng)用層這一層包含安裝在手機(jī)上的所有應(yīng)用程序。Android系統(tǒng)同樣會(huì)自帶一些應(yīng)用程序,主要有電子郵件客戶端、地圖、短信、聯(lián)系人、日歷、瀏覽器等。這些API框架的核心程序可以被開發(fā)者使用。松散耦合的組件構(gòu)成了全部的Android應(yīng)用程序,并通過程序Manifest捆綁在一起,其中我們可以清楚地在AndroidManifest.xml文件中看到應(yīng)用程序中每個(gè)組件的屬性以及它們存在什么樣的交互方式。還可以作為指定硬件和平臺(tái)要求、應(yīng)用程序元數(shù)據(jù)、外部庫或所涉及到的權(quán)限。一個(gè)Android應(yīng)用程序由四個(gè)部分組成,主要包括Activity、BroadcastReceiver、Server、ContentProvider。圖5-2Android系統(tǒng)四大組件Fig.5-2FourcomponentsofAndroidsystem在打開應(yīng)用程序時(shí),一個(gè)Activity就表示一個(gè)用戶界面,就是我們看見的手機(jī)屏幕顯示的一屏,在用戶界面中我們可以放置不同的控件,比如TextView、Button、ImageView等。Activity也可以起到監(jiān)聽的作用,并對(duì)接收的信息及時(shí)做出回應(yīng)。用戶與Activity進(jìn)行交互時(shí)有一個(gè)界面我們稱其為視圖,通常一個(gè)應(yīng)用程序內(nèi)部由幾個(gè)或十幾個(gè)Activity構(gòu)成,應(yīng)用程序中的Activity要實(shí)現(xiàn)跳轉(zhuǎn)就要用到Insent,在跳轉(zhuǎn)時(shí)同樣能進(jìn)行頁面間的數(shù)據(jù)傳輸。每個(gè)Activity從開始到結(jié)束有一個(gè)過程稱其為Activity的生命周期,圖5-3展示了一個(gè)Activity整個(gè)的歷程,打開一個(gè)界面就是一個(gè)Activity的開始,啟動(dòng)Activity系統(tǒng)先調(diào)用onCreate方法,然后調(diào)用onStart方法,最后調(diào)用onResume,Activity進(jìn)入運(yùn)行狀態(tài)。若手機(jī)被鎖屏或被其他Activity頂替,系統(tǒng)調(diào)用onPause,暫停當(dāng)前Activity。若解開手機(jī)鎖屏或Activity被覆蓋的狀態(tài)被解除,系統(tǒng)再次調(diào)用onResume,Activity會(huì)重新進(jìn)入運(yùn)行狀態(tài)。當(dāng)手機(jī)界面回到主頁或跳轉(zhuǎn)到一個(gè)新的Activity應(yīng)用程序界面時(shí),原來的界面會(huì)退到后臺(tái),系統(tǒng)先后使用onPause和onStop,應(yīng)用程序開始停滯狀態(tài)。用戶退出此時(shí)Activity,系統(tǒng)先后使用onPause、onStop和onDestory,結(jié)束目前Activity應(yīng)用程序界面。圖5-3Activity生命周期歷程Fig.5-3ActivitylifecyclehistoryActivity一般狀況下有四種狀態(tài):(1)當(dāng)Activity處于棧頂時(shí),也就是處于屏幕最前方,此時(shí)Activity處于正在運(yùn)行階段。(2)當(dāng)Activity不再集中但此時(shí)仍然能看見(棧頂Activity處于透明狀態(tài)或棧頂Activity分屏顯示在整個(gè)手機(jī)屏幕上),這時(shí)Activity就是暫停狀態(tài)。(3)當(dāng)Activity被其他Activity完全遮擋,此時(shí)此Activity對(duì)用戶不可見,此時(shí)處于停止?fàn)顟B(tài)。(4)當(dāng)Activity由于人為或系統(tǒng)原因(如低內(nèi)存等原因)被銷毀,此時(shí)Activity處于銷毀狀態(tài)2.ServiceService是用于在后臺(tái)完成指令的操作程序,它自己本身不能運(yùn)行,只能被其他組件調(diào)用才能去運(yùn)行,是一種長時(shí)間儲(chǔ)存在后臺(tái)但沒有用戶界面的應(yīng)用組件,只要被啟動(dòng)就不會(huì)被其它組件影響到。除此以外,應(yīng)用組件可以與綁定的服務(wù)進(jìn)行交互,也可以與在執(zhí)行過程中的進(jìn)程進(jìn)行通信(IPC)。例如,可以執(zhí)行文件I/O或者播放鈴聲,而以上的這些操作可以在后臺(tái)實(shí)現(xiàn),Service通常以兩種形式存在,如圖5-4所示:(a)啟動(dòng)狀態(tài)(b)綁定狀態(tài)圖5-4Service的兩種狀態(tài)形式Fig.5-4Twostatesofservice啟動(dòng)狀態(tài):如圖5-4(a)所示,當(dāng)調(diào)用Startservice()時(shí),應(yīng)用組件服務(wù)處于“啟動(dòng)”狀態(tài)。啟動(dòng)后,后臺(tái)中的服務(wù)將不受其他啟動(dòng)服務(wù)的組件的影響可以不限時(shí)地運(yùn)行,除非人工去調(diào)用才能停止服務(wù),啟動(dòng)后的的服務(wù)只是單一操作,產(chǎn)生的結(jié)果不會(huì)再返回。綁定狀態(tài):如圖5-4(b)所示,當(dāng)調(diào)用bindService()時(shí),應(yīng)用組件這時(shí)處于“綁定”狀態(tài)。綁定狀態(tài)下的服務(wù)提供了一個(gè)與客戶交互的接口,這個(gè)接口允許組件與服務(wù)之間可以進(jìn)行通信,返回結(jié)果、發(fā)送請(qǐng)求,或者進(jìn)行進(jìn)程通信(IPC)。該狀態(tài)下的服務(wù)允許不同的組件去綁定,綁定后的組件只有全部解綁后,該服務(wù)才能被銷毀。3.ContentProvider內(nèi)容提供者(ContentProvider)內(nèi)部含有一個(gè)標(biāo)準(zhǔn)接口,不同種類的數(shù)據(jù)類型通過內(nèi)部提供者被應(yīng)用程序讀取或者保存,應(yīng)用程序可以通過自身傳播自己的數(shù)據(jù)。外部應(yīng)用程序不需要擔(dān)心它如何存儲(chǔ)或在何處存儲(chǔ)接收到的數(shù)據(jù),它們只需使用內(nèi)部提供者攜帶的R接口來訪問接收到的數(shù)據(jù)。4.BroadcastReceiver應(yīng)用程序之間需要傳遞消息,Intent正好能起到這樣的作用去啟動(dòng)和停止或?qū)崿F(xiàn)各個(gè)Activity來回跳轉(zhuǎn)。在Android程序中,應(yīng)用程序使用廣播接收器(BroadcastReceiver)去篩選系統(tǒng)發(fā)出或接收的信息,對(duì)有用信息(如信息進(jìn)入,或外部有可用網(wǎng)絡(luò)等)及時(shí)接收并有回應(yīng)。廣播接收器不能提供可視化界面,當(dāng)接收到的數(shù)據(jù)信息時(shí),它們會(huì)啟用Activity或Service做出響應(yīng),或通過NotificationManager去幫助用戶獲知信息,例如閃光燈、震動(dòng)、音效等。廣播接收者有兩種注冊(cè)方法,分別是程序動(dòng)態(tài)注冊(cè)和在AndroidManifest文件中設(shè)置靜態(tài)注冊(cè)。動(dòng)態(tài)注冊(cè)廣播接收器特點(diǎn)是當(dāng)用戶注冊(cè)的Activity注銷掉后,廣播也隨之失效了。靜態(tài)注冊(cè)廣播接收器就無需擔(dān)憂用戶注冊(cè)的Activity是否被關(guān)閉,只要設(shè)備處于開啟狀態(tài),廣播接收器同時(shí)也是打開的。也就是說哪怕App本身未被啟動(dòng),該APP訂閱的廣播在也會(huì)被觸發(fā)。本文的Android開發(fā)環(huán)境配置如下:第一步,開發(fā)環(huán)境依賴JAVA環(huán)境,在Oracle公司下載JDK,根據(jù)自己電腦系統(tǒng)(本機(jī)Window10系統(tǒng))選擇jdk1.8,安裝好jdk后,配置環(huán)境變量。第二部,本文開發(fā)平臺(tái)是Google公司研發(fā)的Androidstudio,下載并安裝,配置Androidstudio的環(huán)境,后面下載AndroidSDK,SDK工具提供了開發(fā)Android應(yīng)用程序所需的API庫和構(gòu)建、測(cè)試和調(diào)試Android應(yīng)用程序所需要的開發(fā)工具。全部安裝完成后,即可進(jìn)入Androidstudio,可以看到整個(gè)開發(fā)環(huán)境如圖5-5所示,就可以進(jìn)行模型移植和下一步相關(guān)程序的編寫。圖5-5Androidstudio開發(fā)軟件示意圖Fig.5-5SchematicdiagramofAndroidStudiodevelopmentsoftware試驗(yàn)采用的軟硬件環(huán)境如下所示:(1)Ubuntu16.04(LST);(2)GPU是英偉達(dá)TESLAK20,CUDA是Toolkit9.0,CUDNN是V7.0,搭載Intel?Xeon(R)CPUE5-2683V3@2.00GHzx56處理器;(2)TensorFlow1.8學(xué)習(xí)訓(xùn)練框架;(3)AndroidStudio手機(jī)APP開發(fā)平臺(tái);(4)Python語言(5)榮耀V10(攝像頭像素2000萬+1600萬,屏幕分辨率2160*1080)。TensorFlow是一個(gè)分析和處理的系統(tǒng),它的工作原理是把復(fù)雜的結(jié)構(gòu)傳送到智能神經(jīng)網(wǎng)中。隨著機(jī)器視覺的發(fā)展,TensorFlow開始應(yīng)用于圖像或語音識(shí)別等機(jī)器學(xué)習(xí)領(lǐng)域,2017年TensorFlowLite的發(fā)布,使得TensorFlow可以擺脫笨重的設(shè)備可以采用輕量級(jí)的網(wǎng)絡(luò)去學(xué)習(xí)訓(xùn)練,然后嵌入到移動(dòng)端或嵌入式設(shè)備,具有以下特點(diǎn):(1)速度快:專為為移動(dòng)設(shè)備而設(shè)計(jì),大幅度加快模型載入時(shí)間,并且可以從硬件上支持加速。(2)輕量級(jí):允許更小的二進(jìn)制大小的文件和快速初始化的設(shè)備端機(jī)器學(xué)習(xí)模型進(jìn)行推斷(3)跨平臺(tái):設(shè)計(jì)時(shí)允許在Android或iOS上運(yùn)行。安裝Ubuntu16.04系統(tǒng),后續(xù)安裝相關(guān)依賴,配置對(duì)應(yīng)版本的CUDA和CUDNN。SudopipinstallSudopipinstalltensorflow-gpu==1.8sudoapt-getupdate&&sudoapt-getinstallbazel(3)bazel的安裝,bazel在開發(fā)環(huán)境里可以快速大規(guī)模地構(gòu)建數(shù)據(jù),共享代碼庫,后面用來編譯構(gòu)建TensorFlow。sudoapt-getupdate&&sudoapt-getinstallbazelsudoapt-getinstallpython-numpyswigpython-devsudoapt-getinstallpython-numpypython-devpython-pippython-wheelsudoapt-getinstallpython-numpyswigpython-devsudoapt-getinstallpython-numpypython-devpython-pippython-wheel(5)bazel開啟GPU支持bazelbuild--config=opt--config=cudabazelbuild--config=opt--config=cuda//tensorflow/tools/pip_package:build_pip_packagebazel-bin/tensorflow/tools/pip_package/build_pip_package/tmp/tensorflow_pkg本文的植物病害識(shí)別系統(tǒng)是在安卓平臺(tái)上實(shí)現(xiàn),需要完成客戶端的設(shè)計(jì)和實(shí)現(xiàn)。在AndroidStudio軟件中,建立工程項(xiàng)目,編程語言使用Java語言和XML語言。前期在計(jì)算機(jī)端得到的識(shí)別模型和預(yù)測(cè)模型。每一個(gè)Android項(xiàng)目都有AndroidMainfest.xml文件,該文件是整個(gè)項(xiàng)目的配置清單文件。該文件中主要含有一些權(quán)限、版本號(hào)、組件、包名等配置。項(xiàng)目在運(yùn)行之前會(huì)首先啟動(dòng)清單文件,運(yùn)行完之后,便能夠了解整個(gè)系統(tǒng)的內(nèi)容。下面列出本系統(tǒng)的AndroidMainfest.xml文件:在app/res/layout目錄下有activity_main.xml文件,該文件是用于設(shè)置界面的大小,以及調(diào)用攝像頭,調(diào)用攝像頭用于采集預(yù)測(cè)圖像。下面的代碼是應(yīng)用程序調(diào)用攝像頭的程序。首先把訓(xùn)練好的pb模型放到Android項(xiàng)目中app/src/main/assets下,其次,下載libandroid_tensorflow_inference_java.jar文件把它放到app/libs目錄下,把libtensorflow_inference.so放到app/libs/armeabi-v7a目錄下,在app/build.gradle里進(jìn)行如下配置:在defaultConfig里添加multiDexEnabledtruendk{abiFilters"armeabi-v7a"}在Android里添加在dependencies中添加libandroid_tensorflow_inference_java.jar,即:implementationfiles('libs/libandroid_tensorflow_inference_java.jar')所有配置已經(jīng)完成,下面是在AndroidStudio中調(diào)用模型,先要加載libtensorflow_inference.so庫和初始化TensorFlowInferenceInterface對(duì)象,代碼為:在APP頁面添加三個(gè)標(biāo)簽按鈕,分別是選擇照片按鈕、病害識(shí)別按鈕、病害程度識(shí)別按鈕,配置按鈕對(duì)TF模型的調(diào)用,執(zhí)行“BuildAPK(S)”,即可生成可安裝文件包(APK文件)。然后,通過4G/無線網(wǎng)絡(luò)傳輸?shù)紸ndroid手機(jī),也可以通過有線方式把安裝包移至Android手機(jī),即完成了基于Android的植物病害葉片APP的安裝。目前已經(jīng)完成了在線的植物病害檢測(cè)的系統(tǒng),在此基礎(chǔ)
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老社區(qū)床位預(yù)定金擔(dān)保協(xié)議
- 智能農(nóng)業(yè)設(shè)備運(yùn)維員崗位招聘考試試卷及答案
- 2026年內(nèi)二科護(hù)理工作計(jì)劃
- 2025年白喉、百日咳、破傷風(fēng)、乙肝四聯(lián)制劑合作協(xié)議書
- 2025年平板型太陽熱水器項(xiàng)目建議書
- 2025年光纖和特種光纜合作協(xié)議書
- 瘢痕患者自我管理能力培養(yǎng)
- 腫瘤護(hù)理與姑息治療
- 膽囊切除術(shù)的護(hù)理
- 鋼琴專業(yè)就業(yè)前景指南
- 紡織業(yè)賬務(wù)知識(shí)培訓(xùn)課件
- 1688采購合同范本
- 購買鐵精粉居間合同范本
- GB/T 29730-2025冷熱水用分集水器
- 污水廠安全知識(shí)培訓(xùn)
- (2025年標(biāo)準(zhǔn))存單轉(zhuǎn)讓協(xié)議書
- 醫(yī)學(xué)科研誠信專項(xiàng)培訓(xùn)
- 電力通信培訓(xùn)課件
- 第五版FMEA控制程序文件編制
- 藥物致癌性試驗(yàn)必要性指導(dǎo)原則
- 軟骨肉瘤護(hù)理查房
評(píng)論
0/150
提交評(píng)論