1.開発の準備

(5)J2ME Wireless Toolkit 2.2のインストール


AUのオープンアプリを動作させるにはJ2ME Wireless Toolkit 2.2をダウンロードしてインストールします。
さらにパッチをダウンロードします。

◎テキストエディタ

現時点でEclipseから実行できないので、テキストエディタを用いプログラムを入力する必要があります(2007 2.13現在)
「テキストエディタ」は、テキストを編集するためのアプリケーションです。Windows標準のメモ帳でもできますが、使いにくいので自分にあったテキストエディタを使うと良いでしょう。有名なフリーのテキストエディタにはTeraPadなどがあります。

プロジェクトの作成


「プロジェクト」は、アプリの開発に必要なファイルを管理するための単位です。
Windowsのスタートメニュー「プログラム⇒J2ME Wireless Toolkit 2.2⇒KToolbar」で「KToolbar」を起動後、「新規作成」ボタンを押して下さい。「新規作成ダイアログ」が開くので、プロジェクト名とクラス名に"HelloWorld"と入力します。




次に「プロジェクトの設定ダイアログ」が開きます。ここでは使用するAPIを選択します。ターゲットプラットフォームでは「JTWI」を選択します。「JTWI」は携帯電話機でJavaを利用するためのガイドラインで、主要なAPIをまとめたものです。「CLDC1.1」を選択し、オプションやその他のAPIは使わないのでチェックをはずして下さい。



[プロジェクトの作成]ボタンを押すと「J2ME Wireless Toolkit」のインストール先(C:\WTK22\)の「apps」フォルダ内に、新しく「HelloWorld」フォルダが生成され(C:\WTK22\apps\HelloWorld)、この中にはさらに、次の4つのフォルダが生成されます。

フォルダ 中身
bin JARファイルとJADファイル
lib ライブラリファイル
res 画像ファイルやサウンドファイル
src ソースコード

ソースコードの記述


テキストエディタを使って次に示すプログラムを入力し、プロジェクトのsrcフォルダ(C:\WTK22\apps\HelloWorld\src)に保存します。ファイル名は"HelloWorld.java"にしてください。

HelloWorld.java
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

//HelloWorld(本体)
public class HelloWorld extends MIDlet {

    //コンストラクタ
    public HelloWorld() {
        Display.getDisplay(this).setCurrent(new HelloCanvas());
    }

    //アプリの開始
    public void startApp() {
    }

    //アプリの一時停止
    public void pauseApp() {
    }

    //アプリの終了
    public void destroyApp(boolean flag) {
    }
}
//HelloWorld(キャンバス)
class HelloCanvas extends Canvas {

    //描画
    public void paint(Graphics g) {
        g.setColor(255,255,255);
        g.fillRect(0,0,getWidth(),getHeight());
        g.setColor(0,0,0);
        g.drawString("Hello Java!",0,0,Graphics.LEFT|Graphics.TOP);
    }
}

HelloWorldクラスのソースコード解説


HelloWorldクラスは、プログラムの本体となるクラスです。

◎MIDletクラス「javax.microedition.midletMIDlet」クラスは、アプリの土台となるクラスで、全てのアプリはこのクラスを継承して、アプリ本体となるクラスを作ります。MIDletクラスを継承したクラスは、次の3つのメソッドをオーバーライドする必要があります。

[MIDletクラス]
void startApp()
アプリの開始時によばれる。

[MIDletクラス]
void pauseApp()
アプリの一時停止時に呼ばれる。

[MIDletクラス]
void destroyApp(flag)

flag 全リソースを解放すべき時はtrue:boolean型
アプリの終了時に呼ばれる。

◎Displayクラス
「javax.microedition.lcdui.Display」クラスのgetDisplay()メソッドでDisplayオブジェクトを取得し、そのオブジェクトのsetCurrent()メソッドで、描画処理を行う「キャンバス」を指定します。

[Displayクラス]
static Display getDisplay(midlet)

midlet MIDletオブジェクト:MIDlet型
戻り値 Displayオブジェクト:Display型
Displayオブジェクトを取得する。

[Displayクラス]
void setCurrent(displayable)

displayable キャンバスまたはフォーム:Displayable型
キャンバスまたはフォームを指定する。

HelloCanvasクラスのソースコード解説


HelloCanvasクラスは、キャンバスとなるクラスです。

◎CanvasクラスとGraphicsクラス
「javax.microedition.lcdui.Canvas」クラスはキャンバスの土台となるクラスで、キャンバスとなるクラスはこのクラスを継承します。Canvasを継承したクラスは、paint()メソッドをオーバーライドする必要があります。

[Canvasクラス]
void paint(g)

g グラフィックス:Graphics型
描画処理を行う。

paint()メソッドは、アプリ起動時や再描画が必要な時に呼ばれます。このメソッドに引数として渡されるGraphicsオブジェクトを操作することにより、文字列や絵の描画処理を行います。
「javax.microedition.lcdui.Graphics」クラスは、文字列や絵の描画処理を行うためのメソッドを持つクラスです。

◎色の指定
色を指定するには、GraphicsクラスのsetColor()メソッドを使います。指定した色はグラフィックスの描画関連メソッドが呼ばれるたびに使われます。

[Graphicsクラス]
void setColor(red,green,blue)

red 赤(0〜255):int型
green 緑(0〜255):int型
blue 青(0〜255):int型
R値とG値とB値で色を指定する。

[Graphicsクラス]
void setColor(rgb)

rgb RGB値 :int型
RGB値で色を指定する。
RGB値=(R値<<16)+(G値<<8)+B値)

◎矩形の塗り潰し

塗り潰し四角形を描画するには、GraphicsクラスのfillRect()メソッドを使います。


[Graphicsクラス]
void fillRect(x,y,width,height)

x X座標:int型
y Y座標:int型
width 幅 :int型
height 高さ :int型
塗り潰し四角形を描画する。

画面の幅と高さを取得するには、CanvasクラスのgetWidth()メソッドとgetHeight()メソッドを使います。

[Canvasクラス]
int getWidth()

戻り値 幅:int型
キャンバスの幅を取得する。

[Canvasクラス]
int getHeight()

戻り値 高さ:int型
キャンバスの高さを取得する。

◎文字列の表示

文字列を表示するには、GraphicsクラスのdrawString()メソッドを使います。

[Graphicsクラス]
void drawString(str,x,y,anchor)

str 表示する文字列:String型
x X座標 :int型
y Y座標 :int型
anchor アンカー :int型
文字列を表示する。



「アンカー」はXY座標として指定する位置が、文字列全体のどの位置を示すかを指定するものです。左上なら「Graphics.LEFT|Graphics.TOP」、右下なら「Graphics.RIGHT|Graphics.BASELINE」というように、縦方向と横方向のアンカー定数を|で繋げて指定します。


Graphics.TOP
Graphics.BOTTOM
Graphics.LEFT
Graphics.RIGHT
Graphics.HCENTER 水平中央
Graphics.BASELINE ベースライン

JARファイルの生成


「KToolbar」の「ビルド」ボタンを押してください。メッセージ領域に「ビルドは完了しました」と表示されれば成功です。HelloWorldプロジェクトのclassesフォルダ(C:\WTK22\apps\HelloWorld\classes)にクラスファイル(HelloWorld.classとHelloCanvas.class)が生成されています。

次にメニュー「プロジェクト⇒パッケージ⇒パッケージを作成」を選択してくださいHelloWorldプロジェクトのbinフォルダ(C:\WTK22\apps\HelloWorld\bin)にJARファイル(HelloWorld.jar)を生成します。

JADファイルの生成


JARファイルが完成したら、「KToolbar」の「属性設定」ボタンを押して「JADファイル」を編集します。今回は編集する必要はないですが、オープンアプリ(Java)で設定可能な項目について一通り紹介します。

◎必須項目



MIDlet-Jar-Size Jarファイルのサイズ(バイト単位)
MIDlet-Jar-URL Jarファイルのダウンロード先URL(5〜256バイト)
MIDlet-Name アプリ名(3〜32バイトでエンコードはUTF8)
MIDlet-Vendor 開発元名(3〜32バイト)
MIDlet-Version バージョン(数値3桁でn.n.n)
MIDletEdition-Configuration CLDC1.1
MIDletEdition-Profile MIDP2.0

◎オプション項目



MIDlet-Icon アイコンファイル名
MIDlet-Data-Size レコードストアのサイズ(記載なしの場合は32KB)
MIDlet-Info-URL オープンアプリの情報サイトのURL(256バイト以下)

◎MIDlets



MIDlet-1の後にアプリ名、アイコンファイル名、最初に起動するクラスの名前を指定します。実際にはアプリ名はMIDlet-Name、アイコンのファイル名はMIDlet-Iconが利用されます。これは、1つのJARファイルに複数アプリを含めた時に利用する設定ですが、オープンアプリ(Java)では複数のアプリを含めることができないためです。

エミュレータでの実行


「エミュレータ」とは、パソコン上でアプリを実行して動作確認を行うためのツールです。「KToolbar」の「実行」ボタンを押した後、「HelloWorld」を選択して下さい。エミュレータを終了するには、ウィンドウ左上の[×]ボタンを押します。

au用デバイスファイルの設定

 au.zip をダウンロードして解凍した後、C:\WTK22\wtklib\devices にコピーします。
 実行するとき、KToolbarのデバイスでauを選択します。
 

実機での実行


実機で実行するには、パソコン用のHTMLのページを公開するのと同じように、ネット上に「JARファイル(最大300KB)」「JADファイル(最大6KB)」「ダウンロード用XHTMLファイル」をアップロードする必要があります。

XHTMLファイルでオープンアプリ(Java)をダウンロードするように指定するには、Aタグのhref属性で「device:jam?JADファイルのURL」の書式で記述します。
download.html
<html><body>
オープンアプリゲーム</br>
以下のリンクをクリックしてください。
<a href="device:jam?http://npaka.net/hoge.jad">ダウンロード</a>
</body></html>

また、サーバの設定で、Content-Lengthのヘッダと、Content-Typeの以下のMIMEタイプの対応するように設定しておく必要があります。詳しくはサーバ管理者の人に聞いてください。

拡張子 MIMEタイプ
.jad text/vnd.sun.j2me.app-descriptor
.jar application/Java-archive

実機でダウンロード用XHTMLファイルにアクセスし、ダウンロード用のリンクをクリックすれば、アプリをダウンロードすることができます。
inserted by FC2 system