freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于j2me的手機(jī)gps導(dǎo)航系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-閱讀頁(yè)

2024-12-07 21:54本頁(yè)面
  

【正文】 ,由于其簡(jiǎn)捷、快速的方式,適用于分布式和合作式超媒體信息系統(tǒng)。由于移動(dòng)無(wú)線設(shè)備是資源受限設(shè)備,所能支持的網(wǎng)絡(luò)協(xié)議非常有限,僅限于HTTP,Socket,UDP等幾種協(xié)議,最重要的一點(diǎn)是不同的廠家可能只選擇支持其中的一種或幾種。因此,考慮到不同類型的手機(jī)上的可兼容性,客戶端和服務(wù)端采用HTTP協(xié)議進(jìn)行通訊。 采用XML描述傳輸數(shù)據(jù)包XML(ExtensibleMarkupLanguage)是一種可擴(kuò)展的標(biāo)記語(yǔ)言,XML是由SGML發(fā)展而來(lái)的語(yǔ)言,其目標(biāo)是為了適應(yīng)Web應(yīng)用環(huán)境,將互聯(lián)網(wǎng)上傳播的文檔規(guī)范化,用文檔的結(jié)構(gòu)標(biāo)記定義手段來(lái)表達(dá)文檔內(nèi)容的語(yǔ)義聯(lián)系及其關(guān)聯(lián),從而提供了互聯(lián)網(wǎng)上數(shù)據(jù)交換的語(yǔ)義和格式標(biāo)準(zhǔn),以及各類業(yè)務(wù)文檔置標(biāo)(置標(biāo)指計(jì)算機(jī)所能理解的信息符號(hào))規(guī)則語(yǔ)言標(biāo)準(zhǔn)的實(shí)現(xiàn)方法。XML標(biāo)準(zhǔn)包括XML文檔的基本語(yǔ)法規(guī)則(即所謂的文檔合格性約束:符合語(yǔ)法規(guī)則的文檔稱為合格文檔),針對(duì)不同應(yīng)用領(lǐng)域的文檔結(jié)構(gòu)約束規(guī)則(即所謂的文檔有效性約束:符合某種結(jié)構(gòu)約束規(guī)則的合格文檔稱為有效文檔)。XML是一種高擴(kuò)展、靈活的語(yǔ)言,用它來(lái)描述自己的數(shù)據(jù)用戶有很大的自由度,通過(guò)自定義的標(biāo)簽詞表可以與其他用戶或系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)共享。XML數(shù)據(jù)包解析模塊將解析結(jié)果傳到Web服務(wù)路由模塊,該模塊根據(jù)解析包中的命令字調(diào)用相應(yīng)的業(yè)務(wù)處理模塊進(jìn)行業(yè)務(wù)處理,處理結(jié)束后選擇相應(yīng)的地圖文件并調(diào)用數(shù)據(jù)發(fā)送模塊將地圖數(shù)據(jù)發(fā)送給客戶端。 地圖服務(wù)設(shè)計(jì) 設(shè)計(jì)原則(1)數(shù)據(jù)量最少原則移動(dòng)終端同地圖服務(wù)器之間的數(shù)據(jù)傳輸,至關(guān)重要就是傳輸?shù)臄?shù)據(jù)量的多少。移動(dòng)終端內(nèi)存受限:如果傳輸?shù)臄?shù)據(jù)量太大,達(dá)到了移動(dòng)終端內(nèi)存的上限則會(huì)出現(xiàn)內(nèi)存不足的狀況,使軟件無(wú)法運(yùn)行。(2)界面友好,操作方便系統(tǒng)應(yīng)該有良好的用戶體驗(yàn),用戶在移動(dòng)終端上可以流暢方便的使用該軟件。保證用戶在任何時(shí)間可以退出系統(tǒng)。如果采用柵格圖,雖然編程模式簡(jiǎn)單,但是地圖在客戶端縮放平移時(shí),將不斷請(qǐng)求服務(wù)端相應(yīng)的地圖數(shù)據(jù),增加了通信開(kāi)銷(xiāo),而使用矢量圖形,從服務(wù)端接收到的矢量圖形在客戶端可任意縮放平移,且縮放不會(huì)失真,在J2ME平臺(tái),JSR226提供了完整的對(duì)可拓展矢量圖形——SVG格式圖片的支持,可對(duì)SVG格式圖片進(jìn)行渲染,并且SVG格式圖片是純文本形式,符合XML規(guī)范,可通過(guò)解析得到相關(guān)屬性信息并編輯,所以本系統(tǒng)中地圖文件格式采用SVG格式。目前,用于導(dǎo)航的GPS數(shù)據(jù)大多采用NEMAO183格式提供一些通用的輸出信息,包括定位點(diǎn)的經(jīng)度、緯度、海拔高度、可用衛(wèi)星顆數(shù)、當(dāng)前的星歷信息和每顆衛(wèi)星的狀態(tài)等。 查詢服務(wù)設(shè)計(jì)系統(tǒng)提供簡(jiǎn)單的查詢操作,可對(duì)當(dāng)前地圖中的建筑物進(jìn)行查詢,當(dāng)查詢到所提交的興趣點(diǎn)時(shí),返回地圖界面并將興趣點(diǎn)進(jìn)行高亮顯示,當(dāng)未查詢到時(shí),提示用戶未找到相關(guān)信息并提示用戶重新輸入。實(shí)現(xiàn)流程如下圖61:圖61 服務(wù)端業(yè)務(wù)處理流程圖 核心代碼(1)服務(wù)端接收客戶端XML包數(shù)據(jù)并解析實(shí)現(xiàn)服務(wù)端應(yīng)用程序由一個(gè)部署在Web服務(wù)器上的一個(gè)Servlet來(lái)?yè)?dān)當(dāng)控制器,它通過(guò)解析請(qǐng)求數(shù)據(jù)包得到mandID即請(qǐng)求包命令字,并根據(jù)其值來(lái)決定執(zhí)行相應(yīng)的業(yè)務(wù)操作。 // 客戶端傳過(guò)來(lái)的請(qǐng)求數(shù)據(jù)包輸入流 DocumentBuilder builder = ()。 // 解析請(qǐng)求數(shù)據(jù)包 Element root = ()。// 獲得包命令字 mandID = (0).getFirstChild().getNodeValue()。// 屬性經(jīng)度 longitude = (2).getFirstChild().getNodeValue()。 } catch (ParserConfigurationException e) { ()。 } finally { ()。 }客戶端發(fā)送的數(shù)據(jù)全部以字節(jié)流的方式發(fā)送到服務(wù)器,()可以得到客戶端字節(jié)流數(shù)據(jù),通過(guò)對(duì)字節(jié)流數(shù)據(jù)的解析可以得到相應(yīng)包的命令字、業(yè)務(wù)描述及相應(yīng)的參數(shù)列表。代碼如下:DataOutputStream dos = null。 try { if ((longitude) amp。 (longitude) amp。 (latitude) amp。 (latitude) ) {// 客戶端請(qǐng)求包中的經(jīng)緯度落入該范圍內(nèi),調(diào)用對(duì)應(yīng)的地圖 url = C:/MapFile/LONG1172211726LAT3173631775/。 byte[] data = new byte[(int) ()]。 (data)。 ()。 ()。 } finally { ()。 } 客戶端應(yīng)用程序?qū)崿F(xiàn) 狀態(tài)設(shè)計(jì)思想的實(shí)現(xiàn)根據(jù)系統(tǒng)當(dāng)前狀態(tài)執(zhí)行對(duì)應(yīng)的方法,包括邏輯處理、繪制、按鍵按下、按鍵釋放、重復(fù)按鍵方法。系統(tǒng)各狀態(tài)的主要處理方法如下表61所示:表61 系統(tǒng)各狀態(tài)處理方法系統(tǒng)狀態(tài)方法歡迎(WELCOME)初始化init_Wele()釋放資源out_Wele()邏輯處理process_Wele()繪制draw_Wele()按鍵按下keyPressed_Wele()按鍵釋放keyReleased_Wele()重復(fù)按鍵keyRepeated_Wele()過(guò)場(chǎng)動(dòng)畫(huà)(CARTOON)初始化init_Cartoon()釋放資源out_Cartoon()邏輯處理process_Cartoon()繪制draw_Cartoon()按鍵按下keyPressed_Cartoon()按鍵釋放keyReleased_Cartoon()重復(fù)按鍵keyRepeated_Cartoon()地圖(MAP)初始化init_Map()釋放資源out_Map()邏輯處理process_Map()繪制draw_Map()按鍵按下keyPressed_Map()按鍵釋放keyReleased_Map()重復(fù)按鍵keyRepeated_Map()我的位置(MY_LOCATION)/附近搜索(SEARCH_AROUND)初始化init_SearchAround()釋放資源out_SearchAround()邏輯處理process_SearchAround()繪制draw_SearchAround()按鍵按下keyPressed_SearchAround()按鍵釋放keyReleased_SearchAround()重復(fù)按鍵keyRepeated_SearchAround()查詢歷史(LOOKUP_HISTORY)初始化init_LookupHistory()釋放資源out_LookupHistory()邏輯處理process_LookupHistory()繪制draw_LookupHistory()按鍵按下keyPressed_LookupHistory()按鍵釋放keyReleased_LookupHistory()重復(fù)按鍵keyRepeated_LookupHistory()設(shè)置(SETTING)初始化init_Setting()釋放資源out_Setting()邏輯處理process_Setting()繪制draw_Setting()按鍵按下keyPressed_Setting()按鍵釋放keyReleased_Setting()重復(fù)按鍵keyRepeated_Setting()幫助(HELP)初始化init_Help()釋放資源out_Help()邏輯處理process_Help()繪制draw_Help()按鍵按下keyPressed_Help()按鍵釋放keyReleased_Help()重復(fù)按鍵keyRepeated_Help()關(guān)于(ABOUT)初始化init_About()釋放資源out_About()邏輯處理process_About()繪制draw_About()按鍵按下keyPressed_About()按鍵釋放keyReleased_About()重復(fù)按鍵keyRepeated_About()退出(EXIT)初始化init_Exit()釋放資源out_Exit()邏輯處理process_Exit()繪制draw_Exit()按鍵按下keyPressed_Exit()按鍵釋放keyReleased_Exit()重復(fù)按鍵keyRepeated_Exit()系統(tǒng)邏輯處理使用switch判斷當(dāng)前當(dāng)前狀態(tài)選擇對(duì)應(yīng)的邏輯處理方法,實(shí)現(xiàn)代碼如下:// 一級(jí)主狀態(tài)開(kāi)關(guān)邏輯處理 switch (firstState) { case WELCOME: process_Wele()。 case CARTOON: process_Cartoon()。 case MAP: process_Map()。 }// 二級(jí)菜單狀態(tài)開(kāi)關(guān)邏輯處理 switch (secondState) { case SEARCH_AROUND: process_SearchAround()。 case LOOKUP_HISTORY: process_LookupHistory()。 case SETTING: process_Setting()。 case HELP: process_Help()。 case ABOUT: process_About()。 case EXIT: process_Exit()。 }系統(tǒng)繪制使用switch判斷當(dāng)前當(dāng)前狀態(tài)選擇對(duì)應(yīng)的繪制處理方法,實(shí)現(xiàn)代碼如下: // 一級(jí)主狀態(tài)界面繪制 switch (firstState) { case WELCOME: draw_Wele(g)。 case CARTOON: draw_Cartoon(g)。 case MAP: draw_Map(g)。 }// 二級(jí)菜單狀態(tài)界面繪制 switch (secondState) { case SEARCH_AROUND: break。 break。 break。 break。 break。 break。 break。 break。 break。 case LOOKUP_HISTORY: keyPressed_LookupHistory(keyCode)。 case SETTING: keyPressed_Setting(keyCode)。 case HELP: keyPressed_Help(keyCode)。 case ABOUT: keyPressed_About(keyCode)。 case EXIT: keyPressed_Exit(keyCode)。 }系統(tǒng)按鍵釋放使用switch判斷當(dāng)前當(dāng)前狀態(tài)選擇對(duì)應(yīng)的按鍵釋放處理方法,實(shí)現(xiàn)代碼如下: // 一級(jí)主狀態(tài)按鍵釋放處理 switch (firstState) { case WELCOME: keyReleased_Wele(keyCode)。 case CARTOON: keyReleased_Cartoon(keyCode)。 case MAP: keyReleased_Map(keyCode)。 } // 二級(jí)菜單狀態(tài)按鍵釋放處理 switch (secondState) { case SEARCH_AROUND: break。 break。 break。 break。 break。 break。 break。 break。 break。 case LOOKUP_HISTORY: keyRepeated_LookupHistory(keyCode)。 case SETTING: keyRepeated_Setting(keyCode)。 case HELP: keyRepeated_Help(keyCode)。 case ABOUT: keyRepeated_About(keyCode)。 case EXIT: keyRepeated_Exit(keyCode)。 } 客戶端各狀態(tài)具體實(shí)現(xiàn)(1) 歡迎狀態(tài)下圖62為系統(tǒng)啟動(dòng)時(shí)歡迎界面,后臺(tái)啟動(dòng)初始化線程、讀取GPS數(shù)據(jù)線程和XML包發(fā)送接收線程。主要包括初始化、出場(chǎng)、邏輯處理、繪制、按鍵按下、按鍵釋放、重復(fù)按鍵等方法。 // 歡迎界面出場(chǎng)處理 ()。if (initializationSign != 1) { if (0 == initializationSign) { if (!()) {// 啟動(dòng)初始化線程,顯示系統(tǒng)初始化信息 ()。 } else if (1 == initializationSign) { } } else if (readGPSDataSign != 1) { if (0 == readGPSDataSign) { if (!()) {// 啟動(dòng)讀GPS數(shù)據(jù)線程,與藍(lán)牙GPS信號(hào)接收器通信
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1