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