附錄 A


應用程式示範

本附錄描述 Sun JavaTM Wireless Toolkit for CLDC 所附帶的應用程式示範。


A.1 簡介

Sun JavaTM Wireless Toolkit for CLDC 包含一些示範應用程式,以特別介紹模擬器所支援的一些技術與 API。這些示範的目的是要讓您大致瞭解一下模擬器的一些 API 功能與整個工具組的增強功能。

表格 A-1 列出此發行版本包含的所有示範應用程式。

大部分示範應用程式的執行方式都很簡單。 第 A.2 節 一般指示包含執行大部分示範的說明。表格 A-1 中列出了包含其他文件的示範的連結。如果沒有連結,代表這個示範很簡單 (或有自己的說明),一般說明已足夠。

每個示範應用程式的原始碼位於 toolkit/apps 目錄中。子目錄內包含專案,而且每個專案各有一個內含 Java 程式設計語言原始碼的 src 目錄。例如,在 Windows 中,如果工具組安裝在 $$$C:\WTK2.5.2 中,則 WMADemo 中 SMS 寄件者 MIDlet (example.sms.SMSSend) 的原始碼就位於 $$$C:\WTK2.5.2\apps\WMADemo\src\example\sms\SMSSend.java 中。如第 1.1.2 節 工作目錄 檔案中所討論,當您開啟某個專案時會將其複製到您的 workdir/apps 目錄。


表格 A-1 應用程式示範

示範

API

描述

特殊指示

AdvancedMultimedia Supplements

JSR 234 Advanced Multimedia Supplements

展示 3D 音效、迴聲、影像處理和相機控制。

A.3

Audiodemo

MMAPI 1.1

示範音效功能,包含混音以及配合動畫一起播放音效。

 

BluetoothDemo

JSR 82 Bluetooth

示範使用藍芽探索裝置與交換資料。

A.4

CHAPIDemo

JSR 211 CHAPI

也利用 MediaHandler 的內容檢視器。

A.5

CityGuide

JSR 179 Location API

展示根據目前位置顯示地標的市區地圖。

A.6

Demos

MIDP 2.0

包含各種不同範例: 動畫、色彩、網路、財務及其他。

A.7

Demo3D

JSR 184 Mobile 3D Graphics

包含示範如何使用立即模式與保留模式兩種 3D 圖形的 MIDlet。

A.8

FPDemo

CLDC 1.1

簡單的浮點計算機。

 

Games

MIDP 2.0

包含 TilePuzzle、WormGame 和 PushPuzzle。

 

GoSIP

JSR 180 SIP

示範使用 SIP 和 SIP 伺服器啟動聊天功能

A.9

i18nDemo

JSR 238 Mobile Internationalization API

包含字串排序、數字格式化和片語翻譯機。

A.10

JBricks

JSR 229 Payment API

使用 Payment API 購買額外生命或等級的遊戲。

A.11

JSR172Demo

Web Services

示範如何使用 JSR 172 API 從 MIDlet 連接到 Web 服務。

A.12

MobileMediaAPI

MMAPI 1.1

示範 MMAPI 功能,包含鈴聲序列、MIDI 播放、取樣的音效播放與視訊。

A.13

NetworkDemo

MIDP 2.0

展示如何使用資料封包與串列連線。

A.14

ObexDemo

JSR 82 OBEX

示範透過 IrDA 使用 OBEX 傳輸資料。

A.15

OpenGL?ES Demo

JSR 239 OpenGL?ES

展示如何使用 OpenGL?ES 建立 3D 圖形。

 

PDAPDemo

JSR 75 PIM 和 FileConnection

示範如何處理連絡人、行事曆項目和待辦事項。示範存取本機檔案。

A.16

Photoalbum

MIDP 2.0

示範各種不同影像格式。

 

SATSADemos

JSR 177 SATSA

示範與智慧卡和 SATSA 的其他功能通訊。

A.17

SATSAJCRMIDemo

JSR 177 SATSA

展示如何使用 SATSA-Java Card RMI。

A.18

SIPDemo

JSR 180 SIP

使用 SIP 進行簡單訊息交換。

A.19

SnapMobileSample

 

示範連線多人遊戲功能。

 

SVGContactList

JSR 226 SVG API

示範以不同的面板顯示連絡人清單。

A.20

SVGDemo

JSR 226 SVG API

展示描繪 SVG 的不同技術。

A.21

UIDemo

MIDP 2.0

展示 MIDP 2.0 使用者介面功能的廣度

 

WMADemo

WMA 2.0

展示如何傳送及接收 SMS、CBS 與 MMS 訊息。

A.22


 


A.2 一般指示

大部分示範應用程式可在執行後無需特殊準備便可啟動。但是,某些示範需要變更工具組偏好或設定。這一節描述一般程序。

第一個步驟是執行工具組。若要執行此動作,請移至 Microsoft Windows 的 [開始] 功能表,選擇 [開始] > [所有程式] > [Sun Java Wireless Toolkit 2.5.2 for CLDC] > [Wireless Toolkit 2.5.2]。將顯示使用者介面,如圖 A-1 中所示。

圖 A-1 Wireless Toolkit 使用者介面


預設主視窗使用者介面

按一下 [開啟專案] 按鈕,開啟示範應用程式。會顯示所有可用應用程式的清單。如第 1.1.2 節 工作目錄檔案中所討論,安裝目錄中的專案為斜體,而您工作目錄中的專案以粗體顯示 (圖1-1 )。當您開啟安裝目錄中的某個專案時,會在您的工作目錄中建立一個副本,然後開啟。

開啟應用程式後,您可以按工具列上的 [執行] 按鈕;或者如果需要在模擬器上安裝,則請按一下 [專案] > [經由 OTA 執行]。

開啟裝置模擬器視窗,顯示執行中的示範應用程式。如果有 MIDlet 的功能表,請使用導覽箭頭選擇一個項目,然後選擇 [選取]。示範進行時,您可能需要按下左側或右側螢幕下的軟鍵之一。使用軟鍵可以安裝或啟動應用程式、開啟功能表、結束或執行某些其他動作。某些範例包含這些指令。

有些示範需要特定設定與指示。例如,如果某個範例使用 Web 服務並且您在防火牆後方,則您必須配置模擬器的代理伺服器設定,否則示範將失敗:

如需更多操作指示,請閱讀每個示範的說明。


A.3 Advanced Multimedia Supplements

此 MIDlet 套裝軟體示範了 JSR 234 Advanced Multimedia Supplements (AMMS) 的功能。它包含以下 MIDlet:

圖 A-2 在 MIDlet 中處理影像


先以正常效果,然後以曝光效果顯示的飛機照片的影像效果 MIDlet


A.4 藍芽示範

此應用程式包含示範如何使用 JSR 82 藍芽 API 的 MIDlet。

BluetoothDemo 專案展示如何在兩個使用藍芽的裝置之間傳輸影像。您必須執行兩個模擬器實例,才能瞭解此示範的運作方式。

在第一個模擬器中,啟動 [藍芽示範],然後選擇 [伺服器]。模擬器會詢問您是否允許藍芽連線。選擇「是」。伺服器會啟動,並顯示影像清單。一開始,藍芽網路上沒有任何可用的影像。若要使影像可用,請選取這些影像,然後從功能表選擇 [發佈影像] (或鍵入或按一下 1)。圖示顏色會從紫色變為綠色,表示已經發佈。

圖 A-3 執行藍芽示範伺服器


已選取 Duke png 的藍芽示範影像清單

在第二個模擬器上,啟動 [藍芽示範],然後選取 [用戶端]。MIDlet 會告訴您,已準備好搜尋影像。按一下 [尋找] 軟式按鈕。MIDlet 會尋找其他模擬器,並從中取得影像清單。從清單中選取一個影像,並選擇 [載入]。模擬器會詢問您是否允許連線。選擇「是」。

圖 A-4 使用模擬藍芽傳輸的影像



A.5 CHAPIDemo

CHAPIDemo 是一個內容瀏覽器 (請參閱 JSR 211), 裡面保留一個我的最愛清單,並可讓您選取與檢視各種內容。

本示範使用內容處理器註冊表,因此您使用 [執行] 按鈕時無法看到其所有功能。請改用 [專案] > [經由 OTA 執行] 將應用程式安裝至模擬器。如果不知道如何執行,請查閱第 2.3.2 節 安裝

安裝完 CHAPIDemo 後,會在 [文字檢視器] 中顯示為應用程式清單。它是純文字的 MIDlet 內容處理器。選取 [文字檢視器],然後從軟式按鈕功能表中選擇 [啟動]。會顯示我的最愛連結清單。

圖 A-5 檢視 CHAPIDemo 中的我的最愛連結


已選取 [新建] 選項的 CHAPIDemo 連結清單

使用導覽鍵高亮度顯示 CHAPIDemo,然後按下模擬器上的 [選取]。應用程式會詢問是否可以使用通話時間。按下 [是] 軟式按鈕。會顯示各種類型內容的清單 (圖 A-6)。

圖 A-6 內容清單


CHAPIDemo 內容清單顯示要安裝的媒體播放器

嘗試選取一個 Duke.png。使用箭頭高亮度顯示該連結,然後按下 [選取] 以檢視此檔案。使用 CHAPI 啟動 ImageViewer MIDlet,並會顯示內容。

圖 A-7 檢視 PNG 影像


顯示 Duke PNG 影像的影像檢視器

其他類型的內容需要另一個內容處理器 MIDlet 套裝軟體︰MediaHandler。若要從 CHAPIDemo 安裝此套裝軟體,請選取 MediaHandler.jad 連結 (圖 A-6 中所示清單中的第一個項目)。會呼叫 AMS,並引導您完成整個安裝。

安裝完 MIDlet 套裝軟體之後,您可以檢視 [文字檢視器] 中列出的其他類型內容。例如,選取 http:video/test-mpeg.mpg 以查看一系列影像 (包括圖 A-8 中顯示的影像)。

圖 A-8 使用 MediaHandler 檢視 MPEG 電影


檢視顯示黃光與紅光的 MPEG 電影的 MediaHandler。

若要檢視 TextViewer 和 ImageViewer MIDlet 的內容處理器設定,請按一下 [設定],然後按一下 [內容處理器] 圖示。您可能還希望檢查 MediaHandler 專案。


A.6 CityGuide

CityGuide 會示範如何使用位置 API (JSR 179)。它可在市區地圖上顯示行人的目前位置。行人會在市區內移動,行人接近地標時,地標也會高亮度顯示並註明。在此示範中,我們透過名稱為 citywalk.xml (事件檔案) 的 XML 程序檔取得行人的位置,該程序檔可提交裝置位置資訊。請參閱第 13 章以獲得完整說明。

由於位置提示會經常出現,因此最佳方法是以製造商 (可信任) 模式執行此示範,如第 6.2.1 節 MSA 保護網域中的解釋。在使用者介面中,選取 [編輯] > [偏好],然後選取 [安全]。為安全網域選擇 [製造商]。

開啟並執行 CityGuide 專案。在模擬器中,啟動 CityGuide MIDlet。按 [下一步] 以檢視地圖頁面。

圖 A-9 您在城市中的位置


CityGuide 示範應用程式顯示您在城市中的位置

從模擬器視窗功能表中選擇 [MIDlet] > [外部事件]。在 [位置] 標籤上,按一下 [瀏覽] 按鈕。選取 workdir\apps\CityGuide\citywalk.xml 中的以下事件檔案。

視窗底部的播放器按鈕現在正在使用中。請參閱圖 13-1。按下綠色播放按鈕 (向右指的三角形) 以執行程序檔。

顯示螢幕出現四種類型的地標: 餐廳、博物館、商店和電影院。若要調整地標顯示,請開啟軟式功能表並選擇 [設定] 指令。請參閱圖 A-10。使用導覽鍵高亮度顯示某個種類,然後使用 [選取] 核取或取消核取某個項目。

當您在某個地標 (如地圖上高亮度顯示的地標所示) 附近時,請開啟軟式功能表並選擇 [詳細資訊] 指令,以查看更多資訊。如需有關位置程序檔的更多資訊,請參閱 第 13 章

圖 A-10 位置設定


[位置設定] 對話方塊

圖 A-11 地標詳細資訊


地標詳細資訊。


A.7 示範

本示範包含幾個 MIDlet,強調不同的 MIDP 功能。

A.7.1 色彩

此應用程式會顯示一個大塊橫向矩形,跨越整個螢幕寬度。下面有十個小塊縱向矩形,橫跨整個螢幕。最後有三條水平色棒,分別顯示藍、綠和紅色 (RGB) 的值。系統會根據第一個功能表的選取,以十進位 (0-255) 或十六進制 (00-ff) 數字表示值。

A.7.2 特性

此 MIDlet 會顯示特性值。例如,請參考圖 A-12

圖 A-12 系統特性


顯示包括記憶體和 microedition 資訊在內的系統內容

A.7.3 Http

此測試應用程式使用 HTTP 連線請求網頁。請求是透過 HTTP 協定 GETPOST 方法發佈的。如果已使用 HEAD 方法,則會從請求讀取 HEAD 特性。

準備執行示範

開始之前,請按以下程序檢查您的設定。

執行示範

啟動 Http MIDlet。依預設,MIDlet 嘗試聯絡 http://www.yahoo.com。若要進行測試,請選擇 [功能表] 軟鍵並選擇 1、2 或 3 測試所選 URL。

[Http 測試] 會傳回自己能取得的資訊。如果資訊填滿螢幕,請使用向下箭頭捲動到結尾。資訊量取決於請求類型和此頁面提供的 META 資訊量。若要提供內文資訊或內容,此頁面必須依 RFC 2616 中的描述宣告 CONTENT-LENGTH

使用功能表選項

使用 [功能表] 軟鍵進行以下動作。

A.7.4 FontTestlet

此 MIDlet 展示各種可用字型: Proportional、Regular、Regular Italic、Bold Plain 和 Bold Italic。從功能表中選擇 1 或 2,以在系統字型 (細明體) 和固定間距字型間切換。

A.7.5 股票

正如 Http 示範,此範例使用 HTTP 連線獲得資訊。使用與第 A.7.3 節 Http 相同的準備步驟。

執行示範專案並啟動 Stock MIDlet。

依預設,畫面會在頂部顯示空的快訊列。快訊下方的功能表清單會顯示四個應用程式: 「Stock Tracker (股票追蹤器)」、「What If?」、 「Alerts (警報)」和「Settings (設定)」。使用前三個應用程式之前,您必須增加股票代號。

A.7.5.1 使用設定

若要使用此應用程式的功能,您必須為應用程式提供一些股票代號才能使其運作。

將股票代號增加到快訊

若要將股票代號增加到快訊,請使用導覽箭頭選取 [設定]。

選取 [新增股票]。

螢幕會提示您輸入股票代號。鍵入 SUNW 並選取 [完成] 軟鍵。您增加的股票和目前價格會顯示在快訊中。增加更多代號,例如 IBM 和 HPQ。

變更更新間隔

依預設,更新間隔為 15 分鐘。選取 [更新] 以變更時間間隔。使用導覽箭頭選取[連續]、[15 分鐘]、[30 分鐘]、[1 小時] 或 [3 小時] 中的一個選項。選取 [完成] 軟鍵。

移除股票

選取 [移除股票]。可以看到您已增加的股票清單。使用導覽鍵選取一個或多個要移除的股票。選擇 [完成] 軟鍵。

A.7.5.2 股票追蹤器

股票追蹤器可顯示您已增加的股票及其現值清單。股票追蹤器可顯示有關已選取股票的其他資訊,例如,最後成交價和最高價與最低價。

選擇一種股票並按下 [選取]。

A.7.5.3 What If?

What If? 是一個應用程式,會詢問您擁有股票的原始購買價格和股數。它可根據目前價格計算損益。

選取股票代號。

輸入購買價格和股份,然後按下 [計算]。

A.7.5.4 警報

當價格變更為您指定的值時,此應用程式會傳送給您一則通知。

從主功能表中選取 [警報]。

選取 [增加]。

選取 [股票]。螢幕會顯示提示 [股票到達以下價格時發出警報]。輸入一個整數。

警報位於 [目前的警報] 清單中。若要移除某個警報,請按下 [移除] 並選取該警報。選擇 [完成] 軟鍵。

達到您指定的價格時,您會聽到鈴聲並收到一則訊息。例如,Symbol 已達到您的價格點 $value 並且目前正以 $current_value 價格成交。此警報觸發之後,便會從 [目前的警報] 清單中消失。

A.7.6 購票

示範線上購票拍賣應用程式的可能運作方式。主螢幕會在頂部顯示購票快訊。依預設,[選擇樂團] 欄位會顯示 [艾拉妮絲莫莉塞特]。

若要選擇樂團,反白顯示樂團名稱並按下 [選取]。使用向下箭頭反白顯示不同的樂團 (例如「魔比」),然後按下 [選取]。會顯示可用的拍賣。

若要投標,請選取 [功能表] 軟鍵並選擇 [2]。使用方向鍵在欄位間移動。填妥每個欄位。選取 [下一步] 軟鍵。應用程式會要求您確認您的投標。使用方向鍵反白顯示 [提交],然後按下 [選取]。您會收到一個確認碼。按一下 [樂團] 以返回到歡迎頁面。

若要設定警報,請選取 [功能表] 軟鍵並選擇 3。使用導覽箭頭移動到此欄位並鍵入一個高於目前投標價的值。選取 [儲存] 軟鍵。會返回到歡迎頁面。只要以超過警報值的價格投標,就會觸發警報。您的設定決定了應用程式檢查變更的頻率,因此可能要過幾分鐘才能聽到警報。

若要加入樂團,請選取 [功能表] 軟鍵並選擇 4。鍵入樂團名稱或用逗號隔開的名稱清單。選擇 [儲存] 軟鍵。確認後便會返回到歡迎頁面。增加的樂團顯示在 [選擇樂團] 下拉式清單中。



備註 - 這只是個示範。若要完整描述樂團,您必須編輯檔案 workdir\apps\Demos\src\example\auction\NewTicketAuction.java



若要移除樂團,請選取 [功能表] 軟鍵並選擇 5。導覽至某個樂團,然後選擇 [選取] 以標記核取方塊。您可以選擇多個樂團。選擇 [儲存] 軟鍵。

若要顯示快訊顯示、更新、警報音量和日期的目前設定,請選取 [功能表] 軟鍵並選擇 6。如果需要,請使用方向鍵和選取鍵變更這些值。選擇 [儲存] 軟鍵。

A.7.7 ManyBalls

此 MIDlet 一開始是一個球在螢幕中移動。使用向上、向下箭頭提高或降低球速 (fps)。使用向左、向右鍵增加或減少球數。


A.8 Demo3D

此應用程式包含三個 MIDlet,以顯示模擬器的 JSR 184 (Mobile 3D Graphics API) 支援。

A.8.1 Life3D

Life3D 以三度空間實作流行的生命之旅 (Game of Life)。活的細胞以立方體表示。每個細胞可能有 26 個鄰居 (包含對角)。在動畫的每個步驟中,少於四個鄰居的細胞會因為太寂寞而死掉,而多於五個鄰居的細胞則因為太擁擠而死掉。剛好四個鄰居的空細胞將會變成新的活細胞。

遊戲板的圖形會慢慢旋轉,讓您可以從各種角度看到遊戲板。

圖 A-13 三度空間的生命之旅


Life3D 遊戲

使用表格 A-2 中的小鍵盤按鈕控制遊戲。


表格 A-2 Life3D 的控制

按鈕

描述

0

暫停動畫。

1

以預設速度重新繼續動畫。

2

加快動畫的速度。

3

放慢動畫的速度。

4

從任意清單中選擇上一個預設配置。配置的名稱顯示在螢幕頂端。

5

選擇清單中的下一個預設配置。

*

產生隨機配置,並進行動畫模擬,直到達到穩定或死亡。如果死亡,便會產生新的隨機配置。


 

本範例的原始碼有非常完善的說明記錄。請參閱 toolkit\apps\Demo3D\src\com\superscape\m3g\wtksamples\life3d\Life3D.java

A.8.2 PogoRoo

PogoRoo 展示一隻袋鼠用彈簧單高蹻上、下彈跳。若要掌控袋鼠,請使用方向鍵。向上可以往前跳,向下往後跳,向左、向右則可以改變方向。您必須按住按鍵才能看到效果。

圖 A-14 彈跳中的袋鼠


向遠方彈跳的袋鼠的 PogoRoo 影像

A.8.3 retainedmode

retainedmode MIDlet 會播放一個場景的檔案,顯示一個永不疲倦的滑板選手,無止盡地繞圈圈。

圖 A-15 永不疲倦的滑板選手


顯示滑板選手繞圈圈影像的 retainedmode MIDlet


A.9 GoSIP

GoSIP 是一個聊天應用程式,以 SIP (JSR 180) 設定使用 SIP 代理伺服器和代理登錄的通訊。

由執行 SIP 伺服器開始。選擇 [檔案] > [公用程式]。選取 [啟動 SIP 伺服器],然後按下 [啟動]。會顯示 SIP 代理伺服器視窗。按一下 [啟動] 以執行此伺服器。

接著使用 GoSIP 應用程式執行兩個模擬器的範例。

圖 A-16 SIP 代理伺服器和代理登錄


[SIP 代理伺服器和代理登錄] 視窗一次顯示一個所列出的已註冊使用者

在第一個模擬器中,啟動 Sippy A。系統提示您輸入代理主機時,請輸入您的本地機器名稱或 IP 位址並選擇 [下一步],然後選擇 [註冊]。SIP 伺服器視窗會顯示模擬器的 SIP 訊息。在已註冊使用者的清單中會顯示 [Sippy A]。模擬器會建議您邀請您的朋友 Sippy B 交談。但現在還不要執行。

在第二個模擬器中,啟動 Sippy B。和之前一樣,輸入 SIP 代理伺服器的位址、選擇 [下一步],然後選擇 [註冊]。[Sippy B] 使用者會顯示在 SIP 伺服器視窗中。

在第一個模擬器中選擇 [邀請]。第二個模擬器會指示其正在響鈴。選擇 [接聽] 開始聊天。兩個模擬器現在均顯示 [聊天中] 螢幕。您可以使用 [傳送] 指令來回傳送訊息。

完成後,選擇 [再見] 結束聊天。


A.10 i18nDemo

此 MIDlet 套裝軟體展示 JSR 238 Mobile Internationalization API。MIDlets String Comparator 和 Formatter 展示如何排序字串以及針對不同的語言環境適當地顯示數字。第三個 MIDlet (MicroLexicon) 是一個小型片語翻譯程式,如果您需要在布拉格、赫茲利雅、北京、米蘭或幾個其他地方點杯啤酒,便可派上用場。



備註 - Sun JavaTM Wireless Toolkit for CLDC 的預設字型不支援中文和日文。若要使用這些語言,請在執行此示範之前執行以下步驟:

1. 安裝支援中文或日文的 True Type 字型。
2. 修改 toolkit\wtklib\devices\skin-directory\skin.properties 以指定該字型。



若要執行 MIDlet,請使用 [選取] 反白顯示此 MIDlet,然後使用右下按鈕啟動此 MIDlet。

String Comparator MIDlet 可示範每個語言環境的字串 (城市名稱) 排序之區別。啟動 MIDlet。使用右下按鈕檢視功能表。按一下或鍵入 2 以選取 [排序 - 預設],清單即會按字母順序排序。按一下或鍵入 3 以選取 [排序 - 斯洛伐克語]。不管頂部有沒有標記,都很容易看出以字母 Z 開頭的城市差別。按一下 [結束] 以返回到 MIDlet 的清單。

第二個 MIDlet (Formatter) 只是針對不同語言環境的格式顯示時間和數字。按一下 [下一步] 以檢視所有四個螢幕。按一下 [結束] 以返回到 MIDlet 的清單。

最後一個 MIDlet (MicroLexicon) 將片語從一種語言翻譯為另一種語言。若要從清單中選取目標語言,請使用導覽箭頭反白顯示 [選擇語言]。按一下 [選取] 以檢視語言下拉清單。使用導覽箭頭選擇一種語言 (請參考圖 A-17),然後按一下 [選取]。

圖 A-17 選擇目標語言


螢幕顯示已選取義大利語的 MicroLexicon MIDlet

MicroLexicon 顯示片語的清單。反白顯示一個片語,然後按下模擬器上的 [選取] 按鈕。您可以看到目標語言的旗標和已翻譯的片語。

若要變更來源語言,請選擇 [編輯] > [偏好]。按一下 [國際化] 標籤,然後輸入有效的語言環境字串。下次執行模擬器和 MicroLexicon 時,如果支援,指示文字就會以指定的語言環境顯示。例如,cs-CZ 就可行。

MicroLexicon 採用 MIDlet 資源。若要瞭解如何使用工具組來本地化應用程式,請選擇 [專案] > [國際化資源管理員]。會顯示所有資源,包括文字和影像 (由 MicroLexicon 使用)。您可以編輯資源,然後再次執行 MicroLexicon,看看有什麼變化。您無需再次生成應用程式,因為資源已經在執行階段載入。

圖 A-18 國際化資源管理員


顯示 i18bDemo 專案目錄中資源的 [國際化資源管理員]

$$$這些資源本身儲存於 workdir\apps\i18nDemo\res\global


A.11 JBricks

JBricks 是一個遊戲,示範了 JSR 229 Payment API 的使用。此遊戲類似 Breakout 或 Arkanoid (打磚塊)。在 JBricks 中,您可以購買生命或新的遊戲等級。Payment API 在背景處理細節。

若要使用 JBricks 的支付款項功能,請使用 [專案] > [經由 OTA 執行] 將 JBricks 安裝至模擬器。如果不知道如何執行,請查閱第 2.3.2 節 安裝

若要查看 JBricks 如何使用 Payment API,請從遊戲主功能表中選擇 [購買生命] 或 [購買等級]。接著選擇要購買一條生命,還是以優惠價格一次購買三條生命。下一個螢幕讓您選擇支付款項類型。

圖 A-19 選擇支付款項類型


JBricks payment API 示範如何使用信用卡介面購物

使用導覽箭頭選取以 [透過以下方式支付] 開頭的行。按一下 [選取] 按鈕以查看下拉式功能表中可能的信用卡介面。使用導覽箭頭選取 [VISA 介面],然後按一下 [選取]。按一下右下方的 [是] 以繼續進行。

然後,您便可以輸入信用卡資訊。使用任一有效的 VISA 號碼 (例如,4111111111111111) 和有效的過期日期。

圖 A-20 提供支付款項資訊


已提供範例資訊的信用卡支付款項表單

若要檢視目前模擬器實例的作業事件,請選擇 [MIDlet] > [外部事件],然後按一下[支付款項作業事件] 標籤。會顯示此特定模擬器實例的作業事件。

圖 A-21 檢視作業事件


已選取 [支付款項作業事件] 標籤的 [外部事件產生器]

此外,您可以檢視通過工具組的支付款項系統的所有作業事件。選擇 [檔案] > [公用程式],然後選取 [支付款項主控台]。主控台中的作業事件如下:


PSP Console running, using phone number +5550001.
PSP Server running at https://localhost:-1
Received Payment Request from 127.0.0.1
   Credit card issued by: VISA
   Credit Card type: 0
   Credit Card Number: 4111111111111111
   Credit Card Holder: Jonathan Knudsen
   Feature ID: 3_lives
   Credit Card Verification Number (CCV): 123
   Payload: null
Response to 127.0.0.1
HTTP/1.1 200 OK
Content-Length: 0
Pay-Response: SUCCESSFUL
Pay-Timestamp: 1156282954734

 


A.12 JSR172Demo

JSR172Demo 展示如何從 MIDlet 存取 Web 服務。Web 服務已經在網際網路伺服器上執行。如果您在防火牆後方,您必須配置模擬器的代理伺服器設定。選擇 [編輯] > [偏好],然後選取 [網路配置]。填入代理伺服器位址檔案以及連接埠號。生成並執行範例。

JSR172Demo 包含一個 MIDlet,名稱為 Server Script。請啟動它,並依照提示執行。您可以瀏覽模擬的新聞提要,所有這些資料都是從 Web 服務擷取下來的。

若要瞭解背景運作方式,請使用網路監視器。


A.13 MobileMediaAPI

MobileMediaAPI 應用程式包含四個展示工具組多媒體功能的 MIDlet。這一節描述這些 MIDlet,並包含從您的應用程式使用多媒體的其他資訊。

A.13.1 Simple Tones

Simple Tones 範例示範如何使用互動合成鈴聲。選取一個範例,然後按一下右下方的 [播放]。

A.13.2 Simple Player

Simple Player 應用程式會示範模擬器的音效與視訊功能範圍。它包含各種不同格式的範例檔,而且可以從模擬器的永久性儲存裝置或從 HTTP URL 播放檔案。

播放器部分使用通用的 javax.microedition.media.Player 介面。播放器會顯示長度、媒體時間和執行媒體檔的控制項。如果檔案提供中介資料,此播放器可讓您檢視這些資訊,例如作者與標題。對於 MIDI 檔案,如果檔案提供卡拉 OK 文字,則播放時螢幕上會顯示文字。如果提供圖形使用者介面控制項,也可在顯示螢幕上進行檢視。若要存取這些控制項,請在 [Simple Player] 中選取其中一個媒體範例,然後按下 [功能表] 按鈕,以檢視並選取需要的指令。

選取 [Simple Player],然後按一下 [啟動]。示範包含下列媒體範例:

此外,Simple Player 會剖析鈴聲文字傳輸語言 (RTTTL) 格式的鈴聲。如需 RTTTL 的詳細資訊,請參閱 http://www.convertyourtone.com/rtttl.html

[Simple Player] 包含控制媒體播放的通用指令集。這些指令列在 [Simple Player] 功能表上,而且有些指令有相關的小鍵盤按鈕。下表描述這些指令。


表格 A-3 Simple Player 指令

指令

按鍵

描述

靜音/取消靜音

0

關閉聲音,但重新繼續檔案。此指令切換成 [取消靜音]。

音量

* 與 #

提高或降低聲音大小。

中介資料

 

顯示媒體檔案所提供的資訊,例如版權資訊、標題與曲目清單等。

在 5 秒內停止

 

播放過程中,若設定此指令,要在 5 秒鐘內暫停播放音效。

速率

4 與 6

改變播放速率。

音樂速度

 

加快或放慢鈴聲序列或 MIDI 檔案的音樂速度。

音高

向上鍵頭與向下鍵頭

降低或升高 MIDI 檔的音調。

開始/停止錄音

 

錄製音效播放。在執行模擬器的目錄中建立一個檔案,內含錄製的音效。如果不指定檔案名稱,則建立的檔案名稱為 recording.wav。此指令會切換成 [停止錄音]。

逐步執行螢幕格

7 與 9

在視訊檔中,一次往前或往後跳動一格。

播放/停止

[2] 與
[選取]

開始或停止媒體。

迴圈模式

 

在播放完成後,立即播放音效檔。執行一次 [迴圈模式] 就會播放一次音效檔。按第二次會將檔案播放三次。按第三次則會一再重複播放檔案。按第四次則恢復單次播放。

跳過

1 與 3

往前或往後跳過媒體檔長度的 5%。聲音會與視訊同步。

倒轉

 

回到音效播放起點。

停止並倒轉

5

停止播放,並倒轉回起點。

快速說明

 

顯示指令與小鍵盤按鈕清單。


 

依 [Simple Player] 所播放的媒體類型而定,有些指令可能不適用。此外,有些指令可以用小鍵盤按鈕呼叫。下表描述可用的指令、其小鍵盤對等按鍵和 MMAPI 中相關的類別。

請注意,Simple Player 應用程式本身提供一份簡短的指令清單,和對應的小鍵盤按鈕。只要從功能表選擇 [快速說明] 指令即可取得。

A.13.3 Video

Video 應用程式演示模擬器如何播放 GIF 動畫檔與擷取視訊。在配備相機的實際裝置上,視訊擷取可用來告訴使用者,透過相機所能看到的內容。

使用 Form ItemCanvas 即可實作 GIF 動畫與視訊擷取。Video 示範包含所有可能性。Animated GIF - Form [jar] 會以 Form Item 方式顯示 GIF 動畫。表單也包含有關播放的一些資訊,包括目前時間。選擇 [快照] 指令可拍下執行中動畫的快照。快照將存放於跟在 GIF 動畫後面的表單中。

MPEG1 應用程式從 Web 獲得 MPEG,因此如果您在防火牆後方,則必須配置模擬器的代理伺服器設定。

選擇 [編輯] > [偏好],然後選取 [網路配置]。核取 [使用代理伺服器]。填入代理伺服器位址欄位以及連接埠號。對於此示範,請選取 [HTTP/1.0]。

當您播放此示範時,必須等幾秒鐘讓 WTK 獲得資料。MPEG1 示範分別與 Video Capture - Form 和 Video Capture - Canvas 具有相同的運作方式。

A.13.4 暫停音效測試

此 MIDlet 用於示範暫停的 MIDlet 未停止執行中的播放器時,Sun JavaTM Wireless Toolkit for CLDC 要如何向您發出警告。啟動 MIDlet 之後,請選擇 [播放] 指令以開始播放某些音效。螢幕會顯示狀態「正常」或「不正常」。

從模擬器視窗的功能表中選擇 [MIDlet] > [暫停]。就如預期的,MIDlet 會暫停且工具組主控台上不會顯示訊息。從模擬器視窗的功能表中選擇 [MIDlet] > [重新繼續]。

接著選擇 [不正常] 指令。再次暫停 MIDlet。在工具組主控台中,您會看到以下警告: An active media (subtype Player) resource was detected while the MIDlet is paused. (MIDlet 處於暫停狀態時偵測到使用中的媒體 [子類型播放器] 資源。) Well-behaved MIDlets release their resources in pauseApp(). (正常 MIDlet 釋放在 pauseApp() 中的資源。)

A.13.5 MobileMediaAPI 的屬性

MobileMediaAPI 應用程式有下列屬性,是您在專案設定對話方塊的 [用戶定義的] 標籤中可以修改的項目:


表格 A-4 MMAPI 特定 MIDlet 屬性的說明

屬性

描述

PlayerTitle-n

n 個要用 [Simple Player] MIDlet 播放的媒體標題名稱。

PlayerURL-n

n 個要用 Simple Player MIDlet 播放的媒體標題 PlayerTitle-n 之位置。

VideoTest-n

n 個要用 Video 應用程式播放的媒體標題名稱。

VideoTest-URLn

n 個要用 Video 應用程式播放的媒體標題 VideoTest-n 之位置。


 


A.14 網路示範

此示範有兩個 MIDlet: Socket Demo 和 Datagram Demo。每個示範都需要執行兩個模擬器實例,以便模擬伺服器和用戶端的關係。

A.14.1 Socket Demo

執行兩個模擬器實例。一個作為通訊端伺服器,另一個作為通訊端用戶端。

在第一個模擬器中,啟動應用程式,然後選取對等的伺服器。選擇 [啟動]。此模擬器說明此示範要透過網路傳送和接收資料,並詢問「Is it OK to use network? (是否可以使用網路?)」 選擇「是」。通訊端伺服器會顯示螢幕,表示正在等待連線。

在第二個模擬器中啟動應用程式、選取對等的用戶端,然後選擇 [啟動]。此模擬器說明此示範要透過網路傳送和接收資料,並詢問「Is it OK to use network? (是否可以使用網路?)」 選擇「是」。通訊端用戶端會顯示螢幕,表示已連接到伺服器。使用下導覽箭頭反白顯示 [傳送] 方塊。在 [傳送] 方塊中鍵入訊息,然後選擇 [傳送] 軟鍵。

例如在用戶端的 [傳送] 方塊中鍵入 [Hello Server] (請參考圖 A-22)。選擇 [傳送] 軟鍵。傳送期間模擬器會啟動藍燈。

圖 A-22 從通訊端用戶端傳送訊息


連接至伺服器的通訊端用戶端傳送「Hello Server」訊息。

在執行通訊端伺服器的模擬器上,狀態為: Message received - Hello Server (訊息已收到 - 您好,伺服器)。您可以使用向下箭頭移動到 [傳送] 方塊並鍵入回覆。例如,Hello Client, I heard you (您好,用戶端,我已收到您的訊息)。選取 [傳送]。請參閱圖 A-23

圖 A-23 伺服器顯示已收到的訊息和要傳送的訊息


通訊端伺服器顯示收到的訊息並傳送返回訊息

回到通訊端用戶端,狀態顯示伺服器傳送的訊息。在傳送新訊息之前,[傳送] 方塊內都會包含您之前傳送的訊息。

A.14.2 Datagram Demo

此示範類似 Socket Demo。

執行兩個模擬器實例。一個作為資料封包伺服器,另一個作為資料封包用戶端。

在第一個模擬器中,啟動 Datagram Demo,然後選取對等的伺服器。選擇 [啟動]。此模擬器說明此示範要透過網路傳送和接收資料,並詢問「Is it OK to use network? (是否可以使用網路?)」 選擇「是」。最初,資料封包伺服器狀態為 [等待連線],並且 [傳送] 為空。

在第二個模擬器中,啟動 Datagram Demo,選取對等的用戶端,然後選擇 [啟動]。此模擬器說明此示範要透過網路傳送和接收資料,並詢問「Is it OK to use network? (是否可以使用網路?)」 選擇「是」。資料封包用戶端的狀態為: 已連線到伺服器。使用下導覽箭頭反白顯示 [傳送] 方塊。在 [傳送] 方塊中鍵入訊息,然後選擇 [傳送] 軟鍵。例如,鍵入 [Hello datagram server (您好,資料封包伺服器)]。

在執行資料封包伺服器的模擬器上,狀態顯示為: Message received - Hello datagram server (訊息已收到 - 您好,資料封包伺服器)。您可以使用下箭頭移動到 [傳送] 方塊並鍵入對用戶端的回覆。

資料封包用戶端的狀態欄位顯示已從伺服器收到的訊息。[傳送] 方塊包含您傳送的最後一條訊息。


A.15 ObexDemo

此應用程式會展示如何使用 OBEX API,在模擬器實例之間傳輸影像檔。此示範會展示透過模擬的紅外線連線使用 OBEX 的方式。

執行兩個模擬器實例。一個偵聽內送的連線,另一個則嘗試傳送影像。在第一個模擬器中,啟動應用程式後選擇 [Obex 示範],然後選擇 [接收影像]。此模擬器說明 OBEX 連線允許其他裝置與您通話,並詢問「Is it OK to make the connection? (是否可以建立連線?)」 選擇「是」。偵聽程式模擬器會顯示螢幕,指出它正在等待內送的連線。

在第二個模擬器中 (寄件者),啟動 [Obex 示範],然後選擇 [傳送影像]。就會顯示影像清單。選取一個影像,並選擇 [傳送]。此模擬器說明示範要建立外送用戶端連線,並會詢問是否允許。選擇「是」。「傳送影像」公用程式會上傳影像。

在偵聽模擬器中,公用程式會顯示有關內送影像的資訊,並詢問「Would you like to receive it? (您是否願意接收?)」 請參閱圖 A-24

圖 A-24 提示接受連線的偵聽程式


第一個模擬器接收到第二個模擬器傳送的影像,並提示使用者接收影像。

選擇「是」。選取的影像就會透過模擬的紅外線連結傳輸,顯示在第一個模擬器上。請參閱圖 A-25

圖 A-25 成功傳輸影像


第一個模擬器收到的影像


A.16 PDAPDemo

PDAPDemo 展示如何使用 PIM 與 FileConnection API (這是 JSR 75 規格的一部分)。

A.16.1 瀏覽檔案

如果您尚未完成此作業,若要執行檔案瀏覽器,將需要為 MIDlet 提供適當的安全授權。選擇 [編輯] > [偏好]。按一下 [安全性] 標籤。將 [安全網域] 變更為最大值,再按下 [確定]。

接著開啟並執行 PDAPDemo 專案。啟動 FileBrowser MIDlet。您會看到目錄清單,並瀏覽可用的目錄和檔案。預設狀況下有一個目錄 root1

圖 A-26 瀏覽檔案


顯示 root1 目錄的 FileBrowser MIDlet

選取目錄,再按下 [選取] 按鈕以輸入該目錄。

圖 A-27 root1 目錄的內容


顯示 root1 目錄內容的檔案瀏覽器 midlet

使用示範中的指令,您可以檢視檔案,或查看檔案特性。請嘗試選取檔案,並從功能表選擇 [特性] 或 [檢視]。

圖 A-28 檢視檔案內容和檔案特性


左側影像顯示讀我檔案特性,右側影像顯示讀我檔案內容

實際的檔案位於 workdir\appdb\DefaultColorPhone\filesystem (假設您使用的是 DefaultColorPhone 模擬器面板)。您可以隨意增加檔案與根目錄,就可以在 JSR 75 File API 中看到這些項目。如需詳細資訊,請參閱第 10 章

A.16.2 PIM API

JSR75 PIM API 範例示範如何存取個人資訊,例如連絡人清單、行事曆與待辦事項清單。啟動範例之後,從主功能表選擇一種清單。

在這個應用程式範例中,每種清單的運作方式都一樣,而且每種清單類型都只包含一個清單。例如,如果選擇 [連絡人清單],就只有一個 Contacts 連絡人清單。[事件清單] 只包含一個名為 Events 的清單,而 [待辦清單] 只包含一個名為 To do 的清單。

圖 A-29 選擇清單類型


PIM API 提示使用者從「Contact Lists」、「Event Lists」或「To-do lists」中選取一個清單類型

選取清單類型,並選擇特定清單後,便可以檢視清單中的所有項目。如果這是您第一次執行本範例,清單可能是空的。

若要增加項目,請從功能表選擇 [新增]。應用程式會提示您輸入項目的格式化的名稱。您可以用功能表中的 [增加欄位] 將更多其他資料欄位增加到此項目。就會顯示欄位名稱清單。挑選一個欄位,然後輸入新欄位的值。

圖 A-30 增加連絡人欄位


為連絡人清單輸入的 PIM 項目

若要儲存清單項目,請從功能表選擇 [確定] (選項 3)。

您可以選擇 [上一步] 指令,回到清單。剛建立的項目就會顯示在清單中。

您建立的項目會以標準 vCard 或 vCalendar 格式儲存在 workdir\appdb\skin\pim 目錄中。如需詳細資訊,請參閱第 10 章

PIM API 允許匯出標準格式的連絡人、行事曆與待辦事項。確實的格式須視清單類型而定。當您檢視任何清單中的項目時,功能表會包含用於檢視匯出項目的指令。

例如,當您檢視連絡人清單項目時,功能表會包含 [顯示 vCard]。當您選擇此指令時,匯出的項目就會顯示在螢幕上。行事曆項目與待辦事項都會匯出為 vCalendar。


A.17 SATSADemos

SATSADemos 包含 SATSA (Security and Trust Services API) 的示範。大部分示範顯示如何與智慧卡通訊。模擬器可使用通訊端協定與模擬的智慧卡通訊。智慧卡模擬器 (cref) 包含在工具組中。如需詳細資訊,請參閱第 14 章

以下各節中包含此示範的每個功能表選擇的說明。對於每個示範,在啟動模擬器之前一定要執行以下作業:

A.17.1 APDUMIDlet

此 MIDlet 示範使用應用程式協定資料單元 (APDU;小的資料封包) 與智慧卡進行通訊。APDUMIDlet 需要找到兩個模擬的智慧卡。您可以使用 cref (Java Card Development Kit 的一部分) 執行智慧卡模擬器。

Mohair 應用程式包含預建立的記憶體影像,您可以將這些影像與 cref 配合使用。這些記憶體影像包含與 Mohair 相互作用的 Java Card 應用程式。這些記憶體影像位於 Mohair 專案的根目錄中。

在 Windows 上,依照如下方式啟動 cref 的兩個實例,分別對應每個模擬卡片槽 (假設目前的目錄為工具組安裝目錄):

start bin\cref -p 9025 -i apps\SATSADemos\demo2.eeprom
start bin\cref -p 9026 -i apps\SATSADemos\demo2.eeprom

在 Linux 上,您可以使用:

toolkit/bin/cref -p 9025 -i apps/SATSADemos/demo2.eeprom
toolkit/bin/cref -p 9026 -i apps/SATSADemos/demo2.eeprom

請注意,連接埠號 (此範例中的 9025 和 9026) 必須符合您在 SATSA 偏好中指定的連接埠號,如第 14 章所述。而且,確定使用 demo2.eeprom 的正確路徑。

執行兩個智慧卡模擬器後,您便可執行 APDUMIDlet

A.17.2 SATMIDlet

SATMIDlet 示範智慧卡通訊與 APDU 通訊間的細微差異。

若要設定模擬的智慧卡,請使用 cref,與您對 APDUMIDlet執行的作業非常相像。此次您不必指定連接埠號,而且記憶體影像不同:


Windows:

start bin\cref -i apps\SATSADemos\sat.eeprom

Linux:

toolkit/bin/cref -i apps/SATSADemos/sat.eeprom


 

執行智慧卡模擬器時,您可以執行 SATMIDlet 以與智慧卡應用程式進行通訊。

A.17.3 CryptoMIDlet

CryptoMIDlet 示範 SATSA 的一般加密功能。它不會以任何方式與智慧卡互動。

A.17.4 MohairMIDlet

MohairMIDlet 具有兩項功能。第一,尋找插槽、顯示所有可用的卡片槽。每個插槽均有一個數字,後跟「C」或「H」,分別表示冷插拔或熱插拔插槽。檢視插槽之後,請選取 [上一步] 以返回第一個螢幕。

MohairMIDlet 的第二部分 (SATSA-PKI 簽署測試) 使用智慧卡產生數位簽名。與之前的示範相同,您需要使用正確的記憶體影像執行 cref,才能準備從 MohairMIDlet 連線。在安裝目錄中鍵入以下路徑:


Windows:

start bin\cref -i apps\SATSADemos\sat.eeprom

Linux:

workdir/bin/cref -i apps/SATSADemos/sat.eeprom


 

在模擬器中,高亮度顯示 [SATSA-PKI 簽署測試] 並選擇 [選取]。會顯示以下確認訊息:

[This certificate will be used: (將使用此憑證︰) MohairAuth (MohairAuth)

選取 [確定] 軟鍵。

對於 PIN 1,請鍵入: 1234

選取 [確定] 軟鍵。會顯示以下確認訊息:

This string will be signed: (此字串將接受簽署︰) JSR 177 Approved (JSR 177 已同意)

選取 [確定] 軟鍵。會顯示以下確認訊息:

[This certificate will be used: (將使用此憑證︰) MohairAuth (MohairAuth)

選取 [確定] 軟鍵。

對於不可拒絕之金鑰 1 PIN,請鍵入: 2345


A.18 SATSAJCRMIDemo

此應用程式包含單一 MIDlet (JCRMIMIDlet),可展示如何使用 Java Card RMI (方便使用智慧卡的遠端物件協定) 與智慧卡應用程式進行通訊。與 SATSADemos 中的某些 MIDlet 相同,您需要使用適當的記憶體影像啟動 cref


Windows:

start bin\cref -p 9025 -i apps\SATSADemos\demo2.eeprom

Linux:

workdir/bin/cref -i apps/SATSADemos/demo2.eeprom


 

現在執行 JCRMIMIDlet 以瞭解您的應用程式如何才能與智慧卡上的分散式物件進行通訊。


A.19 SIPDemo

此應用程式是使用 SIP (JSR 180) 直接在兩個裝置間進行通訊的簡單範例。通常裝置使用具有代理伺服器的 SIP,設定某種直接通訊。如需與代理伺服器相關的更多完整範例,請查考 GoSip

若要瞭解 SIPDemo 的工作方式,請執行模擬器的兩個實例。在第一個模擬器中,選擇 [接收訊息]。您可以使用預設連接埠 (5070),然後選擇 [接收]。第一個模擬器正在偵聽內送的訊息。

在第二個模擬器中,選擇 [傳送訊息]。填入收件者、連接埠號、主旨和訊息的值,或接受預設值,然後選擇 [傳送]。您的訊息將顯示在第一個模擬器中。第一個模擬器的回應會顯示在第二個模擬器中。

開啟網路監視器後再嘗試一次。您將在網路監視器的 [SIP] 標籤中看到模擬器之間的通訊。


A.20 SVGContactList

此應用程式使用不同的面板顯示相同的連絡人清單資訊和新聞標題。這些面板具有不同的顏色和字型。

選取 [SVGContactlist(skin 1)] 或 [SVGContactlist(skin 2)],然後按一下 [啟動]。

使用向上、向下箭頭導覽連絡人清單。反白顯示的名稱標記有特殊的字元 (> 或一個點),並且會以較大的字型顯示。

圖 A-31 使用面板 2 顯示的連絡人清單


使用面板 2 以斜體顯示的連絡人

按下選取按鈕即可瞭解有關反白顯示的名稱的更多資訊。

圖 A-32 連絡人清單詳細資訊


連絡人清單詳細資料

再次按下 [選取] 以返回到連絡人清單。


A.21 SVGDemo

此套裝軟體包含的 MIDlet,示範 JSR 226 Scalable 2D Vector Graphics API for J2ME 的不同使用方法。此 API 提供載入操作、描繪和播放 SVG 內容的方式。

Scalable Vector Graphics (SVG) 1.1 規格定義以 XML 描述二維圖形的語言。完整規格可在 http://www.w3.org/TR/SVG11/ 中找到。

SVG Tiny (SVGT) 屬於 SVG 的一部份,適合類似行動電話的小型裝置。請參閱 http://www.w3.org/TR/SVGMobile/。SVG Tiny 是一種精簡但功能強大的 XML 格式,用於描述豐富的互動式 2D 動畫內容。圖形元素可進行邏輯分組並以 SVG 標記標識。

A.21.1 SVG 瀏覽器

SVGBrowser MIDlet 顯示常駐電話檔案系統的 SVG 檔案。執行此示範之前,請將 SVG 檔案置於目錄 workdir\appdb\DefaultColorPhone\filesystem\root1 中。

啟動此示範。應用程式將顯示 root1 的內容。選取您的 SVG 檔並選擇 [開啟] 軟鍵。

A.21.2 描繪 SVG 影像

[描繪 SVG 影像] 會從檔案中載入 SVG 影像加以描繪。查看示範程式碼就能看出影像大小是即時調整,以精確符合顯示區域。輸出是清晰且鮮明的。

A.21.3 播放 SVG 動畫

此應用程式播放描繪萬聖節賀卡的 SVG 動畫。按下 8 播放,按下 5 開啟,按下 0 停止。如果您按下 8,按下 5 會重新繼續動畫。如果您按下 0,按下 5 會從頭開始播放動畫。

SVG 檔描述各個影像元素如何隨著時間變化,以形成此短動畫效果。

在以下程式碼範例中,JSR 226 javax.microedition.m2g.SVGImage 類別用於載入 SVG 資源。然後,javax.microedition.m2g.SVGAnimator 類別可處理複雜的 SVG 動畫,並提供播放動畫的 java.awt.Componentjavax.swing.JComponentSVGAnimator 類別提供播放、暫停和停止動畫的方法。


import javax.microedition.m2g.ScalableGraphics;
import javax.microedition.m2g.SVGImage;
 
...
String svgURI = ...;
SVGImage svgImage = (SVGImage) SVGImage.createImage(svgURI, null);
SVGAnimator svgAnimator = SVGAnimator.createAnimator(svgImage);
 
// If running a JSE applet, the target component is a JComponent.
JComponent svgAnimationComponent = (JComponent) svgAnimator.getTargetComponent();
...
 
svgAnimator.play();
...
svgAnimator.pause();
...
svgAnimator.stop();

 

A.21.4 從頭開始建立 SVG 影像

此示範使用 API 呼叫生成影像。它可建立一個空 SVGImage 然後加入圖形內容,最後顯示該內容。

A.21.5 跳跳球

跳跳球播放一個 SVG 動畫。按下 8 播放,按下 5 開啟,按下 0 停止。如果您按下 8,按下 5 會重新繼續動畫。如果您按下 0,按下 5 會從頭開始播放動畫。

A.21.6 最佳化的功能表

在此示範中,選取的圖示有黃色的邊界。當您移動到新圖示時,該圖示會變為選取的狀態,之前的圖示會變為未選取的狀態。如果您導覽至圖示網格之外,則會進行循環選取。也就是說選取某列的最後一個圖示時,向右移動的話就會選取同一列的第一個圖示。

此示範說明了合併 UI 標記和 Java 可帶來的靈活性: 豐富的功能集 (圖形、動畫和高階 2D 描繪),在圖形操控、預描繪或播放方面也極具靈活性。

在此範例中,圖形藝術家提供的 SVG 動畫,定義了功能表圖示的轉換狀態 (從未選取的狀態轉換為選取的狀態)。此程式使用 JSR 226 API 將每個圖示的動畫序列分別描繪至螢幕外的緩衝區 (以便之後加速描繪作業)。

緩衝處理讓 MIDlet 能適應裝置的顯示解析度 (因為圖形是以 SVG 格式定義的),並且保持點陣圖的描繪速度。此外,MIDlet 仍會運用 SVG 的動畫功能。

定義功能表項目外觀及其動畫效果的任務 (圖形藝術家和設計者的工作),和顯示功能表以及根據功能表選項啟動動作的任務 (開發人員的工作) 劃分極為清楚。只要藝術家和開發人員均遵守 SVG 文件結構慣例,這兩項任務便可獨立區分。

A.21.7 照片裝飾程式

在此示範中,您可使用電話鍵為照片增加裝飾。這些鍵代表的值為:


1

縮小鍵

2

下一張照片鍵

3

放大鍵

4

說明鍵

5

水平翻轉鍵

6

垂直翻轉鍵

7

逆時鐘旋轉鍵

8

上一張照片鍵

9

順時鐘旋轉鍵

#

顯示挑選器選項


 

此示範提供 16 張照片供您裝飾。

使用 2 和 6 鍵向前或向後導覽照片。

若要裝飾,請按下 [#] 顯示挑選器。使用箭頭鍵反白顯示圖形物件。放大反白顯示的物件。按下 [選取] 以選擇目前的圖形,或按下箭頭鍵反白顯示不同的圖形。再次按下 [選取] 以將圖形增加到照片。當您增加裝飾時,會看到圖形上有一個紅色的 +。這表示已經加以選取,並且可以移動、調整大小和處理。

圖 A-33 含有選取引文的裝飾照片


印有 Duke 裝飾、小鬍子和所選引文的 Duke 馬克杯圖片。

使用導覽箭頭移動圖形。使用 1 縮小圖形,使用 3 放大圖形。使用 5 或 6 翻轉,使用 7 或 9 旋轉。如果對位置滿意,就按下 [選取]。請注意,會顯示綠色三角形。這是游標。使用導覽鍵在圖形周圍移動綠色三角形。游標位於物件上的時候,會以紅色方框高亮度顯示物件。按下 [選取]。紅色 + 代表已經選取物件。

圖 A-34 高亮度顯示的小鬍子


印有 Duke 裝飾、所選引文和高亮度顯示的小鬍子的 Duke 馬克杯圖片。

若要移除裝飾 (一種特性),請選取一個物件,然後按一下 [功能表] 軟鍵。按下 [2] 以移除特性。

A.21.8 定位服務

啟動應用程式。會顯示軟體資訊畫面 (也用作說明)。最初的視圖為舊金山漫步的行程地圖。海灣 (以藍色表示) 在螢幕的右側。按下 [1] 開始行程。應用程式放大您在地圖上的位置。帶路指引顯示在水平軸的白色方塊中。執行行程時,按下 [7] 可逆時鐘旋轉地圖。請注意,地圖旋轉後文字會顯示在垂直軸上。再次按下 7 以還原預設方位。按下 4 以顯示說明螢幕。

圖 A-35


根據位置顯示提示


A.22 WMADemo

此應用程式展示如何傳送與接收 SMS、CBS 與 MMS 訊息。Sun JavaTM Wireless Toolkit for CLDC 提供有彈性的模擬環境,以支援訊息傳送。訊息可以在模擬器實例之間交換,而且可以利用 WMA 主控台公用程式產生或接收。

因為此範例利用推送註冊表,所以只用 [執行] 按鈕看不到所有功能。利用在實際裝置上安裝應用程式的方式,使用 [經由 OTA 執行] 功能將應用程式安裝到模擬器。如果不知道如何執行,請查閱第 2 章

若要運用推送註冊表,請使用 WMA 主控台,傳送一則訊息給模擬器。若要啟動主控台,請選擇 [檔案] > [公用程式]。在 WMA 方塊中按一下 [開啟主控台] 按鈕,以啟動 WMA 主控台。

按一下 WMA 主控台視窗中的 [傳送 SMS...] 按鈕。選擇模擬器的號碼 (可能是 +5550000)。如果不確定模擬器使用的號碼是什麼,請查看標題列。在 SMS 訊息視窗中選擇號碼,然後填入連接埠號 50000。再在 [訊息] 欄位鍵入文字訊息,並按一下 [傳送]。

圖 A-36 傳送文字訊息


已選取 [文字 SMS] 標籤的 [傳送訊息 - SMS] 對話方塊

模擬器會詢問能否啟動 WMADemo 應用程式。

圖 A-37 推送註冊表訊息


WMADemo 詢問是否可以將其啟動。

選擇「是」。就會啟動 SMSReceive MIDlet,並立即顯示內送的 SMS 訊息。

圖 A-38 內送文字訊息


內送的文字訊息範例

您也可以用 WMA 主控台傳送與接收 CBS 與 MMS 訊息。如需詳細資訊,請參閱第 7 章



備註 - 如果嘗試使用 WMA 主控台傳送文字訊息給 WMADemo,務必將連接埠號指定為 50000。CBS 訊息則使用連接埠 50001。對於 MMS 訊息,請使用 example.mms.MMSDemo 做為應用程式 ID。



例如,若要從 WMA 主控台傳送 MMS 訊息給模擬器,必須確定已經依上述方式,使用 [經由 OTA 執行] 安裝 WMADemo。啟動示範並選擇 [MMS 接收]。

在 WMA 主控台中,按一下 [傳送 MMS...],以開啟 MMS 撰寫視窗。填入訊息主旨、應用程式 ID example.mms.MMSDemo 與執行中模擬器的電話號碼。

圖 A-39 指定 MMS 訊息的傳送位址


已選取 [標題] 標籤的 [傳送訊息 - MMS] 視窗。 在 [標題] 標籤中提供地址。

接著,按一下 [部分] 標籤。WMA 主控台可讓您從硬碟中選擇要與 MMS 訊息一起傳送的檔案。按一下 [增加] 將檔案加入訊息中。使用檔案瀏覽器尋找要傳送的檔案,再按一下 [確定]。

圖 A-40 在 MMS 訊息中新增部分


已選取 [部分] 標籤的 [傳送訊息 - MMS] 視窗。 顯示 [檔案]、[內容位置]、[內容 ID]、[Mime 類型]、[編碼] 和 [大小] 的欄位。

按一下 [傳送] 以傳送訊息。

模擬器會詢問能否啟動 WMADemo。按一下 [是]。就會顯示影像及其資訊。

圖 A-41 WMADemo 接收影像


WMADemo 顯示接收的 sargent-millet.png 影像