【文章內(nèi)容簡(jiǎn)介】
統(tǒng)一,讓 Java 的范圍擴(kuò)展到所有電子設(shè)備開發(fā)上。按照現(xiàn)在的發(fā)展速度,J2ME 很快將被廣泛應(yīng)用于消費(fèi)和嵌入式設(shè)備中。J2ME 主要適用于小型嵌入式設(shè)備 [2],這些設(shè)備與 PC 或是服務(wù)器設(shè)備相比沒有統(tǒng)一的硬件標(biāo)準(zhǔn)、外觀與操作方式,其功能也是千差萬別的。但是 J2ME 在適用于這些設(shè)備的同時(shí)也保留了 Java 的傳統(tǒng)特性,即任何時(shí)候和任何地點(diǎn)的代碼具有可移植性、部署靈活性、安全的網(wǎng)絡(luò)傳輸性,以及代碼穩(wěn)定性。西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì)) MIDlet 程序開發(fā)的基本方法如圖 21 示在 MIDlet 程序 [3]開發(fā)開發(fā)過程中,一般有以下幾步:1 . 編 寫 源 文 件2 . 編 譯 預(yù) 校 驗(yàn)3 . 模 擬4 . 打 包* . j a v a* . c l a s s* . c l a s s* . j a r聲 音 圖 片 文 件清 單 文 件圖 21 MIDlet 程序開發(fā)的基本方法a.編寫源代碼,生成 .java 文件。 b.編譯、預(yù)校驗(yàn), 文件。c.在模擬器上運(yùn)行并測(cè)試。d.打包生成 jar 文件。 西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì))3 需求分析 對(duì)系統(tǒng)功能的定義該系統(tǒng)具有的基本操作的描述如下:a.撥打電話。b.短信發(fā)送。c.電話薄。d.計(jì)算器。e.簡(jiǎn)單聊天。f.多媒體演示。g.動(dòng)畫演示。手機(jī)模擬系統(tǒng)的 User Case[4]如圖 31:用戶短信發(fā)送電話簿多媒體聊天動(dòng)畫撥打電話計(jì)算器圖 31 User Case 用例描述 用戶撥打電話用例描述[引言]西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì))用戶進(jìn)行模擬打電話操作。[主事件流]用戶在界面上選擇“打電話”的圖標(biāo)按鈕時(shí),用例開始。用戶通過按鍵輸入電話號(hào)碼,按“撥打電話”按鈕進(jìn)行撥號(hào)。若電話號(hào)碼不可以使用,系統(tǒng)提示撥打異常,若可用則提示成功。[異常事件流]用戶可以在打電話主界面按“返回”按鈕時(shí),該用例結(jié)束。[異常事件流]用戶按“撥打電話”按鈕進(jìn)行提交時(shí),若用戶輸入的電話號(hào)碼不能使用時(shí)系統(tǒng)提示撥打異常,若可用則提示成功。 用戶短息發(fā)送用例描述[引言]用戶進(jìn)行模擬短息的發(fā)送和接收操作。[主事件流]用戶在界面上選擇“收發(fā)短信”的圖標(biāo)按鈕時(shí),用例開始。用戶通過按鍵選擇是“發(fā)短信”還是“收短信” 。若是發(fā)短信則輸入收信人號(hào)碼和發(fā)送內(nèi)容,若發(fā)送成功,在收信人處會(huì)提示接收到信息,否則返回當(dāng)前界面。若選擇收短信,處于接收信息狀態(tài),若收到信息則提示收到信息,否則放回上一界面。[異常事件流]用戶可以在收發(fā)短息主界面按“返回”按鈕時(shí),該用例結(jié)束。[異常事件流]用戶按“發(fā)信息”成功,則收信人處會(huì)提示接收到信息且都返回當(dāng)前界面。 用戶進(jìn)行電話薄用例描述[引言]用戶進(jìn)行電話薄操作。[主事件流]用戶在界面上選擇“電話薄”的圖標(biāo)按鈕時(shí),用例開始。用戶通過按鍵選擇“電話本” 。若在選擇“添加電話”按鈕 ,用戶輸入姓名和電話,按確定則添加成功。若選擇“刪除電話”按鈕和選中電話,則刪除電話成功。[異常事件流]用戶在電話薄主界面按“返回”按鈕時(shí),該用例結(jié)束。 用戶進(jìn)行計(jì)算器操作用例描述[引言]用戶進(jìn)行計(jì)算器操作。[主事件流]西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì))用戶在界面上選擇“計(jì)算器”的圖標(biāo)按鈕時(shí),用例開始。用戶通過方向鍵選擇需要的運(yùn)算符和運(yùn)算數(shù),并選擇“=”得到結(jié)果并顯示在屏幕上。[異常事件流]用戶可以在計(jì)算器主界面按“返回”按鈕時(shí),該用例結(jié)束。 用戶進(jìn)行動(dòng)畫演示操作用例描述[引言]用戶進(jìn)行動(dòng)畫演示操作。[主事件流]用戶在界面上選擇“動(dòng)畫”的圖標(biāo)按鈕時(shí),用例開始。用戶通過暫停和繼續(xù)按鈕來控制小球的大小計(jì)位置。[異常事件流]用戶可以在動(dòng)畫演示主界面按“返回”按鈕時(shí),該用例結(jié)束。 用戶進(jìn)行多媒體操作用例描述[引言]用戶進(jìn)行多媒體操作。[主事件流]用戶在界面上選擇“多媒體”的圖標(biāo)按鈕時(shí),用例開始。用戶通過選擇播放視頻的路徑,找到要播放的視頻文件,在進(jìn)行進(jìn)一步操作。[異常事件流]用戶可以在“多媒體”主界面按“返回”按鈕時(shí),該用例結(jié)束。 用戶進(jìn)行聊天操作用例描述[引言]用戶進(jìn)行聊天操作。[主事件流]用戶在界面上選擇“聊天”的圖標(biāo)按鈕時(shí),用例開始。用戶通過選擇自己是服務(wù)器還是客戶端并確定通信端口,在進(jìn)行服務(wù)器和客戶端之間的通信。[異常事件流]用戶可以在“聊天”主界面按“返回”按鈕時(shí),該用例結(jié)束。西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì))4 概要設(shè)計(jì) 系統(tǒng)框架設(shè)計(jì)該系統(tǒng)分為七大功能模塊,都是在 Windows 平臺(tái)下模擬實(shí)現(xiàn)的,具體含有客戶端、服務(wù)器。本系統(tǒng)的所有功能中所涉及的客戶端和服務(wù)器 [5]都是在本地連接上。業(yè)務(wù)邏輯層:主要負(fù)責(zé)與客戶端服務(wù)器端通信、處理業(yè)務(wù)數(shù)據(jù)等功能。具體的主要系統(tǒng)框架如圖 41 所示:客戶端 業(yè)務(wù)邏輯層 服務(wù)器圖 41 系統(tǒng)框架 對(duì)象行為模型用戶通過主界面菜單和用戶界面導(dǎo)航,可以進(jìn)行各種操作。用戶的操作都是通過選擇或輸入數(shù)據(jù),然后由類發(fā)送請(qǐng)求并調(diào)用相應(yīng)的業(yè)務(wù)邏輯方法,將結(jié)果返回給客戶端或返回錯(cuò)誤的響應(yīng)代碼。具體的對(duì)象行為模型如圖 42 所示:用戶界面類 連接類 業(yè)務(wù)邏輯類提交請(qǐng)求調(diào)用邏輯方法返回結(jié)果返回結(jié)果圖 42 對(duì)象行為模型 系統(tǒng)狀態(tài)變遷圖西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì))當(dāng)用戶啟動(dòng)應(yīng)用程序后,用戶可以進(jìn)行各種操作。當(dāng)用戶選擇退出時(shí),退出應(yīng)用程序。具體的系統(tǒng)狀態(tài)變遷圖如圖 43 所示:進(jìn)入系統(tǒng)啟動(dòng)退出系統(tǒng)啟動(dòng)退出銷毀 圖 43 系統(tǒng)狀態(tài)變遷圖西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì))5 詳細(xì)設(shè)計(jì) 用戶界面的設(shè)計(jì)用戶界面是應(yīng)用程序用于與用戶進(jìn)行交互 [6]。 提供了豐富的高級(jí) GUI和低級(jí) GUI 組件以及事件處理機(jī)制,可構(gòu)建直觀的用戶界面。 PNG 圖片格式PNG(Portable Network Graphics)格式是 MIDlet 唯一支持的圖像格式,PNG 具體格式由 PNG Specification,Version 定義的。PNG 格式提供透明背景的圖像,這對(duì)繪制九宮格界面極有幫助,使用 Image 類中的 createImage 函數(shù)可從屏幕上畫圖。 九宮格主菜單在 MIDP 圖形用戶界面組件中,List 非常適合做菜單,其可移植性非常出色。不足之處在于表現(xiàn)形式比較單一,對(duì)用戶的視覺沖擊不夠。本科課題的主菜單采用九宮格的設(shè)計(jì)方案,可以彌補(bǔ)以上的不足。九宮格主菜單的具體內(nèi)容如圖 51 所示: 圖 51 系統(tǒng)主菜單 主菜單實(shí)現(xiàn)的原理和過程a.準(zhǔn)備一張 PNG 圖片,上面繪制 9 個(gè)表示各個(gè)功能的小圖標(biāo)。b.用 (28,28) 創(chuàng)建 9 個(gè)小圖片,再轉(zhuǎn)換坐標(biāo)繪制九個(gè)小圖片。 代碼如下:西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì)) try{ for(int k = 0。 k 9。 k++) img[k] = (/img+k+.png)。 //創(chuàng)建9個(gè)小圖片 }catch(Exception ex){ ()。 }c.定位九個(gè)圖片具體位置:手機(jī)菜單要適合不同的手機(jī)屏幕,所以表示功能的小圖片要設(shè)計(jì)得大小適宜。定位算法:手機(jī) X 軸定位:?jiǎn)卧駥?(i%3)+(單元格寬小圖片寬)/2手機(jī) Y 軸定位:?jiǎn)卧窀?(i/3)+(單元格高小圖片高)/2d.當(dāng)用戶用上下鍵有左右鍵時(shí),可以選擇菜單功能,主要是產(chǎn)生 0 到 8 這九個(gè)數(shù)字。 各功能界面的設(shè)計(jì)用戶可以從主菜單點(diǎn)確定進(jìn)入任何一個(gè)功能界面,且每一個(gè)顯示界面值可以完成一個(gè)單一的簡(jiǎn)單的功能。應(yīng)用程序中的大部分事件處理都是由兩個(gè)動(dòng)作發(fā)出的:下一步(或提交)和返回(或取消) 。下一步是指完成了當(dāng)前的任務(wù),需要進(jìn)入下一個(gè)界面。返回是指返回到當(dāng)前界面的前一個(gè)界面。在 UI 的構(gòu)造器中將前面或后面的界面?zhèn)鬟f到當(dāng)前對(duì)象,用這個(gè)方法來解決前進(jìn)或后退的問題雖然可行,但這樣做會(huì)導(dǎo)致界面之間的耦合度大大提高,如果需求發(fā)生變化,重構(gòu)的工作量較大,程序不易維護(hù),所以在這里用到了回調(diào)的模式 [7],加強(qiáng)程序的封裝性,提高了程序的獨(dú)立性。 主要類分析以下是主菜單所需要的類之間的關(guān)系如圖 52:M e n u C a n v a s m y C a n v a sC a n v a sP h o n e S y s t e m圖 52 系統(tǒng)主菜單類間關(guān)系a.Canvas 類 [8](系統(tǒng)自定義類)西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì))為了能有程序開發(fā)人員控制接口的外觀和行為,需要使用大量的初級(jí)用戶接口類,尤其在界面開發(fā)中,幾乎完全依賴的就是 Canvas 抽象類進(jìn)行繪圖。從程序開發(fā)的觀點(diǎn)看,Canvas 類可與高級(jí) Screen 類交互,程序可在需要時(shí)在 Canvas 中摻入高級(jí)類的組件。Canvas 提供了鍵盤事件,并定義了允許將鍵盤按鍵映射為游戲控制鍵的函數(shù)。鍵盤事件由鍵代碼指定,應(yīng)當(dāng)將鍵代碼轉(zhuǎn)換為游戲鍵的代碼,以便硬件開發(fā)商能定義他們自己的鍵布局。b.myCanvas 類 該類繼承了 Canvas 類,實(shí)現(xiàn)九宮格主菜單的畫法,可用于鍵盤控制選擇菜單,方便了用戶操作。c.PhoneSystem 類 該類是系統(tǒng)的主類,繼承了 ,負(fù)責(zé)創(chuàng)建程序的主菜單,并啟動(dòng)應(yīng)用程序。d.MenuCanvas 類 該類實(shí)現(xiàn)不同功能界面與主界面的連接。 撥打電話功能的設(shè)計(jì) 設(shè)計(jì)目標(biāo)為用戶提供發(fā)送打電話的功能。 類設(shè)計(jì)該功能的實(shí)現(xiàn)由一個(gè)類實(shí)現(xiàn),它與系統(tǒng)類之間關(guān)系如圖 53:F o r mC a l l D e m o 接口 C o m m a n d L i s t e n e r圖 53 撥打電話類間關(guān)系a.From 類(系統(tǒng)自定義類)From 類是 Screen 的子類,其對(duì)象是 Item 組件的容器,可以直接設(shè)置在屏幕上。Item 組件不可以直接設(shè)置在屏幕上,需要放置在一個(gè) From 對(duì)象上才可以顯示在屏幕上。b.CommandListener 接口CommandListener 接口主要是為顯示對(duì)象添加命令按鈕的監(jiān)聽器,這樣用戶在西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì))按下命令按鈕式,才會(huì)觸發(fā)命令按鈕的處理代碼。其定義了一個(gè) CommandAction()方法。c.CallDemo 類主要實(shí)現(xiàn)打電話界面,其獲取輸入的電話號(hào)碼并進(jìn)行撥打。 主要代碼分析該類主要調(diào)用了 MIDlet 的一個(gè) platformRequest()方法,主要用于申請(qǐng)?jiān)O(shè)備區(qū)處理指定的操作。其在程序中的使用如下: (tel:+())。由于在模擬器上不可以運(yùn)行,因?yàn)閾艽螂娫捫枰{(diào)用手機(jī)中的電話程序。在這里對(duì)其進(jìn)行異常的處理。 運(yùn)行效果 圖 54 打電話主界面 圖 55 提示界面 收發(fā)短息功能的設(shè)計(jì) 知識(shí)點(diǎn)介紹本功能的設(shè)計(jì)用到無線消息 (JSR205 規(guī)范定義的可選包) [9],它提供了發(fā)送、接收無限消息的功能。無線消息 API 定義在 包中,該包定義了 6 個(gè)接口、2 個(gè)類。本功能主要用到 MessageConnection、Message、TestMessage、M