【正文】
礎;詳細講解了這些理論和技術基礎在本系統中的實踐與運用 ;圍繞 解析網絡信息 課程,研究了在 Android 系統上如何將解析到的 xml 數據 抽絲剝繭地顯示在布局上 以及 Android 上內置的 SQLite 嵌 入式數據庫技術 ;圍繞 軟件更新、數據統計和意見反饋,研究了如如何利用友盟手機平臺實現軟件的管理推廣和盈利方式。 SQLite。 the storage and sync of data on Android。 explained the practice and application in detail。 3) This topic is carried out in the form of an open source project. Key Words: Android。 WebServer 北京工業(yè)大學耿丹學院 大學畢業(yè) 論文 5 1 緒論 隨著國民經濟的發(fā)展, 信息時代已經來臨 。 即使 努力 適應,建設傳統車輛管理 系統 ,需要有專用的攝像裝置 ; 車輛的行駛 路徑 和停放 位置 須 服從攝像裝置的要求 ; 需要設置護欄,卻又容易導致車輛停放困難 。 配備 打電話 、 GPS 和 網絡功能的 Android 終端尤其是 Android 手機, 完全能在 火車時刻表查詢系統 中 扮演重要的角色 ,其中最重要的是車站信息的查詢、車次信息查詢, 其次重要的是 天氣信息查詢 。 問題描述與項目動因 火車時刻查詢 , 包括 站點之間的查詢、車次的查詢、城市天氣的查詢以及用戶周邊火車票代售處的查詢。 幫助出行人士方便、高效的安排自己的行程。對于人們來說,坐火車出行無非就是旅行或者是探親,選擇一個適合自己的天氣出行不僅對自己的安全有所保障還對社會公共安全減少一點壓力。在手機火車信息查詢中加入天氣預報功能方便了乘客的查詢需求,也避免了一些乘客忘記天氣變換對出行的影響。此外, 數據備份、 電話訂購火車票 、與 友盟平臺的軟件更新和意見反饋 ,也是隱含的 功能 需求。它是本項目的 創(chuàng)新點和 核心工作之一。 北京工業(yè)大學耿丹學院 大學畢業(yè) 論文 7 2 Android 移動操作系統 移動計算 移動計算是隨著移動通信、互聯網、數據庫、分布式計算等技術的發(fā)展而興起的新技術。 手持移動設備,或手機,特別是智能手機,將是由傳統桌面計算向移動計算或云計算這一轉變過程中的主力軍。 2020 年年初,蘋果應用商店已經擁有了超過 53 萬款應用,而 Google Play 所能提供的應用數目也已突破了 40 萬大關,涵蓋了游戲、效率、社交、購物、交通、體育、圖書與工具書等等領域,滲入了生活的方方面面。 Android 技術 背景 Android 是用于移動設備上的一個包含一操作系統,一系列中間件,以及部分關鍵應用軟件棧。拓展應用訪問下層應用框架層方面,和由廠商提供的基礎應用一樣,沒有任何尊卑之別。 ? 運行環(huán)境 :與 JRE 極其相似。此外, C/S 和 B/S 相 結合的模式 —— 本地應用利用 Web 控件顯示 Web 頁面,或 Web應用利用 Javascript 調用本地程序 —— 也 十分常見 。 Android 應用由四大組件構成—— Activity, Service, Content Provider, 和 Broadcast receiver。 Android 系統設置獨有的特點是,任何應用都能啟用其他應用的組件,顯式或隱式地。 Linux 之上的 C/C++本地代碼 Android 應用由 Java 所寫,運行在虛擬機上,在處理大量數值、矩陣運算時,效率比較低。本地代碼即指用 C/C++或匯編寫成的、依賴硬件和操作系統平臺的程序或庫。 它是也另一個訪問本地代碼的方法,大有取代 JNI 的趨勢。 但是, Android 官方并沒有集成 JNA。 3) JavaCPP JavaCPP 提供了在 Java 中高效訪問 C++的方法,與某些 C/C++編譯器與匯編語言交互的方式頗為類似。 JavaCPP 底層實現最開始使用的是 JNA,后來又回到了 JNI[10]。 Android 提供了對 SQLite 數據庫的完全支持。 SQLite 使用一種更加泛化的動態(tài)類型系統。 北京工業(yè)大學耿丹學院 大學畢業(yè) 論文 11 最后,值得注意的是, SQLite 對特殊的一列 ROWID 的處理。 rowid 的值可使用以下任意列名的任意大小寫形式訪問:“ rowid”“ oid”或“ _rowid_”。這意味著按 rowid 檢索或排序記錄速度極快??赏ㄟ^以下方法獲得 ListView中的某一項的 id: 方法一: 單擊列表項的回調函 void (ListView l, View v, int position, long id)的形參 中本身就有 id; 方法二: 長 按 列 表 項 , 引 起 上 下 文 菜 單 彈 出 的 回 調 函 數 boolean (MenuItem item)中,可以這樣取得被長按列表項的 id: //獲取彈出菜單的菜單信息;該菜單信息包含了適配器上下文信息,其中就包含了適配器為當前列表項綁定的( Cursor 的) id AdapterContextMenuInfo info=(AdapterContextMenuInfo) ()。 //反過來獲取 Cursor 中的列“ _id”的值,與 對比 String _id = ((_id))。通過一定的分析和實驗, 結果是可知的。本文將討論的,是基于 Android 及以上版本 API 中引入的最新技術 —— 端對端 WiFi 直連通訊技術 。 2)對等雙向同步。 作為服務器的設備(服務設備)首先啟動同步服務,其他設備(請求設備)搜尋到該設備,發(fā)送同步請求。全部設備的變更上傳完成后,服務設備轉而向所有請求設備發(fā)送指令,備份并刪除其同步前數據,并下載同步后的數據。但在實際應用中,對“最新” 的要求并不高;相反,每周一次的同步(比如在例會與工作總結時同步工作數據),在同步時展示與統計每一部終端的數據變更,反而有得于對工作的評價。本章通過用例圖來提取與靜態(tài)地描述需求,通過交互圖來動態(tài)地描述需求,以供總體設計中類與實體的提 取、類圖和實體關系圖的生成。它擁有能運行在 Windows、 Linux、 Android以及 Mac 上的 C++、 C、 Pythoon 和 Java 的接口。 OpenCV 由英特爾公司于 1999 年起開發(fā),用 C/C++寫成,包含了 500 多個函數。這些庫包括: OpenCV, FFmpeg, libdc1394, PGR FlyCapture, OpenKinect, videoInput,和 ARToolKitPlus等。 JavaCV正是利用JavaCPP 技術實現的 OpenCV 的 Java 接口。 圖 3 AndroidVIQ 項目目錄結構 車牌 探測 在圖像處理技術中, Haar 特征提取技術常用于從圖像中提取物體 [22]。原始車輛圖像如圖 4。 圖 6 平滑與增強過后的灰 階圖像 灰階圖像轉化為二值圖像 cvThreshold(vehicleImageGray, vehicleImageBinary, 128, 255, CV_THRESH_BINARY)。我們這樣來找到車牌輪廓區(qū)域:用指定精度逼近曲線輪廓,形成一個多邊形輪廓;如果多邊形為四邊形,面積足夠大,且寬高比介于 到 之間(普通車牌 外廓尺寸為 440mm 140mm,寬高比為 ),則可初步判斷 它為車牌輪廓,接下來的工作將圍繞該區(qū)域展開。 cvContourArea(polyContours, CV_WHOLE_SEQ, 0) 600) { //獲得輪廓外框 CvRect boundingRect = cvBoundingRect(polyContours, 0)。 plate_HWratio ) { //設置原來備份的車輛灰度圖像的 ROI(感興趣區(qū)域) cvSetImageROI(vehicleImageGrayClone, boundingRect)。) 圖 9 檢測出的車牌圖像 車牌 字符分割 對 于原來備份的車輛灰度圖像,在設置好 ROI—— 車牌區(qū)域之后,進行 Canny 邊緣檢測,獲得車牌圖像的輪廓,如圖 10。以此,車牌中 的點號、孔隙和小范圍的污點均已被自動去除。 圖 12 分割后再合并的車牌字符 車牌字符 識別 Tesseract OCR 引擎 Tesseract OCR 引擎是 1995 年 UNLV Accuracy 大賽中的 排名前三的引擎。然而對于大陸車牌文字,它的識別率并不高。 車牌語言的訓練 車牌語言訓練的過程,就是提供給計算機目標文字圖像及相應的文字,讓計算機自動分析并存儲這一對應關系的過程。 然后,將它們上下拼接成一幅圖像,保存成 TIFF 格式。 北京工業(yè)大學耿丹學院 大學畢業(yè) 論文 19 圖 13 車牌字符訓練圖片 圖 14 連通多部首漢字以簡化盒子文件的修改 接下來開始生成中間文件。 對使用默認語言自動生成的盒子文件進行一定 的修改,再輸入計算機,即完成了新語言學習中的重要一步。問題的原因在于漢字字符多偏旁部首,容易被 tesseract 當作多個字符對待;生成盒子文件的目的,只是用文本文件表示出目標字符及其在訓練圖片中的區(qū)域。 接下來的工作要簡單得多。多嘗試,多分析,查閱 Tessearct 項目的問題列表,并勇于提問,最終一定能成功。該項目的目錄結構如圖 15。它并沒有實現所有可用的 JNI 方法,不過實現的方法已經夠用。 ? void (Pix image) 設置待識別圖像。兩種做法本質是一樣的。關于本問題折 討論,詳見 tesseractandroidtools項目第 119 號問題 [29]。本章 通過用例圖來提取與靜態(tài)地描述需求,通過交互圖來動態(tài)地描述需求,以 供 總體設計中 類 與 實體 的 提取 、類圖 和實體關系圖 的生成 。 用例圖 如圖 16。 北京工業(yè)大學耿丹學院 大學畢業(yè) 論文 24 保 安 / 巡 警瀏 覽 車 輛 信 息 庫瀏 覽 車 輛 登 記 單快 速 查 找 車 輛 信 息 e x t e n d s 編 輯 車 輛 信 息刪 除 車 輛 信 息 e x t e n d s e x t e n d s 短 信 發(fā) 送 車 輛 信 息電 話 聯 系 車 主登 記 該 車復 制 車 輛 信 息 e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s 短 信 發(fā) 送 登 記 記 錄復 制 登 記 記 錄刪 除 登 記 記 錄編 輯 登 記 記 錄快 速 查 找 登 記 記 錄 e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s u s e s u s e s 查 詢 / 登 記 車 輛 拍 攝 車 輛 照 片選 擇 車 輛 照 片手 工 輸 入 車 牌 號自 動 識 別 車 牌 號 u s e s e x t e n d s e x t e n d s e x t e n d s e x t e n d s 查 看 車 輛 u s e s 查 看 車 輛 信 息查 看 登 記 記 錄 e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s e x t e n d s 添 加 至 車 輛 信 息 庫 e x t e n d s 圖 18 細化 并 擴展了的用例模型 北京工業(yè)大學耿丹學院 大學畢業(yè) 論文 25 如圖 18 中所示, 系統有四個主要功能(或用例):瀏覽車輛信息庫,瀏覽車輛登記單,查詢 /登記車輛,查看車輛。 ( 2)瀏覽車輛登記單 以列表形式顯示所有的車輛登記記錄;列表項包括登記時拍攝的車輛圖片,通過圖片識別出來或手工輸入的車牌號,通過車牌號 在車輛信息庫中 查 到的 車主姓名和電話,登記的時間和地點 , 以及備注等內容。 當識別率低于某一閾值時, 手工輸入方式 將 同樣 用來 更正 圖像識別方式 所得的車牌號 。 以用例 “ 編輯 車輛信息 ” 為例。在用例“編輯車輛信息”中,需要修改車輛信息中的某一字段,比如車主電話。繼而,用戶通過選擇“編輯”菜單,向類“車輛查看頁”發(fā)送“編輯”消息;類“車輛查看頁”將該消息連同車輛 ID 發(fā)送給類 ”車輛信息編輯頁