畢業(yè)論文-基于android平臺的車輛信息查詢系統(tǒng)的開發(fā)設(shè)計_第1頁
畢業(yè)論文-基于android平臺的車輛信息查詢系統(tǒng)的開發(fā)設(shè)計_第2頁
畢業(yè)論文-基于android平臺的車輛信息查詢系統(tǒng)的開發(fā)設(shè)計_第3頁
畢業(yè)論文-基于android平臺的車輛信息查詢系統(tǒng)的開發(fā)設(shè)計_第4頁
畢業(yè)論文-基于android平臺的車輛信息查詢系統(tǒng)的開發(fā)設(shè)計_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

華南理工大學畢業(yè)設(shè)計(論文)基于ANDROID平臺的車輛信息查詢系統(tǒng)的開發(fā)學院(系)專業(yè)班級學生姓名指導(dǎo)教師目錄目錄8摘要10ABSTRACT111緒論1211問題描述與項目動因1212篇章結(jié)構(gòu)132ANDROID移動操作系統(tǒng)1421移動計算1422ANDROID技術(shù)背景14221ANDROID的特性14222ANDROID架構(gòu)1523ANDROID平臺本地應(yīng)用的開發(fā)16231虛擬機之上的JAVA應(yīng)用16232LINUX之上的C/C本地代碼1624ANDROID平臺數(shù)據(jù)的存儲與同步17241嵌入式關(guān)系數(shù)據(jù)庫管理系統(tǒng)SQLITE17242ANDROID平臺的數(shù)據(jù)同步193ANDROID平臺上的車牌識別2031圖像處理20311OPENCV20312JAVACV2032車牌探測21321將原始圖像轉(zhuǎn)化為灰階圖像22322灰階圖像的平滑與增強處理22323灰階圖像轉(zhuǎn)化為二值圖像22324從二值圖像中提取輪廓23325基于邊緣檢測的車牌探測2333車牌字符分割2434車牌字符識別25341TESSERACTOCR引擎25342車牌語言的訓練25343TESSERACT庫在ANDROID中的使用274需求分析與設(shè)計2941功能需求29411用例模型29412交互圖3242非功能需求345系統(tǒng)設(shè)計、實現(xiàn)與測試3651系統(tǒng)的設(shè)計36511程序邏輯設(shè)計36512數(shù)據(jù)庫設(shè)計3852系統(tǒng)實現(xiàn)38521支撐條件39522類的實現(xiàn)41523數(shù)據(jù)庫模式4253運行與測試43531運行演示43532測試466結(jié)語與后續(xù)計劃48參考文獻49致謝52插圖目錄圖1ANDROID架構(gòu)圖15圖2OPENCV的構(gòu)成20圖3ANDROIDVIQ項目目錄結(jié)構(gòu)21圖4原始車輛圖像22圖5灰階圖像22圖6平滑與增強過后的灰階圖像22圖7二值圖像23圖8輪廓圖像(黑色背景上的白色輪廓線,不易觀察)23圖9檢測出的車牌圖像24圖10車牌圖像的輪廓24圖11分割后的車牌字符25圖12分割后再合并的車牌字符25圖13車牌字符訓練圖片圖14連通多部首漢字以簡化盒子文件的修改26圖15項目TESSERACTANDROIDTOOLS的目錄結(jié)構(gòu)27圖16本系統(tǒng)直接用例模型30圖17系統(tǒng)抽象用例模型30圖18細化并擴展了的用例模型31圖19用例“編輯車輛信息”的順序圖33圖20UI類的交互圖34圖21用例“瀏覽車輛信息庫”和“瀏覽車輛登記單”實際的類圖37圖22項目目錄結(jié)構(gòu)39圖23類“VEHICLEITEMVIEWACTIVITY”的實現(xiàn)42圖24車輛信息庫圖25快速查找圖26快速查找43圖27車輛信息庫列表項的上下文菜單圖28查看車輛圖29編輯車輛信息44圖30刪除車輛信息圖31聯(lián)系車主圖32瀏覽車輛登記單44圖33查看車輛圖34登記車輛圖35登記信息立即顯示在了登記記錄列表中45圖36查詢/登記車輛圖37成功登記的車輛圖38創(chuàng)建車輛信息46圖39成功創(chuàng)建車輛信息46摘要本文基于ANDROID移動操作系統(tǒng),集成了OPENCV、TESSERACTOCR、JAVACPP、SQLITE等幾大開源技術(shù),設(shè)計并實現(xiàn)了一個基于ANDROID平臺的車輛信息查詢系統(tǒng)。該系統(tǒng)除針對車輛信息及其車輛登記記錄簡單快捷的增刪改查操作外,還具有自動車牌識別、快速撥打電話、多終端數(shù)據(jù)同步等功能,能滿足小區(qū)(停車場)車輛管理、“黑的”鑒別、基于車輛識別的個性化服務(wù)等諸多場景的需求。論文主要學習、研究基于ANDROID平臺的車輛信息查詢系統(tǒng)的技術(shù)實現(xiàn),具體內(nèi)容包括ANDROID技術(shù)背景,ANDROID平臺本地應(yīng)用的開發(fā),ANDROID平臺數(shù)據(jù)的存儲與同步,以及ANDROID平臺上車牌識別技術(shù)的實現(xiàn)。通過本對課題的調(diào)查、研究與實現(xiàn),歸納出了ANDROID系統(tǒng)在車輛管理方面的典型應(yīng)用場景和用例;介紹了與之相關(guān)的理論和技術(shù)基礎(chǔ);詳細講解了這些理論和技術(shù)基礎(chǔ)在本系統(tǒng)中的實踐與運用;圍繞數(shù)據(jù)同步子課程,研究了在多個ANDROID終端間同步數(shù)據(jù)的解決方案;圍繞關(guān)鍵子課題車牌識別,研究并采用了OPENCV作為車牌圖像處理技術(shù),TESSERACTOCR作為車牌字符識別技術(shù),JAVACPP作為在ANDROID平臺上高效調(diào)用OPENCV與TESSERACTOCR共享庫的技術(shù),以及ANDROID上內(nèi)置的SQLITE嵌入式數(shù)據(jù)庫技術(shù)。本文的特色在于1)將車牌識別技術(shù)在ANDROID上成功實現(xiàn);2)集成創(chuàng)新,車牌識別等技術(shù)取材于谷歌代碼上的開源項目,源碼易于獲得且允許商業(yè)應(yīng)用;3)本課題亦以開源項目的形式開展。關(guān)鍵詞ANDROID車牌識別信息系統(tǒng)OPENCVTESSERACTOCRJAVACPPSQLITEABSTRACTTHISTHESISIMPLEMENTSAVEHICLEINFORMATIONQUERYVIQFORSHORTSYSTEMBASEDONANDROIDMOBILEOPERATINGSYSTEMITINTEGRATESFOUROPENSOURCETECHNOLOGIESOPENCV,TESSERACTOCR,JAVACPPANDSQLITEBESIDESASETOFFASTCRUDOPERATIONSONVEHICLEINFORMATIONANDVEHICLECHECKINGRECORDS,THEIMPLEMENTEDVIQSYSTEMALSOHASFEATURESLIKEAUTOMATICLICENCEPLATERECOGNITIONALPR,FASTCALLMAKING,DATASYNCAMONGMULTIPLETERMINALSANDMORE,WHICHCANSATISFYREQUIREMENTSOFSENERIOSLIKECOMMUNITYORPARKINGLOTVEHICLESMANAGEMENT,ILLEGALTAXISIDENTIFICATION,CUSTOMIZEDSERVICESBASEDONVEHICLEIDENTIFICATIONANDSOONINTHISTHESIS,WESTUDIEDTHEIMPLEMENTATIONOFVIQSYSTEMSBASEDONANDROIDITMAINLYINCLUDES1THEBACKGROUNDOFANDROID2THEDEVELOPMENTOFANDROIDLOCALAPPLICATION3THESTORAGEANDSYNCOFDATAONANDROIDAND4THEIMPLEMENTATIONOFALPRONANDROIDTHROUGHTHEINVESTIGATION,STUDYANDIMPLEMENTATIONOFTHISDEGREEPROJECT,THISTHESISHASSUMMARIZEDSOMETYPICALSCENARIOSANDUSECASESOFANDROIDAPPLICATIONSONVEHICLEMANAGEMENTSINTRODUCEDRELATEDTHEORYANDTECHNOLOGYBASISDETAILEDTHEAPPLICATIONOFTHEMINTHISPROJECTONDATASYNC,STUDIEDSOLUTIONSTOSYNCINGDATAAMONGMULTIPLEANDROIDTERMINALSONALPR,STUDIEDANDADOPTEDOPENCVASTHEWAYTOMANIPULATEIMAGES,TESSERACTOCRASTHEWAYTORECOGNIZELICENCEPLATES,JAVACPPASTHEWAYTOEFFICIENTLYCALLTHEUNDERLYINGSHAREDLIBRARIESOFOPENCVANDTESSERACTOCR,ANDSQLITEASTHEWAYTOSAVEPERMANENTDATAONANDROIDFEATURESOFTHISTHESIS1HAVINGALPRIMPLEMENTEDONANDROID2ANINTEGRATEDINNOVATION,WITHTECHNOLOGIESLIKEALPRFROMOPENSOURCEPROJECTSATGOOGLECODESOURCECODESAREEASYTOGETANDAVAILABLEFORCOMMERCIALUSE3THEBACKGROUNDDEGREEPRJOECTALSODEVELOPEDASANOPENSOURCEPROJECTKEYWORDSANDROIDLICENCEPLATERECOGNITIONALPRINFORMATIONSYSTEMOPENCVTESSERACTOCRJAVACPPSQLITE1緒論隨著國民經(jīng)濟的發(fā)展,車輛迅速普及。小區(qū)、停車場、道路等車輛集中的地方,存在需對問題(占用車位、違規(guī)停放等)車輛或來往車輛進行登記和身份鑒定等諸多需求,以實現(xiàn)諸如快速聯(lián)系車主、計時計費、“黑的”鑒別、基于通過車輛識別取得顧客定制信息的個性化服務(wù)等業(yè)務(wù)應(yīng)用。這些應(yīng)用普遍存在場地不固定、需求變化快等特點,傳統(tǒng)基于固定車牌識別裝置和臺式計算機的車輛管理系統(tǒng)很難適應(yīng)。即使努力適應(yīng),建設(shè)傳統(tǒng)車輛管理系統(tǒng),需要有專用的攝像裝置;車輛的行駛路徑和停放位置須服從攝像裝置的要求;需要設(shè)置護欄,卻又容易導(dǎo)致車輛停放困難。這此無疑增加了車輛信息管理的成本,制約了車輛信息數(shù)字化的進程。移動智能終端的普及,讓移動計算正取代傳統(tǒng)桌面計算成為越來越重要的信息處理方式。ANDROID移動操作系統(tǒng)在移動計算平臺中處于領(lǐng)先的地位。配備攝像頭、GPS和網(wǎng)絡(luò)功能的ANDROID終端尤其是ANDROID手機,完全能在車輛管理信息系統(tǒng)中扮演重要的角色,其中最重要的是車輛信息的查詢,其次重要的是車輛信息的登記。ANDROID終端在扮演這一角色的過程中,有兩大問題需要解決一、有限的計算能力,如何快速準確地進行車牌識別,以自動查詢車輛信息,并對車輛信息進行結(jié)構(gòu)化記錄;二、多終端協(xié)同工作,在網(wǎng)絡(luò)不可靠的情況下,如何獲取與存儲數(shù)據(jù),又如何在一定程度上保持數(shù)據(jù)的同步,以共享最新的車輛信息,或供進行統(tǒng)計與決策。關(guān)于ANDROID平臺上的車牌識別,在本系統(tǒng)中,我們通過使用JAVACPP和JNI技術(shù)實現(xiàn)了對OPENCV和TESSERACTOCR本地代碼庫的調(diào)用;為了準確識別出車牌號碼,我們通過TESSERACT訓練出了中華人民共和國機動車號牌1的語言包。關(guān)于ANDROID平臺上數(shù)據(jù)的存儲與同步,在本系統(tǒng)中,我們采用了ANDROID內(nèi)建的SQLITE技術(shù)進行數(shù)據(jù)的結(jié)構(gòu)化存儲與訪問;特別針對ANDROID40及以上版本,討論了端對端WIFI直連通訊技術(shù)的實現(xiàn)。11問題描述與項目動因車輛信息,包括車輛本身的信息車牌號、車架號、車型、車名、車身顏色等和車主的信息姓名、電話、身份證號、出生年月、駕照號等;為了更加易于識別車輛與車主,應(yīng)該提供二者的照片;此外,車輛的活動登記,包括時間、地點、備注等,也是十分重要的信息。這些信息在實際典型場景中的應(yīng)用,舉例如下1)小區(qū)(停車場)車輛管理目前,很多小區(qū)都為戶主分配了專用的停車車位,車位未經(jīng)允許被占用的現(xiàn)象卻時有發(fā)生,在一定程度上擾亂了社區(qū)的和諧。對此,前來解決問題的小區(qū)保安可使用本系統(tǒng),對問題車輛進行拍照。系統(tǒng)自動識別出該車車牌號,查詢小區(qū)車輛備案數(shù)據(jù)庫。如果查得該車屬于小區(qū)戶主,則可立即撥打戶主電話;否則可將該車加入黑名單,備后續(xù)處理。對違規(guī)停放的車輛也可作相同的處理。此外,部分小區(qū)、校園以及停車場,出入口眾多或不固定,又不適合設(shè)置門禁,傳統(tǒng)固定式車牌識別系統(tǒng)難以有效實施出入登記或計費。使用本系統(tǒng),工作人員對入場車輛進行拍照登記,并開始計費;車輛出場時再次進行拍照,或取出其上次登記記錄,結(jié)束計費。如有需要,還可以進行身份認證和信用查詢。2)“黑的”鑒別武漢現(xiàn)有的違法運營計程車(俗稱“黑的”),目前有超過4000輛2。黑的收費隨心所欲,擾亂正常市場秩序,且沒有安全和信譽保障,給市民出行帶來了諸多問題。使用本系統(tǒng),巡邏警察跟蹤可疑計程車并拍照登記,同時記錄時間和位置。根據(jù)所識別車牌號查詢備案計程車數(shù)據(jù)庫。如果找不到擁有該車牌號的合法計程車信息,則可進一步追查;如果找到,通過照片對比和詢問車主現(xiàn)在的位置,即可判斷該車是否真實。3)服務(wù)機構(gòu)個性化服務(wù)個性化、定制服務(wù)能給顧客帶來賓至如歸的感覺,也是很多服務(wù)機構(gòu)的重要業(yè)務(wù)內(nèi)容。使用本系統(tǒng),服務(wù)機構(gòu)保安拍攝或輸入前來的顧客車輛的車牌號,從該機構(gòu)建立的顧客信息數(shù)據(jù)庫中取出顧客的相關(guān)信息。顧客下車前,其稱呼、喜好、來訪記錄已為迎賓人員所掌握;定制的或與上次相同的服務(wù)可立即提供。上述應(yīng)用場景要求移動智能設(shè)備有拍照、自動車牌識別、自動記錄時間和地點、快速查詢車輛信息、保存車輛信息等功能。此外,數(shù)據(jù)備份、多設(shè)備間數(shù)據(jù)同步、與計算機共享數(shù)據(jù)等,也是隱含的功能需求。本項目即致力于設(shè)計并實現(xiàn)一個基于ANDROID平臺的車輛信息查詢系統(tǒng),以滿足上述應(yīng)用場景的需求。12篇章結(jié)構(gòu)本論文正文部分圍繞以下結(jié)構(gòu)展開第二章介紹ANDROID移動操作系統(tǒng),重點介紹了ANDROID平臺本地應(yīng)用的開發(fā)和數(shù)據(jù)的存儲與同步技術(shù)。第三章介紹車牌識別的理論、技術(shù)以及在ANDROID平臺上的實現(xiàn)。它是本項目的創(chuàng)新點和核心工作之一。第四章介紹系統(tǒng)需求的分析與設(shè)計。第五章介紹系統(tǒng)的設(shè)計、實現(xiàn)與測試。第六章總結(jié)全文,并對接下來的工作提出展望與規(guī)劃。2ANDROID移動操作系統(tǒng)21移動計算移動計算是隨著移動通信、互聯(lián)網(wǎng)、數(shù)據(jù)庫、分布式計算等技術(shù)的發(fā)展而興起的新技術(shù)。移動計算技術(shù)將使計算機或其它信息智能終端設(shè)備在無線環(huán)境下實現(xiàn)數(shù)據(jù)傳輸及資源共享。它的作用是將有用、準確、及時的信息提供給任何時間、任何地點的任何人。這將極大地改變?nèi)藗兊纳罘绞胶凸ぷ鞣绞?。手持移動設(shè)備,或手機,特別是智能手機,將是由傳統(tǒng)桌面計算向移動計算或云計算這一轉(zhuǎn)變過程中的主力軍。隨時隨地可用,傳感器豐富等相對傳統(tǒng)桌面計算機的突出優(yōu)點,為智能手機改變?nèi)藗兊墓ぷ髋c生活提供了各種可能。智能手機將逐步發(fā)展成人們眼、耳、腦以及不存在感官的延伸,幫助人們獲取、處理、存儲與呈現(xiàn)信息,幫助人們作出決定,展現(xiàn)給人們美好的事物,引領(lǐng)人們更加智慧與舒適地生活。移動平臺是目前和將來相當一段時間應(yīng)用部署的重要平臺。2012年年初,蘋果應(yīng)用商店已經(jīng)擁有了超過53萬款應(yīng)用,而GOOGLEPLAY所能提供的應(yīng)用數(shù)目也已突破了40萬大關(guān),涵蓋了游戲、效率、社交、購物、交通、體育、圖書與工具書等等領(lǐng)域,滲入了生活的方方面面。下載量上,僅以ANDROID以例。最高下載量已達5億(谷歌地圖),相當多的免費應(yīng)用的下載量在十萬級別以上,收費應(yīng)用也在萬級別以上(具體請參照GOOGLEPLAY)。一款受歡迎的應(yīng)用的市場價值十分巨大,而且這一市場才剛剛起步。22ANDROID技術(shù)背景ANDROID是用于移動設(shè)備上的一個包含一操作系統(tǒng),一系列中間件,以及部分關(guān)鍵應(yīng)用軟件棧。ANDROIDSDK網(wǎng)站提供了在ANDROID平臺上使用JAVA編程語言開發(fā)應(yīng)用程序所必須的工具和API4。221ANDROID的特性應(yīng)用框架,實現(xiàn)了組合的重用與替換DALVIK虛擬機,專為移動設(shè)備優(yōu)化集成的瀏覽器,基于開源的WEBKIT引擎優(yōu)化的圖形,由一個定制的2D圖形庫驅(qū)動,3D圖形基于OPENGLES10規(guī)范(硬件加速可選)媒體支持,支持常用音頻、視頻以及圖像格式(MPEG4,H264,MP3,AAC,AMR,JPG,PNG,GIF)GSM通話(依賴硬件)藍牙,EDGE(增強型數(shù)據(jù)速率GSM演進技術(shù)),3G,以及WIFI(依賴硬件)相機,GPS,指南針,加速計(依賴硬件)豐富的開發(fā)環(huán)境,包括一個設(shè)備模擬器,測試工具,內(nèi)存和性能分析,以及用于ECLIPSEIDE的一個插件222ANDROID架構(gòu)圖1ANDROID架構(gòu)圖ANDROID架構(gòu)由上至下分四層,如圖1。描述如下應(yīng)用層包括由系統(tǒng)默認提供了桌面、聯(lián)系人、通話、瀏覽器等基礎(chǔ)應(yīng)用,以及由廣大開發(fā)人員開發(fā)、可下載安裝的拓展應(yīng)用。拓展應(yīng)用訪問下層應(yīng)用框架層方面,和由廠商提供的基礎(chǔ)應(yīng)用一樣,沒有任何尊卑之別。應(yīng)用框架層應(yīng)用開發(fā)基本的API,提供包管理、通話管理、資源管理、位置管理、通知管理、ACTIVITY管理,窗口管理、內(nèi)容提供設(shè)施、視力系統(tǒng)。庫用C/C寫成。提供SGL底層2D繪圖引擎,安全套接層,嵌入式標準C庫,OPENGL3D繪圖,F(xiàn)REETYPE字體,瀏覽器核心,用戶空間顯示管理,媒體框架,以及輕量級SQLITE關(guān)系型數(shù)據(jù)庫。運行環(huán)境與JRE極其相似。核心包包含了在JAVA開發(fā)中常用的類庫如IO、UTILITY等;DALVIK虛擬機類似JVM,同樣也是專為ANDROID定制,針對手持設(shè)備,在存儲、計算以及功耗等方面作了格外優(yōu)化。LINUX內(nèi)核ANDROID整個操作系統(tǒng)基于LINUX內(nèi)核,內(nèi)核提供顯示、照相、閃存、軟鍵盤、WIFI、音頻等驅(qū)動程序,提供對進程間通信機制BINDER的驅(qū)動,提供電源管理服務(wù)。23ANDROID平臺本地應(yīng)用的開發(fā)同PC上應(yīng)用的部署模式一樣,ANDROID應(yīng)用也可有純本地應(yīng)用,C/S模式和B/S模式。此外,C/S和B/S相結(jié)合的模式本地應(yīng)用利用WEB控件顯示W(wǎng)EB頁面,或WEB應(yīng)用利用JAVASCRIPT調(diào)用本地程序也十分常見。此外,具有數(shù)據(jù)同步功能的本地應(yīng)用模式,在聯(lián)系人、日歷、電子郵件等核心應(yīng)用中都有體現(xiàn)。231虛擬機之上的JAVA應(yīng)用ANDROID應(yīng)用(至少是目前)是使用JAVA語言開發(fā)的。JAVA代碼被編譯成字節(jié)碼,再被編譯成DEX可執(zhí)行文件,以在DALVIK虛擬機上高效運行。ANDROID應(yīng)用由四大組件構(gòu)成ACTIVITY,SERVICE,CONTENTPROVIDER,和BROADCASTRECEIVER。每個組件以類的形式存在。類應(yīng)該具有高度的內(nèi)聚性;類與類之間應(yīng)該具有極低的耦合性。ACTIVITY負責呈現(xiàn)用戶界面并與用戶交互;SERVICE運行在后臺,負責處理耗時操作,或是為服務(wù)遠程進程;CONTENTPROVIDER負責管理可被共享的應(yīng)用程序數(shù)據(jù);BROADCASTRECEIVER則能響應(yīng)系統(tǒng)級的廣播消息。ANDROID系統(tǒng)設(shè)置獨有的特點是,任何應(yīng)用都能啟用其他應(yīng)用的組件,顯式或隱式地。一個ACTIVITY可以調(diào)用另一個ACTIVITY或SERVICE;SERVICE可在ACTIVITY結(jié)束之后關(guān)閉,或繼續(xù)運行。當系統(tǒng)啟用某一應(yīng)用的某一組件,該應(yīng)用的進程就被啟動(如果不是已經(jīng)啟動了的話),該組件所需的類就被初始化。不同于其他的系統(tǒng),ANDROID應(yīng)用程序沒有唯一的入口(比如就沒有MAIN函數(shù))6。232LINUX之上的C/C本地代碼ANDROID應(yīng)用由JAVA所寫,運行在虛擬機上,在處理大量數(shù)值、矩陣運算時,效率比較低。C、C則直接運行于硬件之上,能充分發(fā)揮硬件的性能。此外,大量傳統(tǒng)與廣泛使用的底層庫文件(包括圖形圖像處理、數(shù)據(jù)庫管理系統(tǒng)等)都是由C/C寫成,它們向ANDROID平臺的遷移應(yīng)以怎樣的方式進行呢下面介紹三種方式JNI,JNA和JAVACPP。1)JNI(JAVANATIVEINTERFACE)JNI,JAVA本地接口,是一個允許運行在JAVA虛擬機上的JAVA代碼調(diào)用本地代碼或被本地代碼調(diào)用的應(yīng)用編程框架。本地代碼即指用C/C或匯編寫成的、依賴硬件和操作系統(tǒng)平臺的程序或庫。它定義了可管理代碼(用JAVA語言寫成)與本地代碼交互的方法。它廠商中立,支持從動態(tài)鏈接庫載入代碼;雖然繁瑣,但常能獲得可觀的效率7。2)JNA(JAVANATIVEACCESS)JNA,JAVA本地訪問,是SUN公司主導(dǎo)研發(fā)的,建立在經(jīng)典的JNI的基礎(chǔ)之上的一個開源框架。它是也另一個訪問本地代碼的方法,大有取代JNI的趨勢。JNA的設(shè)計就是為了提供一種自然的方式、以最少的工作量實現(xiàn)對本地代碼的訪問。它不需要像JNI中那樣的樣板文件或生成的粘合代碼9。JNA堪比WINDOW的P/INVOKE和PYTHON的CTYPE。但是,ANDROID官方并沒有集成JNA。據(jù)ANDROID開源項目參與者FADDEN回答第一是因為性能不如JNI,在對性能要求高的應(yīng)用中人們更傾向于使用JNI;第二是因為使用JAVA和公開的API來實現(xiàn)應(yīng)用更有利用應(yīng)用程序自身和ANDROID的發(fā)展;第三是JNA遵循的是LGPL許可,將它放入ANDROID官方發(fā)行會帶來許可問題。盡管如此,ANDROID官方仍然會考慮在虛擬機中提供掛鉤,允許開發(fā)者將JNA庫作為應(yīng)用程序安裝包的一部分,自行使用10。JNA源代碼可從GITHUB獲得11。3)JAVACPPJAVACPP提供了在JAVA中高效訪問C的方法,與某些C/C編譯器與匯編語言交互的方式頗為類似。在其底層,同樣采用的是JNI,因此所有的JAVA實現(xiàn)它都支持,包括ANDROID。與其他訪問本地代碼的途徑(包括SWIG,CABLESWIG,JNIGENERATORAPP,JNIWRAPPER,PLATFORMINVOKE,GLUEGEN,JNIDIRECT,JNA,JNIMARSHALL,JNATIVE,J/INVOKE,HAWTJNI,BRIDJ等等)所明顯不同的是,它高效而自然地支持C語言許多經(jīng)常被認為有弊病的特性,包括操作符重載、模板類和模板函數(shù)、成員函數(shù)指針、回調(diào)函數(shù)、嵌套結(jié)構(gòu)體定義、可變長參數(shù)、嵌套命名空間、包含任意循環(huán)的大數(shù)據(jù)結(jié)構(gòu)、多繼承、按值/引用/微量傳遞、匿名結(jié)構(gòu)體、位域、異常、析構(gòu)以及垃圾回收。JAVACPP項目的作者SAMUEL已經(jīng)通過JAVACPP,為OPENCV,F(xiàn)FMPEG,LIBDC1394,PGRFLYCAPTURE,OPENKINECT,VIDEOINPUT,和ARTOOLKITPLUS等圖像庫生成了完整的接口,集成到了他的開源項目JAVACV當中18。JAVACPP底層實現(xiàn)最開始使用的是JNA,后來又回到了JNI10。24ANDROID平臺數(shù)據(jù)的存儲與同步241嵌入式關(guān)系數(shù)據(jù)庫管理系統(tǒng)SQLITESQLITE是一個包含一個自包含、無服務(wù)、零配制、事務(wù)型的SQL數(shù)據(jù)庫引擎的軟件庫。它是世界上最流行的數(shù)據(jù)庫引擎之一。并且,SQLITE的源代碼已經(jīng)進入了公共域,可自由使用11。ANDROID提供了對SQLITE數(shù)據(jù)庫的完全支持。你所創(chuàng)建的任何數(shù)據(jù)庫都能被當前應(yīng)用中的任何類按名訪問,當前應(yīng)用之外的類則不行12。2411SQLITE3中的數(shù)據(jù)類型14大部分數(shù)據(jù)庫引擎(就我們所知,除SQLITE之外的任何其他數(shù)據(jù)庫引擎)使用著傳統(tǒng)的靜態(tài)類型。靜態(tài)類型下,一個值的數(shù)據(jù)類型由其容器該值所存儲在的列所決定。SQLITE使用一種更加泛化的動態(tài)類型系統(tǒng)。在SQLITE中,一個值的數(shù)據(jù)類型依賴于其值本身而非其容器。在其他靜態(tài)類型數(shù)據(jù)庫上能使用的SQL語言,在SQLITE上同樣能使用;在這一意義上講,SQLITE的這一動態(tài)類型系統(tǒng)相對其他數(shù)據(jù)庫的靜態(tài)類型系統(tǒng)具有向后兼容的能力。而且,SQLITE中的動態(tài)類型能讓它完成傳統(tǒng)類型數(shù)據(jù)庫所不能完成的工作。最后,值得注意的是,SQLITE對特殊的一列ROWID的處理。它與在ANDROID中對SQLITE的訪問密切相關(guān)。2412ROWID和整型主碼SQLITE表的每一行都有一個64位有符號整數(shù)鍵,唯一地標識表中該一行。該整數(shù)通常被稱作“ROWID”。ROWID的值可使用以下任意列名的任意大小寫形式訪問“ROWID”“OID”或“_ROWID_”。如果一個表已經(jīng)存在了一個用戶定義的名叫“ROWID”“OID”或“_ROWID_”的列,則使用這些名字時,訪問的是用戶定義的列;這一整型ROWID行將不再能被檢索到15。SQLITE的每一張表都以一棵B樹的數(shù)據(jù)結(jié)構(gòu)存儲。該樹包含了對每一行的一個入口,入口地址是一個整型主碼(INTEGERPRIMARYKEY),或ROWID。這意味著按ROWID檢索或排序記錄速度極快。搜索某一指定或在某一范圍內(nèi)的ROWID的行,比相同情況下在其他主碼或索引上搜索,要快一倍15。也正是這個原因,ANDROID中重要的UI組件LISTVIEW訪問SQLITE數(shù)據(jù)庫所使用的適配器CURSORADAPTER對查詢結(jié)果CURSOR的列有一個特殊的要求必須要有一個名叫“_ID”的列16。在實現(xiàn)上,LISTVIEW的一行(即一個LISTITEM)對應(yīng)CURSOR的一行;據(jù)觀察,ANDROID為該LISTITEM分配了ID,其值正是“_ID”列的值??赏ㄟ^以下方法獲得LISTVIEW中的某一項的ID方法一單擊列表項的回調(diào)函VOIDANDROIDAPPLISTACTIVITYONLISTITEMCLICKLISTVIEWL,VIEWV,INTPOSITION,LONGID的形參中本身就有ID;方法二長按列表項,引起上下文菜單彈出的回調(diào)函數(shù)BOOLEANANDROIDAPPACTIVITYONCONTEXTITEMSELECTEDMENUITEMITEM中,可以這樣取得被長按列表項的ID/獲取彈出菜單的菜單信息;該菜單信息包含了適配器上下文信息,其中就包含了適配器為當前列表項綁定的(CURSOR的)IDADAPTERCONTEXTMENUINFOINFOADAPTERCONTEXTMENUINFOITEMGETMENUINFO/當前列表項的IDINTIDINFOID此外,要獲取當前列表項中子VIEW的值,也有快捷的方法/當前列表項在適配器上的位置INTPOSITIONINFOPOSITION/獲取適配器為當前列表項綁定的CURSOR(或一行記錄)CURSORCURSORCURSORGETLISTADAPTERGETITEMPOSITION/反過來獲取CURSOR中的列“_ID”的值,與INFOID對比STRING_IDCURSORGETSTRINGCURSORGETCOLUMNINDEX“_ID“LOGVTAG,“_IDATPOSITION“POSITION“,ID“ID“IS“_ID對比會發(fā)現(xiàn),無論對列表項進行新增、刪除、排序等任何操作,ID與_ID均相同;相反,POSITION表示的只是當前列表項在列表LISTVIEW中的下標,與ID或_ID沒有直接的關(guān)系。以上問題是困擾作者本人在內(nèi)的許多開發(fā)者許久的問題。通過一定的分析和實驗,結(jié)果是可知的。這或許也是做開發(fā)的樂趣之所在。242ANDROID平臺的數(shù)據(jù)同步ANDROID終端同WEB服務(wù)器、ANDROID終端與終端之間的數(shù)據(jù)同步,可以采用同ANDROID系統(tǒng)中谷歌帳戶應(yīng)用(GMAIL、GOOGLECALENDAR等)類似的方法,通過SAMPLESYNCADAPTER,利用ANDROID框架中的帳戶管理器和同步管理器實現(xiàn)。這里不再贅述。本文將討論的,是基于ANDROID40及以上版本API中引入的最新技術(shù)端對端WIFI直連通訊技術(shù)。2421端對端WIFI直連通訊技術(shù)從ANDROID40(API14)開始,WIFI直連通訊技術(shù)允許設(shè)備通過WIFI直接(WIFIDIRECT)連接,不再需要中間互連點(如無線路由器或WIFI熱點)。使用ANDROID所提供的API,你可以發(fā)現(xiàn)并連接到同樣支持WIFI直接的設(shè)備上,然后與之進行比藍牙距離更遠的高速通信?;谠摷夹g(shù),我們構(gòu)想出了兩種多終端通信方式1)C/S單向同步。2)對等雙向同步。鑒于實驗條件不允許,我們僅對邏輯的實現(xiàn)作理論的分析。相信經(jīng)過這一分析,在ANDROIDAPI14實現(xiàn)起來是不難的。(1)C/S單向同步在該同步方式中,指定一臺設(shè)備作為服務(wù)器,或才最先啟動同步服務(wù)的設(shè)備自動作為服務(wù)器;其他設(shè)備作為客戶機;首先輪流上傳各自的數(shù)據(jù),服務(wù)器負責數(shù)據(jù)的新增、更新與合并;然后輪流從服務(wù)器下載最新的數(shù)據(jù)。作為服務(wù)器的設(shè)備(服務(wù)設(shè)備)首先啟動同步服務(wù),其他設(shè)備(請求設(shè)備)搜尋到該設(shè)備,發(fā)送同步請求。服務(wù)設(shè)備在用戶的協(xié)助的對請求設(shè)備進行身份認證,并允許保存身份信息(即配對)以供下次免認證連接。服務(wù)設(shè)備上啟用一個服務(wù),或為每個設(shè)備啟用一個服務(wù),響應(yīng)所有設(shè)備發(fā)送過來的通知(包含對數(shù)據(jù)變更的描述和數(shù)據(jù)本身)。響應(yīng)操作包括備份同步前的數(shù)據(jù);新增設(shè)備新增的記錄,緩存設(shè)備的修改和刪除請求并在最后提示用戶確認(修改或刪除),最后標記版本。全部設(shè)備的變更上傳完成后,服務(wù)設(shè)備轉(zhuǎn)而向所有請求設(shè)備發(fā)送指令,備份并刪除其同步前數(shù)據(jù),并下載同步后的數(shù)據(jù)。(2)對等雙向同步在該同步方式中,設(shè)備間對等通信,向其他配對設(shè)備播送自身數(shù)據(jù)的變化,同時接收與處理其他配對設(shè)備數(shù)據(jù)變化的通知。該方式與C/S單向同步的不同之處在于,設(shè)備同時扮演兩種角色服務(wù)設(shè)備和請求設(shè)備;無需下載同步后數(shù)據(jù)。兩種同步方式都希望所有設(shè)備在當時當?shù)乜捎?,否則每一部設(shè)備上的數(shù)據(jù)都不是嚴格意義上“最新”的數(shù)據(jù)。但在實際應(yīng)用中,對“最新”的要求并不高;相反,每周一次的同步(比如在例會與工作總結(jié)時同步工作數(shù)據(jù)),在同步時展示與統(tǒng)計每一部終端的數(shù)據(jù)變更,反而有得于對工作的評價。3ANDROID平臺上的車牌識別車牌識別這里特指自動車牌識別,即運用計算機視覺技術(shù),從包含車牌的圖像中自動探測到車牌區(qū)域,提取該區(qū)域車牌圖像進行進一步處理,使其中的車牌字符適合光學字符識別(OCR)引擎識別,最后返回完整的車牌號字符串的過程。該過程包含的三大核心環(huán)節(jié)對識別率起到了至關(guān)重要的作用1)車牌探測;2)車牌字符分割;3)車牌字符識別。下面對其分別進行描述并加以實現(xiàn)。31圖像處理在圖像學中,圖像處理是對輸入圖像的任何形式的信號處理;其輸出可以是一幅圖像,或與之相關(guān)的字符集或參數(shù)19。本課題中包含大量的圖像處理,因此我們研究并采用了開源圖像處理庫OPENCV。311OPENCVOPENCV(開源計算機視覺)是一個用于實時計算機視覺的程序函數(shù)庫。它在BSD許可下發(fā)布,學術(shù)和商業(yè)上均可免費使用。它擁有能運行在WINDOWS、LINUX、ANDROID以及MAC上的C、C、PYTHOON和JAVA的接口。該庫擁有超過2500個算法的優(yōu)化。使用者遍布全球,擁有2,500,000以上的下載量和40,000用戶組成員。使用范圍從交互藝術(shù)到礦物探測,再到WEB圖形檢索等領(lǐng)域20。OPENCV由英特爾公司于1999年起開發(fā),用C/C寫成,包含了500多個函數(shù)。OPENCV的構(gòu)成如圖2。CXCORE基本結(jié)構(gòu)和算法,XML支持,繪圖函數(shù)CV圖像處理和視覺算法HIGHGUIGUI,圖像和視頻I/O圖2OPENCV的構(gòu)成312JAVACVJAVACV是一個OPENCV的JAVA接口。它為計算機視覺領(lǐng)域調(diào)查者們常用的庫提供了封裝。這些庫包括OPENCV,F(xiàn)FMPEG,LIBDC1394,PGRFLYCAPTURE,OPENKINECT,VIDEOINPUT,和ARTOOLKITPLUS等。COMGOOGLECODEJAVACVCPP包命名空間下的類便展示出了完整的API。并且,實用類還使自身的功能在JAVA平臺包括ANDROID平臺上更加可用21。JAVACV開源項目的負責人SAMUEL,即前述JAVACPP項目的負責人。JAVACV正是利用JAVACPP技術(shù)實現(xiàn)的OPENCV的JAVA接口。編譯或生成JAVACPPJAR和JAVACVJAR,作為本項目的引用包;將JAVACVANDROIDARMJAR和OPENCV240ANDROIDARMZIP中所有的庫文件解壓至項目根目錄下的LIBS/ARMEABI文件夾中,即完成了對JAVACV庫引用。項目目錄結(jié)構(gòu)如圖3。具體請參照項目主頁的介紹。圖3ANDROIDVIQ項目目錄結(jié)構(gòu)32車牌探測在圖像處理技術(shù)中,HAAR特征提取技術(shù)常用于從圖像中提取物體22。該技術(shù)涉及神經(jīng)網(wǎng)絡(luò)等算法,限于知識水平,暫不研究。邊緣檢測作為一種簡單的物體檢測方法,特別適合于矩形外框的車牌。本課題采用基于邊緣檢測的車牌探測技術(shù)。原始車輛圖像如圖4。圖4原始車輛圖像321將原始圖像轉(zhuǎn)化為灰階圖像CVCVTCOLORMVEHICLEIMAGE,VEHICLEIMAGEGRAY,CV_BGR2GRAY圖5灰階圖像322灰階圖像的平滑與增強處理CVSMOOTHVEHICLEIMAGEGRAY,VEHICLEIMAGEGRAY,CV_GAUSSIAN,3CVEQUALIZEHISTVEHICLEIMAGEGRAY,VEHICLEIMAGEGRAY圖6平滑與增強過后的灰階圖像323灰階圖像轉(zhuǎn)化為二值圖像CVTHRESHOLDVEHICLEIMAGEGRAY,VEHICLEIMAGEBINARY,128,255,CV_THRESH_BINARY圖7二值圖像324從二值圖像中提取輪廓CVSEQCONTOURSNEWCVSEQINTOBJECTSCVFINDCONTOURSVEHICLEIMAGEBINARY,CVCREATEMEMSTORAGE0,CONTOURS,LOADERSIZEOFCVCONTOURCLASS,CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE圖8輪廓圖像(黑色背景上的白色輪廓線,不易觀察)325基于邊緣檢測的車牌探測經(jīng)檢測,提取的圖像輪廓中有約1800個獨立輪廓區(qū)域。我們這樣來找到車牌輪廓區(qū)域用指定精度逼近曲線輪廓,形成一個多邊形輪廓;如果多邊形為四邊形,面積足夠大,且寬高比介于28到34之間(普通車牌外廓尺寸為440MM140MM,寬高比為314),則可初步判斷它為車牌輪廓,接下來的工作將圍繞該區(qū)域展開。示例代碼如下/獲得多邊形輪廓CVSEQPOLYCONTOURSCVAPPROXPOLYCONTOURS,LOADERSIZEOFCVCONTOURCLASS,CVCREATEMEMSTORAGE0,CV_POLY_APPROX_DP,CVCONTOURPERIMETERCONTOURS005,0/檢查輪廓邊數(shù)和面積IFPOLYCONTOURSTOTAL4/檢查輪廓寬高比DOUBLEPLATE_HWRATIODOUBLEBOUNDINGRECTWIDTH/DOUBLEBOUNDINGRECTHEIGHTIFPLATE_HWRATIO28CREATETABLEQUERY_ID,TIME,PLACE,NOTE,PHOTO,_LICENCECREATEVIEWQUERYINFOASSELECTQUERY_IDAS_ID,_LICENCEASLICENCE,NAME,PHONE,TIME,PLACE,QUERYNOTEASNOTE,QUERYPHOTOASPHOTOFROMQUERYLEFTOUTERJOININFOON_LICENCELICENCE53運行與測試531運行演示應(yīng)用程序在開發(fā)設(shè)備上運行良好,能滿足需求分析中所研究各大使用場景和用例的基本需求。下面將結(jié)合需求設(shè)計中的幾個用例給出具有代表性的程序運行截屏。(1)瀏覽車輛信息庫如圖24所示,“車輛信息庫”頁以列表形式顯示了所有共52條車輛的信息,以車牌號排序。列表項左側(cè)是車輛的備案照片,右側(cè)是車牌號、車主姓名與電話等信息。單擊“車輛登記單”按鈕,可切換至“車輛登記單”頁面;單擊“查詢/登記車輛”按鈕,可切換至“查詢/登記車輛”頁面;單擊列表項,可切換至“查看車輛”頁面。單擊“快速查找”按鈕,標題欄將變?yōu)榭删庉嫚顟B(tài),可輸入任一已知字段中的文本片段進行查找,列表項實時更新。如圖26所示,有3條記錄中包含有關(guān)鍵詞“45”。長按列表項,將彈出上下文菜單,如圖27所示??蓪囕v信息進行查看(切換至“查看車輛”頁面)、編輯、刪除操作,可快速聯(lián)系車主,可短信發(fā)送車輛信息,可復(fù)制部分或全部字段至剪切板。圖24車輛信息庫圖25快速查找圖26快速查找圖27車輛信息庫列表項的上下文菜單圖28查看車輛圖29編輯車輛信息圖30刪除車輛信息圖31聯(lián)系車主圖32瀏覽車輛登記單(2)瀏覽車輛登記單如圖32所示,“車輛登記單”頁以列表形式顯示了所有共53條車輛登記記錄,以登記時間逆序排序。列表項中,左側(cè)是車輛的登記照片,右側(cè)是所識別或輸入車牌號、通過車牌號所查得的車主姓名和電話等信息。車輛登記單還特別記錄了登記的時間和地點,并且時間以相對時間(如“剛剛”“35分鐘前”等)格式顯示,在部分場景中有較大的用處?!盀g覽車輛登記單”頁面中的操作,和前述“瀏覽車輛信息庫”頁面的操作十分類似,這里不再贅述。(3)查看車輛如圖33所示,“查看車輛”頁顯示了指定車輛的信息以及其所有登記記錄。同樣可對該車輛的登記記錄實施編輯、刪除操作。同時,還可以新建登記記錄,如圖34;系統(tǒng)將自動填入登記的時間和經(jīng)緯度信息。圖33查看車輛圖34登記車輛圖35登記信息立即顯示在了登記記錄列表中(4)查詢/登記車輛如圖35所示,“查詢/登記車輛”頁取得用戶拍攝或選擇的車輛照片,自動檢測到車牌并對其圖像進行加工,最后完成識別并等待用戶確認。用戶確認后,程序?qū)⒈4娲舜蔚怯洠⒏鶕?jù)所得車牌號碼查找車輛信息庫。如果找不到,“查看車輛”頁上方將不顯示車輛的信息,并允許用戶建立該車的車輛信息。圖36查詢/登記車輛圖37成功登記的車輛圖38創(chuàng)建車輛信息圖39成功創(chuàng)建車輛信息532測試軟件的測試分為白盒測試和黑盒測試兩大方法。對ANDROID應(yīng)用進行白盒測試,ANDROIDAPI提供了ACTIVITYINSTRUMENTATIONTESTCASE2等測試專用的類,用以模擬用戶和系統(tǒng)對應(yīng)用的操作或調(diào)用,對應(yīng)用實施快速自動的測試。本項目所選取的是手工測試。針對前述各個用例,可以靈活地輸入各種測試數(shù)據(jù),走遍各個可能的路徑,及時發(fā)現(xiàn)問題并予以解決。邊界條件如對列表項的第一項、最后一項實施編輯或刪除,函數(shù)中的空參數(shù)、零值、零長字符串,異常如GPS不可用、SD卡不可用、文件不存在等,程序都做了充分的考慮和妥善的處理。此外,代碼中關(guān)鍵部分都設(shè)置了日志記錄,遇到問題可迅速定位并解決。針對關(guān)鍵技術(shù)車牌識別,由于本項目目前的主要工作暫只是將車牌識別技術(shù)在ANDROID上實現(xiàn),而沒來得及進行深入的優(yōu)化,因而測試工作也不夠充分。目前,識別超過2MB的車輛圖片可能會導(dǎo)致內(nèi)存用盡異常;對部分類型車牌的識別率不夠可觀。相信通過訓練更好的車輛識別語言包,以及優(yōu)化車牌檢測算法和圖像處理算法,本系統(tǒng)的車牌識別率能與專用ALPR設(shè)備相媲美6結(jié)語與后續(xù)計劃本論文的撰寫,經(jīng)歷了大量的前期準備。閱讀并翻譯了大量的英文文獻,特別是ANDROID官方網(wǎng)站ANDROID開發(fā)者上介紹ANDROID基礎(chǔ)及API的文檔。關(guān)于車牌識別在ANDROID上的實現(xiàn),參考了作者AHMADGULLLIAQAT于2011年完成的碩士學位論文MOBILEREALTIMELICENSEPLATERECOGNITION,從中提取了大量寶貴的素材,并與AHMAD本人進行了多次的郵件交流。此外,還對開源項目TESSERACTOCR和JAVACV作出了一定的研究,利用二者促成了本項目的快速構(gòu)建。最終,較好地實現(xiàn)了一個基于ANDROID平臺的車輛信息查詢系統(tǒng),實現(xiàn)了ANDROID平臺上的車牌識別,并將后者應(yīng)用到了前者當中。本論文介紹了上述工作中的核心內(nèi)容,描述了系統(tǒng)的開發(fā)過程,展示了所取得的成果。它對該系統(tǒng)進一步的完善,以及其他從事類似工作的開發(fā)者,具有一定的指導(dǎo)意義。論文的不足之處在于,1)未就車牌識別問題進行充分的研究,包括車牌類型的適應(yīng)性(機動車車牌和小車車牌,前方車牌和后方車牌)、車牌照片的適應(yīng)性(拍攝的角度與傾斜、光線與背景干擾);2)未實現(xiàn)車輛數(shù)據(jù)庫的同步,包括手機與服務(wù)器、手機與手機的數(shù)據(jù)同步。它們在接下來的工作中加以完善。至此,以車輛識別為特性的基于ANDROID平臺的車輛信息查詢系統(tǒng)的開發(fā)工作到達了一個重要的里程碑。它不是終點,相反是新的起點。我們已經(jīng)將本論文背后的項目放入了谷歌代碼托管,將接受來自世界各地開發(fā)者的關(guān)注與貢獻,并鼓勵大家自由使用。接下來,我們將著手提升車牌識別準確率,并實現(xiàn)車輛數(shù)據(jù)庫的同步。爭取在不遠的未來,本系統(tǒng)能廣泛運用到現(xiàn)實生產(chǎn)生活中去參考文獻1公安部GA362007中華人民共和國機動車號牌,20072大楚網(wǎng)武漢黑的士大楚網(wǎng)新聞頻道,HTTP/HBQQCOM/ZT/2008/HEIDISHI/HEIDISHIHTM,20125263百度百科移動計算_百度百科,HTTP/BAIKEBAIDUCOM/VIEW/95305HTM,20125194ANDROID開發(fā)者WHATISANDROID|ANDROIDDEVELOPERS,HTTP/DEVELOPERANDROIDCOM/GUIDE/BASICS/WHATISANDROIDHTML,20125195英文維基百科ANDROIDOPERATINGSYSTEMWIKIPEDIA,THEFREEENCYCLOPEDIA,HTTP/ENWIKIPEDIAORG/WIKI/ANDROID_28OPERATING_SYSTEM29,20125196ANDROID開發(fā)者APPLICATIONFUNDAMENTALS|ANDROIDDEVELOPERS,HTTP/DEVELOPERANDROIDCOM/GUIDE/TOPICS/FUNDAMENTALSHTML,20125197英文維基百科JAVANATIVEINTERFACEWIKIPEDIA,THEFREEENCYCLOPEDIA,HTTP/ENWIKIPEDIAORG/WIKI/JNI,20125198ANDROID開發(fā)者JNITIPS|ANDROIDDEVELOPERS,HTTP/DEVELOPERANDROIDCOM/GUIDE/PRACTICES/DESIGN/JNIHTML,20125199英文維基百科JAVANATIVEACCESSWIKIPEDIA,THEFREEENCYCLOPEDIA,HTTP/ENWIKIPEDIAORG/WIKI/JAVA_NATIVE_ACCESS,201251910谷歌代碼托管ISSUE11099ANDROIDJNAONANDROIDDESIREDANDROIDANOPENHANDSETALLIANCEPROJECTGOOGLEPROJECTHOSTING,HTTP/CODEGOOGLECOM/P/ANDROID/ISSUES/DETAILID11099,201251911SQLITE官方主頁SQLITEHOMEPAGE,HTTP/WWWSQLITEORG/,201252012ANDROID開發(fā)者DATASTORAGE|ANDROIDDEVELOPERS,HTTP/DEVELOPERANDROIDCOM/GUIDE/TOPICS/DATA/DATASTORAGEHTMLDB,201252013SQLITE官方主頁FEATURESOFSQLITE,HTTP/WWWSQLITEORG/FEATURESHTML,201252014SQLITE官方主頁DATATYPESINSQLITEVERSION3,HTTP/WWWSQLITEORG/DATATYPE3HTML,201252015SQLITE官方主頁SQLITEQUERYLANGUAGECREATETABLE,HTTP/WWWSQLITEORG/LANG_CREATETABLEHTMLROWID,201252016ANDROID開發(fā)者CURSORADAPTERANDROIDSDK|ANDROIDDEVELOPERS,FILE/D/VIKY/ANDROID/ANDROIDSDK/DOCS/REFERENCE/ANDROID/WIDGET/CURSORADAPTERHTML,201252017GITHUB代碼托管NETJU

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論