付録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 ディレクトリに用意されています。プロジェクトはサブディレクトリに配置されています。プロジェクトごとに src ディレクトリがあり、そこに Java プログラミング言語のソースコードがあります。たとえば、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

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 サービス

JSR 172 API を使用して MIDlet から Web サービスに接続する方法をデモします。

A.12

MobileMediaAPI

MMAPI 1.1

トーンシーケンス、MIDI 再生、サンプリングオーディオ再生、ビデオなど、MMAPI の機能をデモします。

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 のユーザーインタフェース


Default main window user interface

デモアプリケーションを開くために、「プロジェクトを開く」ボタンをクリックします。使用できるすべてのアプリケーションのリストが表示されます。1.1.2, 作業用ディレクトリのファイルで説明したように、インストールディレクトリ内のプロジェクトはイタリックで示され、作業用ディレクトリ内のプロジェクトはボールドで示されます (図 1-1)。インストールディレクトリ内のプロジェクトを開くと、プロジェクトが作業用ディレクトリにコピーされてから開きます。

アプリケーションが開いたら、ツールバーの「実行」ボタンをクリックできます。また、エミュレータへのインストールが必要な場合は、「プロジェクト」->「OTA 経由で実行」をクリックします。

デバイスエミュレータウィンドウが表示され、デモアプリケーションが実行されます。MIDlet のメニューがある場合は、ナビゲーションの矢印キーを使用して項目を選択し、「選択」を選択します。デモの実行中に、画面下部の左側または右側にあるソフトウェアボタンを押す必要が生じる場合があります。ソフトウェアボタンは、アプリケーションのインストールまたは起動、メニューの表示、終了、その他のアクションの実行などに使用します。一部のデモには、これらの手順が含まれています。

一部のデモアプリケーションでは、特定の設定や手順が必要です。たとえば、Web サービスを使用するデモをファイアウォールの内側で実行する場合は、エミュレータのプロキシサーバーを設定しなければデモは失敗します。

詳しい操作方法については、各デモの説明を参照してください。


A.3 Advanced Multimedia Supplements

この MIDlet スイートは、JSR 234 の Advanced Multimedia Supplements (AMMS) の機能をデモします。このデモは、次の MIDlet で構成されます。

図 A-2 MIDlet での画像の処理


Images Effects midlets shown airplane photo first normal then with solarized effect


A.4 Bluetooth Demo

このアプリケーションには、JSR 82 の Bluetooth API の使用方法をデモする MIDlet が含まれています。

プロジェクト BluetoothDemo では、Bluetooth を使用してデバイス間で画像を転送する方法を示します。このデモアプリケーションの動作を確認するには、エミュレータインスタンスを 2 つ実行する必要があります。

1 つ目のエミュレータで Bluetooth Demo を起動し、「Server」を選択します。Bluetooth 接続を許可するかどうかを尋ねるメッセージが表示されます。「Yes」を選択します。サーバーが起動し、画像のリストが表示されます。最初は、どの画像も Bluetooth ネットワークで使用できないようになっています。画像を使用できるようにするには、画像を選択し、メニューから「Publish image」を選択します (または 1 を入力するかクリックします)。アイコンの色が紫から緑に変化し、画像が公開されたことを示します。

図 A-3 Bluetooth Demo のサーバーの実行


Bluetooth demo list of images, with Duke png selected

2 つ目のエミュレータで Bluetooth Demo を起動し、「Client」を選択します。MIDlet で画像を検索できる状態になり、そのメッセージが表示されます。「Find」ソフトウェアボタンをクリックします。もう一方のエミュレータが MIDlet で検出され、その画像リストが取得されます。リストから画像を 1 つ選択し、「Load」をクリックします。接続を許可するかどうかを尋ねるメッセージが表示されます。「Yes」を選択します。

図 A-4 シミュレートされた Bluetooth を使用して転送された画像



A.5 CHAPIDemo

CHAPIDemo はコンテンツブラウザです (JSR 211 を参照)。お気に入りのリストを保持して、さまざまなコンテンツを選択および表示できるようにします。

このデモでは、コンテンツハンドラレジストリを使用します。したがって、「実行」ボタンを使用する場合は、すべての機能を確認できません。代わりに、「プロジェクト」->「OTA 経由で実行」を使用して、アプリケーションをエミュレータにインストールします。この手順がわからない場合は、2.3.2, インストールを参照してください。

インストールした CHAPIDemo は、アプリケーションリストに「Text Viewer」の名前で表示されます。これは、プレーンテキストのコンテンツハンドラである MIDlet です。「Text Viewer」を選択して、ソフトウェアボタンメニューから「起動」を選択します。お気に入りのリンクのリストが表示されます。

図 A-5 CHAPIDemo でのお気に入りのリンクの表示


CHAPIDemo list of links with New option selected

ナビゲーションキーを使用して「CHAPIDemo」を強調表示し、エミュレータの「SELECT」を押します。通信時間を使用するかどうかを確認するメッセージが表示されます。「はい」ソフトウェアボタンを押します。さまざまな種類のコンテンツのリストが表示されます (図 A-6)。

図 A-6 コンテンツリスト


CHAPIDemo list of contents displays media player to install

まず、Duke.png のいずれかを選択してみます。矢印キーを使用してリンクを強調表示し、「SELECT」を押してファイルを表示します。CHAPI を使用して、ImageViewer MIDlet が起動され、コンテンツが表示されます。

図 A-7 PNG 画像の表示


Image Viewer displaying PNG image of Duke

別の種類のコンテンツでは、別のコンテンツハンドラ MIDlet スイート (MediaHandler) が必要です。このスイートを CHAPIDemo からインストールするには、MediaHandler.jad のリンクを選択します (図 A-6 に示すリストの最初の項目)。AMS が呼び出され、インストールの手順が実行されます。

MIDlet スイートをインストールすると、Text Viewer に表示されるほかの種類のコンテンツを表示できます。たとえば、「http:video/test-mpeg.mpg」を選択すると、図 A-8 に示す画像を含む、一連の画像が表示されます。

図 A-8 MediaHandler を使用した MPEG ムービーの表示


MediaHandler viewing MPEG movie showing yellow and red lights.

TextViewer および ImageViewer MIDlet のコンテンツハンドラの設定を確認するには、「属性設定」をクリックし、「コンテンツハンドラ」アイコンをクリックします。MediaHandler プロジェクトも調べてみてください。


A.6 CityGuide

CityGuide は、Location API (JSR 179) の使用方法を示します。このデモは、歩行者の現在位置を市街図に重ねて表示します。歩行者が市内を移動すると、歩行者の近くにあるランドマークが強調表示および識別されます。このデモでは、歩行者の位置情報を、citywalk.xml という名前の XML スクリプトから取得しています。このイベントファイルは、デバイスの位置情報を送信します。詳細については、第 13 章を参照してください。

位置情報の入力要求が頻繁に発生するため、このデモは manufacturer (trusted) モードでの実行が適しています。manufacturer モードについては、6.2.1, MSA 保護ドメインを参照してください。ユーザーインタフェースで、「編集」->「環境設定」を選択し、「セキュリティー」を選択します。「セキュリティードメイン」で「Manufacturer」を選択します。

CityGuide プロジェクトを開いて実行します。エミュレータで、CityGuide MIDlet を起動します。「Next」をクリックして、地図ページを表示します。

図 A-9 現在位置


CityGuide demo shows your location in the city

エミュレータウィンドウのメニューから、「MIDlet」->「外部イベント」を選択します。「位置情報」タブで、参照ボタンをクリックします。workdir¥apps¥CityGuide¥citywalk.xml のイベントファイルを選択します。

ウィンドウ下部にあるプレーヤーのボタンがアクティブになります。図 13-1 を参照してください。緑色の再生ボタン (右向きの三角形) を押して、スクリプトを実行します。

画面には、レストラン、美術館、店舗、および劇場の 4 種類のランドマークが表示されます。ランドマークの表示を調整するには、ソフトウェアボタンメニューを開き、「Settings」コマンドを選択します。図 A-10 を参照してください。ナビゲーションキーを使用してカテゴリを強調表示し、「SELECT」を使用して項目にチェックマークを付けるか、チェックマークを解除します。

地図上で強調表示されたランドマークの近くに来たときに、ソフトウェアボタンメニューを開き、「Detail」コマンドを選択して詳細情報を表示します。位置情報スクリプトの詳細については、第 13 章を参照してください。

図 A-10 位置情報の設定




Location Settings Dialog



図 A-11 ランドマークの詳細

Landmark details.


A.7 Demos

このデモには、さまざまな MIDP 機能を示すいくつかの MIDlet が含まれています。

A.7.1 Colors

このアプリケーションでは、画面幅いっぱいの、大きな横長の矩形が表示されます。その下に、縦長の小さい 10 個の矩形が水平方向に表示されます。最後に、3 つの横長のカラーバーに青、緑、および赤 (RGB) の値が示されます。最初のメニューの選択に基づいて、値は 10 進数 (0 〜 255) または 16 進数 (00 〜 ff) で表示されます。

A.7.2 Properties

この MIDlet はプロパティーの値を表示します。図 A-12 に例を示します。

図 A-12 システムプロパティー


Shows system properties including memory and microedition information

A.7.3 Http

このテストアプリケーションは、HTTP 接続を使用して Web ページを要求します。要求は、HTTP プロトコルの GET または POST メソッドを使用して発行されます。HEAD メソッドが使用された場合は、要求から head プロパティーが読み取られます。

デモ実行の準備

最初に、次の設定を確認します。

デモの実行

Http MIDlet を起動します。デフォルト設定では、MIDlet は http://www.yahoo.com に接続を試みます。テストするには、「メニュー」ソフトウェアボタンを選択して 1、2、または 3 を選択し、URL をテストします。

Http Test では、取得できる情報が返されます。表示される情報が一画面に収まらない場合は、下矢印キーを使用して末尾までスクロールできます。情報の量は、要求の種類と、ページにある META 情報の量によって異なります。ボディ情報またはコンテンツを提供するには、ページで CONTENT-LENGTH を宣言している必要があります。これについては、RFC 2616 で説明されています。

メニューオプションの使用

「メニュー」ソフトウェアボタンを使用して、次の操作を実行できます。

A.7.4 FontTestlet

この MIDlet は、利用できるさまざまなフォント (プロポーショナル、標準、標準イタリック、ボールド、およびボールドイタリック) を表示します。メニューで 1 または 2 を選択すると、システムフォント (Sans Serif) とモノスペースフォントが切り替わります。

A.7.5 Stock

Http デモと同様、このサンプルは HTTP 接続を使用して情報を取得します。A.7.3, Httpの手順と同じ準備を行います。

Demos プロジェクトを実行し、Stock MIDlet を起動します。

デフォルト設定では、画面の上部に空のティッカーバーが表示されます。ティッカーの下のメニューリストに、Stock Tracker、What If?、Alerts、および Settings の 4 つのアプリケーションが表示されます。最初の 3 つのアプリケーションを使用するには、株式シンボルを追加する必要があります。

A.7.5.1 Settings の使用

アプリケーションの機能を使用するには、アプリケーションで操作される株式シンボルを指定する必要があります。

ティッカーへの株式シンボルの追加

ティッカーに株式シンボルを追加するには、ナビゲーションの矢印キーを使用して「Settings」を選択します。

「Add Stock」を選択します。

株式シンボルの入力を求めるメッセージが表示されます。SUNW を入力し、「Done」ソフトウェアボタンを選択します。追加した株式とその現在値がティッカーに表示されます。さらに、IBM や HPQ などの株式シンボルも追加します。

更新間隔の変更

デフォルト設定では、更新間隔は 15 分です。「Updates」を選択して間隔を変更します。ナビゲーションの矢印キーを使用して、「Continuous」、「15 minutes」、「30 minutes」、「1 hour」、または「3 hours」のいずれかを選択します。「Done」ソフトウェアボタンを選択します。

株式の削除

「Remove a Stock」を選択します。追加してある株式のリストが表示されます。ナビゲーションキーを使用して、削除する 1 つまたは複数の株式を選択します。「Done」ソフトウェアボタンを選択します。

A.7.5.2 Stock Tracker

Stock Tracker には、追加した株式のリストとその現在の値が表示されます。選択した株式の追加情報も表示されます。たとえば、終値や高値と安値などが表示されます。

株式を選択して、「SELECT」を押します。

A.7.5.3 What If?

What If? アプリケーションでは、元の購入価格と保有株数の入力を求められます。アプリケーションは、現在の価格に基づいて利益と損失を計算します。

株式シンボルを選択します。

購入価格と株数を入力して、「Calc」を押します。

A.7.5.4 Alerts

このアプリケーションは、価格がユーザーの指定した値になったときに通知を送信します。

メインメニューから、「Alerts」を選択します。

「Add」を選択します。

株式を選択します。画面に、「Alert me when a stock reaches」というメッセージが表示されます。整数を入力します。

アラートは「Current Alerts」リストに表示されます。アラートを削除するには、「Remove」を押してアラートを選択します。「Done」ソフトウェアボタンを選択します。

指定した値になると、警告音が鳴り、メッセージが表示されます。たとえば、「Symbol has reached your price point of $value and is currently trading at $current_value」のようなメッセージになります。アラートは起動されると、「Current Alerts」リストから削除されます。

A.7.6 Tickets

このデモは、オンラインのチケットオークションアプリケーションの動作を示します。ホーム画面の一番上に沿ってチケットティッカーが表示されます。デフォルト設定では、「Choose a Band」フィールドに「Alanis Morrisette」が表示されます。

バンドを選択するには、バンド名を強調表示して「SELECT」を押します。下矢印キーを使用して別のバンド (たとえば、moby) を強調表示して、「SELECT」を押します。利用可能なオークションが表示されます。

入札するには、「メニュー」ソフトウェアボタンを選択して 2 を選択します。矢印キーを使用して、フィールドを移動します。各フィールドに必要な情報を入力します。「Next」ソフトウェアボタンを選択します。入札を確認するメッセージが表示されます。矢印キーを使用して「Submit」を強調表示し、「SELECT」を押します。確認番号が表示されます。「Bands」をクリックして、開始画面に戻ります。

アラートを設定するには、「メニュー」ソフトウェアボタンを選択して 3 を選択します。ナビゲーションの矢印キーを使用してフィールドを移動し、現在の入札額よりも高い値を入力します。「Save」ソフトウェアボタンを選択します。開始ページに戻ります。アラートの値を超える入札を行うと、アラートが起動されます。設定により、アプリケーションが更新を確認する頻度が決定されます。したがって、アラートが鳴るまでに数分かかる場合があります。

バンドを追加するには、「メニュー」ソフトウェアボタンを選択して 4 を選択します。バンド名を 1 つ入力するか、コンマ区切りの名前リストを入力します。「Save」ソフトウェアボタンを選択します。確認後、開始ページに戻ります。「Choose a Band」ドロップダウンメニューに、追加したバンドが表示されます。



注 - これはデモです。バンドを完全に記述するには、workdir¥apps¥Demos¥src¥example¥auction¥NewTicketAuction.java ファイルを編集する必要があります。



バンドを削除するには、「メニュー」ソフトウェアボタンを選択して 5 を選択します。バンド名に移動し、「SELECT」を選択してチェックボックスにチェックマークを付けます。複数のバンドを選択できます。「Save」ソフトウェアボタンを選択します。

ティッカーの表示、更新、アラートの音量、および日付についての現在の設定を表示するには、「メニュー」ソフトウェアボタンを選択して 6 を選択します。必要な場合は、矢印キーと選択キーを使用して、これらの値を変更します。「Save」ソフトウェアボタンを選択します。

A.7.7 ManyBalls

この MIDlet では、画面を移動する 1 つのボールが表示されます。上および下矢印キーを使用すると、ボールのスピード (fps) が増減します。右または左矢印キーを使用すると、ボールの数が増加または減少します。


A.8 Demo3D

このアプリケーションには、エミュレータでの JSR 184 「Mobile 3D Graphics API」への対応を示す 3 つの MIDlet が含まれています。

A.8.1 Life3D

Life3D は、よく知られている Game of Life の 3 次元版です。生きているセルは立方体で表されます。各セルには、斜め方向も含めて、最大 26 個の隣接するセルが存在します。アニメーションの各ステップで、隣接するセルが 4 個に満たないセルは孤独のために死に、隣接するセルが 5 個を超えるセルは過密のために死にます。隣接するセルがちょうど 4 個ある場合、空のセルは生きたセルに変わります。

ゲームボードは、すべての角度から見えるようにゆっくり回転します。

図 A-13 3 次元の Game of Life


Life3D game

表 A-2 に示すキーパッドのボタンを使用してゲームを制御できます。


表 A-2 Life3D のコントロール

ボタン

説明

0

アニメーションを一時停止します。

1

アニメーションをデフォルトの速度で再開します。

2

アニメーションを速くします。

3

アニメーションを遅くします。

4

任意のリストから 1 つ前の事前設定を選択します。画面の上部に設定の名前が表示されます。

5

リストから次の事前設定を選択します。

*

ランダムな設定を生成し、安定するか死ぬまでアニメーション表示します。死んだ場合は、新しいランダム設定を生成します。


 

このサンプルのソースコードには、特に詳しい解説が付いています。toolkit¥apps¥Demo3D¥src¥com¥superscape¥m3g¥wtksamples¥life3d¥Life3D.java を参照してください。

A.8.2 PogoRoo

PogoRoo では、ホッピングに乗って飛び跳ねているカンガルーが表示されます。カンガルーは矢印キーで操作できます。上矢印キーで前進、下矢印キーで後退、左矢印キーと右矢印キーで方向変換させることができます。効果が現れるまでキーを押し続ける必要があります。

図 A-14 飛び跳ねているカンガルー


PogoRoo image of a kangaroo bouncing away

A.8.3 retainedmode

retainedmode MIDlet では、疲れ知らずのスケートボーダーを永久ループで表示するシーンファイルが再生されます。

図 A-15 疲れ知らずのスケートボーダー


retainedmode midlet features a looping image of a skateboarder


A.9 GoSIP

GoSIP は、SIP (JSR 180) を使用するチャットアプリケーションです。SIP プロキシサーバーと登録機関を使用して通信を設定します。

最初に SIP サーバーを実行します。「ファイル」->「ユーティリティー」を選択します。「SIP サーバーを起動」を選択し、「起動」を押します。SIP プロキシサーバーウィンドウが表示されます。「開始」をクリックして、サーバーを実行します。

次に、エミュレータの 2 つのインスタンスで GoSIP アプリケーションを実行します。

図 A-16 SIP プロキシと登録機関


SIP Proxy and Registrar window can display for the listed registered users, one at a time

1 つ目のエミュレータで、Sippy A を起動します。プロキシホストの入力を求めるメッセージが表示されたら、ローカルマシン名または IP アドレスを入力します。「Next」を選択し、次に「Register」を選択します。SIP サーバーウィンドウには、エミュレータから送信された SIP メッセージが表示されます。登録されたユーザーのリストに Sippy A が表示されます。エミュレータから、通信先の Sippy B を招待するようにメッセージが表示されます。ここでは、まだ招待しません。

2 つ目のエミュレータで、Sippy B を起動します。前の手順と同じように、SIP プロキシのアドレスを入力し、「Next」および「Register」を選択します。Sippy B ユーザーが、SIP サーバーウィンドウに表示されます。

1 つ目のエミュレータで「Invite」を選択します。2 つ目のエミュレータに、呼び出し中であることが表示されます。「Answer」を選択して、チャットを開始します。どちらのエミュレータにも、「Talking」画面が表示されます。「Send」コマンドを使用してメッセージをやり取りできます。

メッセージのやり取りが終わったら、「Bye」を選択してチャットを終了します。


A.10 i18nDemo

この MIDlet スイートは、JSR 238 の Mobile Internationalization API を示します。String Comparator と Formatter の MIDlet は、異なるロケールで文字列のソートと数字の表示を適切に行う方法を示しています。3 つ目の MicroLexicon の MIDlet は、プラハ、ヘルツェリア、北京、ミラノ、またはその他の地域でビールを注文するときに便利な、慣用句の簡単な翻訳機能です。



注 - Sun JavaTM Wireless Toolkit for CLDC のデフォルトのフォントでは、中国語と日本語はサポートされていません。これらの言語を使用するには、デモを実行する前に次の手順を実行してください。

1. 中国語または日本語をサポートする True Type フォントをインストールします。
2. toolkit¥wtklib¥devices¥skin-directory¥skin.properties を変更して、True Type フォントを指定します。



MIDlet を実行するには、「SELECT」ボタンを使用して MIDlet を強調表示し、画面右下のボタンを使用して MIDlet を起動します。

String Comparator MIDlet は、ロケールによる文字列 (都市名) のソート方法の違いを示します。MIDlet を起動します。画面右下のボタンを使用して、メニューを表示します。2 をクリックまたは入力して、「Sort - default」を選択します。リストがアルファベット順にソートされます。3 をクリックするか入力して、「Sort - slovak」を選択します。上にマークが付いた Z、またはマークの付いていない Z で始まる都市名で、ソートの違いを簡単に確認できます。「Exit」をクリックして、MIDlet のリストに戻ります。

2 つ目の Formatter の MIDlet は、時刻と数字をロケールに応じた形式で表示します。「Next」をクリックしていくと、4 つの画面がすべて表示されます。「Exit」をクリックして、MIDlet のリストに戻ります。

最後の MicroLexicon の MIDlet は、慣用句を別の言語に翻訳します。目標言語をリストから選択するには、ナビゲーションの矢印キーを使用して「Choose Language」を強調表示します。「SELECT」をクリックし、言語のドロップダウンメニューを表示します。ナビゲーションの矢印キーを使用して言語を選択し (図 A-17 を参照)、「SELECT」をクリックします。

図 A-17 目標言語の選択


MicroLexicon midlet shown, with the Italian language selected

MicroLexicon では、語句のリストが表示されます。いずれかを強調表示して、エミュレータの「SELECT」ボタンを押します。目標言語の国旗と、翻訳された語句が表示されます。

元の言語を変更するには、「編集」->「環境設定」を選択します。「国際化」タブをクリックし、有効なロケール文字列を入力します。次にエミュレータおよび MicroLexicon を実行したときに、指定したロケールでテキストが表示されます (ロケールがサポートされている場合)。ロケールの例として cs-CZ があります。

MicroLexicon では、MIDlet リソースが使用されています。ツールキットを使用してアプリケーションをローカライズする方法を理解するには、「プロジェクト」->「国際化リソースマネージャー」を選択します。MicroLexicon で使用されている、テキストと画像のすべてのリソースが表示されます。リソースを編集してから MicroLexicon を実行するとどうなるかを確認できます。リソースは実行時にロードされるため、アプリケーションを再度ビルドする必要はありません。

図 A-18 国際化リソースマネージャー


i18n Resources Manager displaying the resources in the i18bDemo project directory

リソース自体は workdir¥apps¥i18nDemo¥res¥global に保存されます。


A.11 JBricks

JBricks は、JSR 229 の Payment API の使用方法をデモするゲームです。ゲーム自体はブレイクアウトやアルカロイドなどのブロック崩しに似ています。JBricks では、追加ライフや新しいゲームレベルを購入できます。バックグラウンドで、Payment API が細部を処理しています。

JBricks の支払い機能を使用するには、「プロジェクト」->「OTA 経由で実行」を使用して、JBricks をエミュレータにインストールします。この手順がわからない場合は、2.3.2, インストールを参照してください。

JBricks が Payment API をどのように使用しているかを確認するには、ゲームのメインメニューから「Buy Life」または「Buy Level」を選択します。続いて、ライフを 1 つ購入するか、割引価格で 3 つ購入するかを選択します。次の画面で、支払いの種類を選択できます。

図 A-19 支払いの種類の選択


JBricks payment API demonstrates purchase with credit card adapter

ナビゲーションの矢印キーを使用して、「Pay by」で始まる行を選択します。「SELECT」ボタンをクリックして、ドロップダウンメニューで使用可能なクレジットカードアダプタを確認します。ナビゲーションの矢印キーを使用して VISA アダプタを選択し、「SELECT」をクリックします。画面右下の「はい」をクリックして、処理を続行します。

続いて、クレジットカード情報を入力できます。有効な VISA カード番号 (たとえば、4111111111111111) と有効期限を入力します。

図 A-20 支払い情報の入力


Credit card payment form with sample information supplied

エミュレータの現在のインスタンスに関するトランザクションを表示するには、「MIDlet」->「外部イベント」を選択し、「支払いトランザクション」タブをクリックします。エミュレータの特定のインスタンスに関するトランザクションが表示されます。

図 A-21 トランザクションの表示


External Event Generator with Payment Transactions tab selected

また、ツールキットの支払いシステムを通過するすべてのトランザクションを表示できます。「ファイル」->「ユーティリティー」を選択し、「支払いコンソール」を選択します。コンソールのトランザクションは次のようになります。


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 には、Server Script という MIDlet だけが含まれています。この MIDlet を起動し、プロンプトに従って操作します。Web サービスから取得されたシミュレーション用のニュース見出しを閲覧できます。

バックグラウンドの処理を確認するには、ネットワークモニターを使用します。


A.13 MobileMediaAPI

MobileMediaAPI アプリケーションには、ツールキットのマルチメディア機能を示す 4 つの MIDlet が含まれます。この節では、これらの MIDlet について説明し、アプリケーションでマルチメディアを使用するための追加情報を示します。

A.13.1 Simple Tones

Simple Tones サンプルは、対話型合成トーンの使用方法をデモします。サンプルを選択し、画面右下の「Play」をクリックします。

A.13.2 Simple Player

Simple Player アプリケーションは、エミュレータのさまざまなオーディオおよびビデオ機能をデモします。このアプリケーションには、さまざまな形式のサンプルファイルが含まれています。また、エミュレータの持続ストレージや HTTP URL にあるファイルを再生できます。

プレーヤー部分では、汎用の javax.microedition.media.Player インタフェースが使用されます。プレーヤーには、継続時間、メディアの時間、およびメディアファイルを実行するためのコントロールが表示されます。ファイルにメタデータが含まれている場合は、作成者やタイトルなどの情報もプレーヤーで表示できます。MIDI ファイルの場合、カラオケ用テキストがファイルに含まれているときは、再生中にそのテキストが画面に表示されます。グラフィカルユーザーインタフェースのコントロールがある場合は、それらが画面に表示されます。これらのコントロールを使用するには、Simple Player でメディアサンプルの 1 つを選択し、「メニュー」ボタンをクリックします。表示されるコマンドの一覧から、目的のコマンドを選択します。

「Simple Player」を選択し、「起動」をクリックします。このデモアプリケーションには、次のメディアサンプルが含まれています。

さらに、Simple Player は、RTTTL (Ringing Tones text transfer language) 形式の着信音の構文解析を行うことができます。RTTTL については、http://www.convertyourtone.com/rtttl.html を参照してください。

Simple Player には、メディアの再生を制御する一般的なコマンドが用意されています。コマンドは Simple Player のメニューから使用でき、一部のコマンドにはキーパッドのボタンが割り当てられています。次の表では、これらのコマンドについて説明します。


表 A-3 Simple Player のコマンド

コマンド

キー

説明

Mute/Unmute

0

ファイルの再生を継続したまま、サウンドをオフにします。このコマンドは「Unmute」と切り替わります。

Volume

* と #

音量を増減します。

META data

 

著作権情報、タイトル、トラックリストなど、メディアファイルで提供されている情報を表示します。

Stop in 5 seconds

 

オーディオの再生中にこれを設定すると、5 秒後に再生を一時停止します。

Rate

4 と 6

再生速度のレートを変更します。

Tempo

 

トーンシーケンスまたは MIDI ファイルのテンポを増減します。

Pitch

UP と DOWN

MIDI ファイルの音符の高さを上下します。

Start Recording/Stop Recording

 

オーディオの再生を録音します。録音したオーディオを含むファイルが、エミュレータが実行されているディレクトリに作成されます。ファイル名を指定しない場合は、recording.wav というファイルが作成されます。このコマンドは「Stop Recording」と切り替わります。

Step Frame

7 と 9

一度に 1 フレームずつ、ビデオファイル内を前後に移動します。

Play/Stop

2 と SELECT

メディアを開始または停止します。

Loop Mode

 

オーディオファイルの再生が終わるとすぐに再生を繰り返します。「Loop Mode」を 1 回クリックすると、オーディオファイルは 1 回だけ再生されます。もう 1 回クリックすると、ファイルが 3 回再生されます。3 回クリックすると、ファイルが繰り返し再生されます。4 回目のクリックで、単一再生に戻ります。

Skip

1 と 3

メディアファイルの長さの 5 パーセントだけ、前後にスキップします。サウンドトラックはビデオに同期します。

Rewind

 

オーディオ再生の開始位置に戻ります。

Stop and Rewind

5

再生を停止し、開始位置に巻き戻します。

Quick Help

 

コマンドとキーパッドボタンを一覧表示します。


 

これらのコマンドを使用できるかどうかは、Simple Player で再生中のメディアの種類に依存します。また、一部のコマンドは、キーパッドのボタンを使って呼び出すことができます。次の表では、コマンドの使用の可否、対応するキーパッドボタン、および MMAPI の関連クラスについて説明します。

コマンドおよび対応するキーパッドボタンの簡易リストは、Simple Player アプリケーション自体にも用意されています。メニューから「Quick Help」を選択してください。

A.13.3 Video

Video アプリケーションは、エミュレータでアニメーション GIF の再生やビデオの取り込みを行う方法を示します。カメラを備えた実際のデバイスでは、ビデオの取り込みを使用して、カメラに写っているものを確認できます。

アニメーション GIF やビデオの取り込みは、Form Item または Canvas を使用して実装できます。Video デモアプリケーションには、可能な組み合わせがすべて含まれています。Animated GIF - Form [jar] は、アニメーション GIF をフォームアイテムとして表示します。フォームには、現在の時間など、再生に関する情報が含まれています。「Snapshot」コマンドを選択すると、実行中のアニメーションのスナップショットを作成できます。スナップショットは、アニメーション GIF に続いてフォームに配置されます。

MPEG1 アプリケーションは Web から MPEG を取得します。したがって、ファイアウォール内にいる場合は、エミュレータのプロキシサーバーを設定する必要があります。

「編集」->「環境設定」を選択し、「ネットワーク構成」を選択します。「プロキシサーバーを使用」にチェックマークを付けます。プロキシサーバーのアドレスとポート番号をフィールドに入力します。このデモでは、「HTTP/1.0」を選択します。

デモを再生するときに、WTK がデータを取得するまでに数秒かかります。MPEG1 デモは、それぞれ Video Capture - Form および Video Capture - Canvans と同じように動作します。

A.13.4 Pausing Audio Test

この MIDlet は、一時停止された MIDlet が実行中のプレーヤーを停止していない場合に、Sun JavaTM Wireless Toolkit for CLDC が警告を生成する仕組みをデモします。MIDlet を起動したら、「Play」コマンドを選択してオーディオの再生を開始します。画面には、「Well-behaved」または「Not Well-Behaved」のいずれかの状態が表示されます。

エミュレータウィンドウのメニューから、「MIDlet」->「一時停止」を選択します。MIDlet が一時停止されます。ツールキットのコンソールにはメッセージは表示されません。エミュレータウィンドウのメニューから、「MIDlet」->「再開」を選択します。

ここで、「Misbehave」コマンドを選択します。再度 MIDlet を一時停止します。ツールキットのコンソールに、「An active media (subtype Player) resource was detected while the MIDlet is paused. Well-behaved MIDlets release their resources in pauseApp()」という警告が表示されます。

A.13.5 MobileMediaAPI の属性

MobileMediaAPI のアプリケーションには、次のような属性があります。これらの属性は、プロジェクト設定ダイアログボックスの「ユーザー定義」タブで変更できます。


表 A-4 MMAPI 固有の MIDlet 属性の説明

属性

説明

PlayerTitle-n

Simple Player MIDlet で再生される n 番目のメディアタイトルの名前です。

PlayerURL-n

Simple Player MIDlet で再生される n 番目のメディアタイトル (PlayerTitle-n) の場所です。

VideoTest-n

Video アプリケーションで再生される n 番目のメディアタイトルの名前です。

VideoTest-URLn

Video アプリケーションで再生される n 番目のメディアタイトル (VideoTest-n) の場所です。


 


A.14 Network デモ

このデモには、Socket Demo と Datagram Demo の 2 つの MIDlet があります。それぞれのデモでは、サーバーとクライアントの関係をエミュレートできるように、2 つのエミュレータインスタンスを実行する必要があります。

A.14.1 Socket Demo

エミュレータインスタンスを 2 つ実行します。一方をソケットサーバーとして実行し、もう一方をソケットクライアントとして実行します。

1 つ目のエミュレータで、アプリケーションを起動し、「Server peer」を選択します。「Start」を選択します。エミュレータから、デモでネットワークを通じてデータが送受信されることを示すメッセージが表示され、「Is it OK to use network?」という確認のメッセージが表示されます。「Yes」を選択します。ソケットサーバーにより、接続を待機していることを示す画面が表示されます。

2 つ目のエミュレータで、アプリケーションを起動し、「Client peer」を選択します。次に、「Start」を選択します。エミュレータから、デモでネットワークを通じてデータが送受信されることを示すメッセージが表示され、「Is it OK to use network?」という確認のメッセージが表示されます。「Yes」を選択します。ソケットクライアントにより、サーバーに接続されたことを示す画面が表示されます。ナビゲーションの下矢印キーを使用して、「Send」ボックスを強調表示します。「Send」ボックスにメッセージを入力して、「Send」ソフトウェアボタンを選択します。

たとえば、クライアントで、「Send」ボックスに Hello Server と入力します
(図 A-22 を参照)。「Send」ソフトウェアボタンを選択します。送信中、エミュレータでは青いライトが点灯します。

図 A-22 ソケットクライアントからのメッセージの送信


Socket Client connected to server sends Hello Server message.

ソケットサーバーを実行しているエミュレータでは、「Status」に「Message received - Hello Server」と表示されます。下矢印キーを使用して「Send」ボックスに移動し、返信を入力します。たとえば、「Hello Client, I heard you」と入力します。「Send」を選択します。図 A-23 を参照してください。

図 A-23 サーバーでの受信メッセージと送信メッセージの表示


Socket Server displays message received and sends a return message

ソケットクライアントでは、「Status」にサーバーから受信したメッセージが表示されます。新しいメッセージを送信するまで、「Send」ボックスには送信済みのメッセージがそのまま表示されます。

A.14.2 Datagram Demo

このデモは Socket Demo に似ています。

エミュレータインスタンスを 2 つ実行します。一方をデータグラムサーバーとして実行し、もう一方をデータグラムクライアントとして実行します。

1 つ目のエミュレータで、Datagram Demo を起動し、「Server peer」を選択します。「Start」を選択します。エミュレータから、デモでネットワークを通じてデータが送受信されることを示すメッセージが表示され、「Is it OK to use network?」という確認のメッセージが表示されます。「Yes」を選択します。起動後、データグラムサーバーのステータスは「Waiting for connection」になり、「Send」ボックスは空です。

2 つ目のエミュレータで、Datagram Demo を起動し、「Client peer」を選択します。次に、「Start」を選択します。エミュレータから、デモでネットワークを通じてデータが送受信されることを示すメッセージが表示され、「Is it OK to use network?」という確認のメッセージが表示されます。「Yes」を選択します。データグラムクライアントのステータスは、「Connected to server」になります。ナビゲーションの下矢印キーを使用して、「Send」ボックスを強調表示します。「Send」ボックスにメッセージを入力して、「Send」ソフトウェアボタンを選択します。たとえば、「Hello datagram server」と入力します。

データグラムサーバーを実行しているエミュレータでは、「Status」に「Message received - Hello datagram server」と表示されます。下矢印キーを使用して「Send」ボックスに移動し、クライアントへの返信を入力します。

データグラムクライアントでは、「Status」フィールドにサーバーから受信したメッセージが表示されます。「Send」ボックスには、最後に送信したメッセージがそのまま表示されます。


A.15 ObexDemo

このアプリケーションは、OBEX API を使用してエミュレータインスタンス間で画像ファイルを転送する方法を示します。このデモアプリケーションは、シミュレートされた赤外線接続を介して OBEX を使用する方法を示します。

エミュレータインスタンスを 2 つ実行します。一方は接続の着信を待機し、他方は画像の送信を試みます。1 つ目のエミュレータでアプリケーションを起動して、「Obex Demo」を選択します。次に、「Receive Image」を選択します。エミュレータから、OBEX 接続がほかのデバイスに通信を許可することを示すメッセージが表示され、「Is it OK to make the connection?」という確認のメッセージが表示されます。「Yes」を選択します。待機側のエミュレータに、接続の着信を待機していることを示す画面が表示されます。

2 つ目のエミュレータ (送信側) で、Obex Demo を起動し、「Send Image」を選択します。画像の一覧が表示されます。1 つを選択し、「Send」をクリックします。エミュレータから、デモがクライアント接続を発信してよいかどうかを確認するメッセージが表示されます。「Yes」を選択します。「Send Image」ユーティリティーが画像をアップロードします。

待機側のエミュレータでは、ユーティリティーから画像の着信に関する情報が表示され、「Would you like to receive it?」というメッセージが表示されます。図 A-24 を参照してください。

図 A-24 接続の受け付けを確認中の待機側のエミュレータ


First emulator receives image from second emulator and prompts user to receive it.

「Yes」を選択します。選択した画像が、シミュレートされた赤外線接続リンクを介して転送され、最初のエミュレータに表示されます。図 A-25 を参照してください。

図 A-25 正常に転送された画像


Received image in first emulator


A.16 PDAPDemo

PDAPDemo は、PIM API と FileConnection API の使用方法を示します。これらの API は、JSR 75 仕様に含まれています。

A.16.1 ファイルの参照

ファイルブラウザを実行するには、MIDlet に適切なセキュリティー承認が付与されていない場合、これを付与する必要があります。「編集」->「環境設定」を選択します。「セキュリティー」タブをクリックします。「セキュリティードメイン」を「maximum」に変更し、「了解」をクリックします。

PDAPDemo プロジェクトを開き、実行します。FileBrowser MIDlet を起動します。ディレクトリのリストが表示され、利用可能なディレクトリとファイルを参照できます。デフォルト設定では、root1 というディレクトリだけが存在します。

図 A-26 ファイルの参照


FileBrowser midlet displaying root1 directory

ディレクトリを選択し、「SELECT」ボタンをクリックしてそのディレクトリに入ります。

図 A-27 root1 ディレクトリの内容


File Browser midlet displaying contents of root1 directory

デモアプリケーションのコマンドを使用して、ファイルやファイルのプロパティーを表示できます。ファイルを選択し、メニューから「Properties」または「View」を選択してみてください。

図 A-28 ファイルの内容とファイルのプロパティーの表示


Readme file properties displayed in left image, Readme file contents displayed in right image

DefaultColorPhone エミュレータスキンを使用している場合、実際のファイルは workdir¥appdb¥DefaultColorPhone¥filesystem にあります。必要に応じてファイルやルートディレクトリを追加できます。これらは、JSR 75 File API で可視になります。詳細は、第 10 章を参照してください。

A.16.2 PIM API

JSR75 PIM APIs サンプルは、連絡先リスト、カレンダ、予定表リストなどの個人情報にアクセスする方法をデモします。このサンプルを起動し、メインメニューからリストの種類を選択します。

このデモアプリケーションでは、どのリストの種類も同様に動作し、リストの種類ごとに 1 つのリストが含まれています。たとえば、「Contact Lists」を選択すると、そこには「Contacts」というリストだけが含まれています。「Event Lists」には「Events」というリストだけが含まれ、「To Do Lists」には「To Do」というリストだけが含まれています。

図 A-29 リストの種類の選択


PIM API prompts user to select list type, one of Contact Lists, Event Lists, or To-do lists

リストの種類を選択し、特定のリストを選択すると、リスト内のすべてのアイテムを表示できます。このサンプルをはじめて実行するとき、このリストは空になっている可能性があります。

アイテムを追加するには、メニューから「New」を選択します。アイテムの「書式化された名前」を入力するように求めるメッセージが表示されます。このアイテムにデータフィールドを追加するには、メニューから「Add Field」を選択します。フィールド名の一覧が表示されます。1 つを選択し、この新しいフィールドの値を入力します。

図 A-30 連絡先のフィールドの追加


PIM Item being entered for contact list

リストのアイテムを保存するには、メニューから「Commit」(オプション 3) を選択します。

リストに戻るには、「Back」コマンドを選択します。作成したアイテムがリストに表示されます。

作成したアイテムは、標準の vCard 形式または vCalendar 形式で workdir¥appdb¥skin¥pim ディレクトリに保存されます。詳細は、第 10 章を参照してください。

PIM API では、連絡先、カレンダ、および予定表のアイテムを標準形式でエクスポートできます。正確な形式は、リストの種類によって異なります。いずれかのリストでアイテムを表示しているとき、エクスポートされたアイテムを表示するコマンドがメニューに表示されます。

たとえば、連絡先リストのアイテムを表示しているときは、メニューに「Show vCard」コマンドが表示されます。このコマンドを選択すると、エクスポートされたアイテムが画面に表示されます。カレンダのアイテムと予定表のアイテムは、どちらも vCalendar 形式でエクスポートされます。


A.17 SATSADemos

SATSADemos には、SATSA (Security and Trust Services APIs) のデモが含まれています。デモの多くは、スマートカードとの通信方法を示します。エミュレータは、ソケットプロトコルを使用してシミュレートされたスマートカードと通信できます。ツールキットには、スマートカードシミュレータの cref が含まれています。詳細は、第 14 章を参照してください。

次の各節には、このデモのメニュー項目に対する指示が含まれています。それぞれのデモでは、エミュレータを起動する「前に」次の操作を実行する必要があります。

A.17.1 APDUMIDlet

この MIDlet は、データの小さいパケットである APDU (Application Protocol Data Unit) を使用した、スマートカードとの通信をデモします。APDUMIDlet では、2 つのシミュレートされたスマートカードを使用します。cref を使用してスマートカードシミュレータを実行できます。cref は、Java Card Development Kit の一部です。

Mohair アプリケーションには、cref で使用できるビルド済みのメモリーイメージが含まれています。メモリーイメージには、Mohair が対話する Java Card アプリケーションが含まれます。メモリーイメージは、Mohair プロジェクトのルートディレクトリに保存されます。

Windows では、次のように cref のインスタンスを 2 つ起動します。シミュレートされたカードスロットごとに 1 つです。ここでは、現在のディレクトリがツールキットのインストールディレクトリであると想定します。

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) は、第 14 章で説明したように、SATSA の環境設定で指定したポート番号に一致させる必要があります。また、demo2.eeprom の正しいパスを使用していることを確認してください。

2 つのスマートカードシミュレータを正しく実行したら、APDUMIDlet を実行できます。

A.17.2 SATMIDlet

SATMIDlet は、APDU 通信と少しだけ異なるスマートカード通信をデモします。

シミュレートされたスマートカードを設定するには、APDUMIDlet の場合と同様に cref を使用します。この場合は、ポート番号を指定する必要はありません。また、メモリーイメージが異なります。


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 には 2 つの機能があります。Find slots では、利用可能なすべてのカードスロットが表示されます。各スロットの番号には C または H が付加され、それぞれコールドスワップ可能またはホットスワップ可能を表します。スロットを確認したら、「Back」を選択して最初の画面に戻ります。

MohairMIDlet の 2 つ目の機能の SATSA-PKI Sign test では、スマートカードを使用してデジタル署名を生成します。前のデモと同様に、適切なメモリーイメージで cref を実行して、MohairMIDlet からの接続を準備する必要があります。インストールディレクトリで、次のように入力します。


Windows:

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

Linux:

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


 

エミュレータで、SATSA-PKI Sign test を強調表示し、「SELECT」を選択します。次の確認メッセージが表示されます。

This certificate will be used: MohairAuth

「OK」ソフトウェアボタンを選択します。

PIN 1 に 1234 と入力します。

「OK」ソフトウェアボタンを選択します。次の確認メッセージが表示されます。

This string will be signed: JSR 177 Approved

「OK」ソフトウェアボタンを選択します。次の確認メッセージが表示されます。

This certificate will be used: MohairAuth

「OK」ソフトウェアボタンを選択します。

否認防止キー 1 PIN に、2345 と入力します。


A.18 SATSAJCRMIDemo

このアプリケーションには、JCRMIMIDlet という MIDlet のみが含まれています。この MIDlet は、カードに対応したリモートオブジェクトプロトコルの、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) を使用して 2 つのデバイス間で直接通信を行う簡単な例です。通常、デバイスはプロキシサーバーで SIP を使用して、直接通信を設定します。プロキシを含む詳細な例については、GoSip を参照してください。

SIPDemo の動作を確認するには、エミュレータのインスタンスを 2 つ実行します。1 つ目のエミュレータで、「Receive message」を選択します。デフォルトのポート 5070 を使用して、「Receive」を選択します。これで、1 つの目のエミュレータは着信メッセージの待機中になります。

2 つ目のエミュレータでは、「Send message」を選択します。受信側、ポート番号、件名、およびメッセージの値を入力するか、デフォルト設定をそのまま使用して、「Send」を選択します。1 つ目のエミュレータに、メッセージが表示されます。1 つ目のエミュレータの応答が、2 つ目のエミュレータに表示されます。

ネットワークモニターを有効にして、再度操作を実行します。ネットワークモニターの「SIP」タブで、エミュレータ間の通信を確認できます。


A.20 SVGContactList

このアプリケーションでは、同じ連絡先リストの情報とニュースバナーを、異なるスキンを使用して表示します。各スキンでは色とフォントが異なります。

「SVGContactlist(skin 1)」または「SVGContactlist(skin 2)」を選択して、「起動」をクリックします。

上下の矢印キーを使用して、連絡先のリストを移動します。強調表示された名前にマーク (> または中点) が付けられ、大きなフォントで表示されます。

図 A-31 スキン 2 で表示した連絡先リスト


Contact shown with Skin 2, italic fonht

「SELECT」ボタンを押して、強調表示された名前の詳細な情報を表示します。

図 A-32 連絡先リストの詳細


Contact List Details

もう一度「SELECT」を押して、連絡先リストに戻ります。


A.21 SVGDemo

このスイートには、JSR 226 の Scalable 2D Vector Graphics API for J2ME のさまざまな使用方法をデモする MIDlet が含まれています。この API では、SVG コンテンツをロード、操作、描画、および再生する方法が提供されます。

Scalable Vector Graphics (SVG) 1.1 の仕様では、XML で 2 次元グラフィックスを描画するための言語が定義されています。完全な仕様は、http://www.w3.org/TR/SVG11/ で入手できます。

SVG Tiny (SVGT) は、携帯電話などの小型デバイスに適した SVG のサブセットです。http://www.w3.org/TR/SVGMobile/ を参照してください。SVG Tiny は、高度な対話型アニメーション 2D コンテンツを記述するための、コンパクトで強力な XML 形式です。グラフィカルな要素は、SVG マークアップで論理的にグループ化および識別できます。

A.21.1 SVG Browser

SVGBrowser MIDlet は、電話のファイルシステムにある SVG ファイルを表示します。このデモを実行する前に、SVG ファイルを workdir¥appdb¥DefaultColorPhone¥filesystem¥root1 ディレクトリに保存します。

デモを起動します。アプリケーションにより、root1 の内容が表示されます。SVG ファイルを選択し、「Open」ソフトウェアボタンを選択します。

A.21.2 Render SVG Image

Render SVG Image は、ファイルから SVG 画像をロードして描画します。デモコードを見ると、表示領域に合わせて画像のサイズが変更されていることがわかります。出力される画像は鮮明でシャープです。

A.21.3 Play SVG Animation

このアプリケーションは、ハロウィーンのグリーティングカードを描画する SVG アニメーションを再生します。8 を押すと再生します。また、5 で開始し、0 で停止します。8 を押した場合、5 を押すとアニメーションが再開されます。0 を押した場合、5 を押すとアニメーションが最初から開始されます。

SVG ファイルには、この短いアニメーションに関するさまざまな画像要素の時間変化が記述されます。

次のコード例では、SVG リソースをロードするために、JSR 226 の javax.microedition.m2g.SVGImage クラスが使用されています。続いて、javax.microedition.m2g.SVGAnimator クラスが SVG アニメーションのすべての構造を取得し、アニメーションを再生する java.awt.Component または javax.swing.JComponent を提供します。SVGAnimator クラスは、アニメーションを再生、一時停止、および停止するメソッドを提供します。


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 Create SVG Image from Scratch

このデモでは、API 呼び出しを使用して画像を作成します。空の SVGImage を作成してグラフィックのコンテンツを取り込み、そのコンテンツを表示します。

A.21.5 Bouncing Balls

Bouncing Balls デモでは、SVG アニメーションを再生します。8 を押すと再生します。また、5 で開始し、0 で停止します。8 を押した場合、5 を押すとアニメーションが再開されます。0 を押した場合、5 を押すとアニメーションが最初から開始されます。

A.21.6 Optimized Menu

このデモでは、選択したアイコンに黄色い枠が表示されます。別のアイコンに移動すると、そのアイコンが選択され、前のアイコンは非選択の状態に戻ります。アイコンのグリッドを超えて移動すると、選択はループして行われます。つまり、行の末尾のアイコンが選択されている場合、右に移動すると同じ行の先頭のアイコンが選択されます。

このデモは、豊富な機能 (グラフィックス、アニメーション、高度な 2D 描画) と、グラフィックの操作、事前描画、または再生に関する柔軟性という、UI マークアップと Java の組み合わせによって提供される柔軟性を示しています。

この例では、非選択状態から選択状態へのメニューアイコンの切り替え状態を定義する SVG アニメーションを、グラフィックアーティストが作成しています。プログラムにより、各アイコンのアニメーションシーケンスが、JSR 226 API を使用して (あとで高速に描画するために) オフスクリーンバッファーに個別に描画されます。

バッファリングにより、MIDlet はデバイスの画面解像度に適合することができ (グラフィックスが SVG 形式で定義されているため)、ビットマップの描画速度を維持できます。また、MIDlet は引き続き SVG のアニメーション機能を利用しています。

メニュー項目の外観とアニメーションの効果を定義する作業 (グラフィックアーティストおよびデザイナーの作業) は、メニューを表示しメニューの選択に基づいてアクションを開始する作業 (開発者の作業) と完全に切り離されています。アーティストと開発者の両方が SVG ドキュメント構造の規則に従う限り、これらの 2 つの作業は独立して変更することができます。

A.21.7 Picture Decorator

このデモでは、電話のキーを使用して、写真に装飾を追加します。各キーの機能は次のとおりです。


1

縮小

2

次の画像

3

拡大

4

ヘルプ

5

水平方向に反転

6

垂直方向に反転

7

反時計回りに回転

8

前の画像

9

時計回りに回転

#

ピッカーオプションを表示


 

このデモでは、装飾を行う 16 の画像が用意されています。

2 と 8 のキーを使用して、次の写真または前の写真に移動します。

装飾するには、# を押してピッカーを表示します。矢印キーを使用して、グラフィックオブジェクトを強調表示します。強調表示されたオブジェクトは拡大されます。「SELECT」を押して現在のグラフィックを選択するか、矢印キーを押して別のグラフィックを強調表示します。もう一度「SELECT」を押して、写真にグラフィックを追加します。装飾を追加すると、グラフィックに赤い + が表示されます。これは装飾が選択され、移動、サイズ変更、および操作が可能であることを示します。

図 A-33 吹き出しが選択されている装飾された画像


Picture of Duke mug with Duke decoration, mustache, and selected quotation.

ナビゲーションの矢印キーを使用して、グラフィックを移動します。1 キーを使用するとグラフィックが縮小され、3 キーを使用するとグラフィックが拡大されます。5 または 6 を使用するとグラフィックが反転し、7 または 9 で回転します。位置が決まったら、「SELECT」を押します。緑色の三角形が表示されます。これはカーソルです。ナビゲーションキーを使用して、緑色の三角形を画像上で移動します。カーソルがオブジェクトに重なると、オブジェクトが赤いボックスで強調表示されます。「SELECT」を押します。赤色の + はオブジェクトが選択されていることを示します。

図 A-34 強調表示されている口ひげ


Picture of Duke mug with Duke decoration, quote, and highlighted mustache.

装飾 (プロパティー) を削除するには、オブジェクトを選択し、「メニュー」ソフトウェアボタンをクリックします。2 を押して、プロパティーを削除します。

A.21.8 Location Based Service

アプリケーションを起動します。スプラッシュ画面が表示されます。この画面はヘルプとしても使用されます。移動ガイドの初期表示は、サンフランシスコの市街図です。港 (青色) が画面の右側に表示されます。1 を押すと移動ガイドを開始します。アプリケーションにより、地図上でのユーザーの所在位置が拡大表示されます。進路を変更するたびに、方向が横長の白いボックスの中に表示されます。移動ガイドの実行中に 7 を押すと、マップが反時計回りに回転します。マップを回転させると、テキストは縦長の向きで表示されます。もう一度 7 を押すと、デフォルトの向きに戻ります。4 を押すと、ヘルプ画面が表示されます。

図 A-35


Prompts are displayed according to location


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 テキストメッセージの送信


Send a Message - SMS dialog with Text SMS tab selected

WMADemo アプリケーションを起動してもよいかどうかを尋ねるメッセージが表示されます。

図 A-37 転送レジストリのメッセージ


WMADemo asks if it can be launched.

「はい」を選択します。SMSReceive MIDlet が起動され、着信した SMS メッセージがすぐに表示されます。

図 A-38 着信したテキストメッセージ


Sample incoming text message

WMA コンソールを使用して、CBS メッセージや MMS メッセージの送受信を行うこともできます。詳細は、第 7 章を参照してください。



注 - WMA コンソールを使用してテキストメッセージを WMADemo に送信するときは、ポート番号として必ず 50000 を指定してください。CBS メッセージの場合は、ポート番号 50001 を使用します。MMS メッセージの場合は、アプリケーション ID として example.mms.MMSDemo を使用します。



たとえば、WMA コンソールからエミュレータに MMS メッセージを送信するには、前述のように「OTA 経由で実行」を使用して WMADemo をインストールしておきます。デモを起動して、「MMS Receive」を選択します。

WMA コンソールの「MMS の送信...」をクリックして、MMS 作成ウィンドウを開きます。メッセージの件名、アプリケーション ID example.mms.MMSDemo、および実行中のエミュレータの電話番号を入力します。

図 A-39 MMS メッセージの送信先の指定


Send a Message -MMS window with Header tab selected. Address is supplied in header tab.

次に「部分」タブをクリックします。WMA コンソールでは、MMS メッセージの一部として送信するファイルをハードディスクから選択できます。メッセージにファイルを追加するには、「追加」をクリックします。送信するファイルをファイルブラウザで探し、「了解」をクリックします。

図 A-40 MMS メッセージへの部分の追加


Send a Message -MMS window with Parts tab selected. Displays fields for File, Content-Location, Content-ID, Mime-Type, Encoding, and Size.

「送信」をクリックしてメッセージを送信します。

WMADemo を起動してもよいかどうかを尋ねるメッセージが表示されます。「はい」をクリックします。画像とその情報が表示されます。

図 A-41 WMADemo での画像の受信


WMADemo shows sargent-millet.png image received