Download - BREW を学ぶ

Transcript
Page 1: BREW を学ぶ

BREW を学ぶ

情報工学科1組 石原 第4週目

Microsoft Visual Studio .NET 2003 を使ってBREW アプリの作成手順を学ぶ

Page 2: BREW を学ぶ

"HelloWorld" プログラムを作る

BREW エミュレータで実行する BREW アプリケーションの実体は

.dll ファイルです。これを "BREW モジュール " という。BREW モジュールには、必ず MIF ファイルが必要で、HelloWorld.dll モジュールには HelloWorld.mif というファ

イルが必要になる。この二つは必ずペアで扱う。 MIF ファイルは BREW モジュールに関するメタ情報を記述するためのもの。

画面に "Hello World" と表示する簡単な BREW アプリを作成する。

Page 3: BREW を学ぶ

BREW アプリケーションを開発に必要な作業

各 BREW アプレットのクラス ID の作成 各 BREW アプレットの振る舞いの実装 BREW モジュールのメタ情報を記述した    MIF ファイルの作成 BREW モジュール (DLL) の作成

Page 4: BREW を学ぶ

MIF ファイルの作成

HelloWorld アプリケーションでは、 HelloWorld.dll という BREW モジュールに、 “ HelloWorld” という名前の BREW アプレットを含めることにする。

HelloWorld アプレットのクラス ID は 0x1234 にする。これらの BREW モジュールの情報や、そこに含まれているアプレットの情報は、 MIF ファイルに格納する。まず MIF ファイルの作成手順を見ていく。

Page 5: BREW を学ぶ

BREW MIF エディタ を起動。 BREW モジュールに一つのアプレットを含め

る設定を行う。まず [ アプレット ] タブの [ 新規アプレット ] ボタンを押す。

Page 6: BREW を学ぶ

[ClassID の生成 ] ダイアログが表示されるので、 [ 名前 ] に “ HelloWorld” と入力し、[ ローカル ] ラジオボタンを選択する。また [ClassID] に "1234" と入力。

Page 7: BREW を学ぶ

HelloWorld.bid というファイル名で保存。 このファイルに HelloWorld アプレットの クラス ID が格納される。 MIF エディタに戻り、 [ アプレット ] タブの [Cl

assID]

 から 0x00001234 を選択する。これは HelloWorld

 アプレットを表すクラス ID 。 アプレットの名前や種類、アイコンを設定する。  [ 名前 ] には “ Hello World” と入力し、 [ アプ

レットの種類 ] では “ツール” を選択。 HelloWorld.mif というファイル名で保存。

Page 8: BREW を学ぶ

* .bid ファイルの中身 MIF ファイルを作成する途中で .bid ファイル

を作成。このファイルは、 BREW アプレットのクラス ID を定義した C 言語のヘッダーファイルで、テキストエディタで開いてみると、次のようになっていることが分かる。

   #define AEECLSID_HELLOWORLD

0x00001234

この .bid ファイルは、後で BREW アプレットの実装を行うときに、ソースコードにインクルードすることになる。

Page 9: BREW を学ぶ

BREW プロジェクト (DLL ファイル)の作成

Microsoft Visual Studio .NET 2003 を起動 。 メニューの [ ファイル ] - [ 新規作成 ] - [ プロジェクト ]

を選択し、 [Visual C++ プロジェクト ] を選択

Page 10: BREW を学ぶ

ウィザードの [ ステップ 1/2] では、 BREW アプリケーションで使用する機能。以下のような機能がある。

今回は “ Hello World” と表示するだけの単純なアプリケーションでいずれの機能も使用しないので、何も選択せずに [Finish] ボタンをクリック。

Page 11: BREW を学ぶ

BREW プロジェクトの内容

BREW アプリケーション ウィザードが生成したファイルを調べてみる。 Visual C++ の左側の [FileView] タブを見ると、三つのファイルがプロジェクトに追加されている。 AEEAppGen.c AEEModGen.c HelloWorld.c

Page 12: BREW を学ぶ

* AEEAppGen.c と AEEModGen.c

 この二つのファイルは、 BREW アプリケーション ウィザードで

 生成した複数の BREW プロジェクトから共有されるソース コードなので、不用意に編集してはいけない。

[FileView] で HelloWorld.c をダブルクリックして、このファイルを開いてみる。

Page 13: BREW を学ぶ

HelloWorld.c //// ユーザーがアプレットを起動要求したときに、呼び出されます。// 開発者は指定されたクラス ID の BREW アプレットを作成して返す

ことで、// BREW アプレットを起動します。//int AEEClsCreateInstance( AEECLSID ClsId, // クラス ID IShell * pIShell, // シェル インターフェイス IModule * po, // モジュール インターフェイス void ** ppObj) // 作成したアプレットを返すポインタ{ *ppObj = NULL;

if (ClsId == AEECLSID_HELLOWORLD) { if(AEEApplet_New(sizeof(AEEApplet), ClsId, pIShell, po, (IApplet**)ppObj, (AEEHANDLER) HelloWorld_HandleEvent,

NULL)) {

return AEE_SUCCESS; } } return EFAILED;}

Page 14: BREW を学ぶ

//// HelloWorld アプレットのイベント ハンドラ//static boolean HelloWorld_HandleEvent( IApplet * pi, // アプレット構造体 AEEEvent eCode, // イベント コード uint16 wParam, // イベント パラメータ (16 ビット ) uint32 dwParam) // イベント パラメータ (32 ビット ){ switch (eCode) { case EVT_APP_START:

// ここにコードを追加します。 HelloWorld_OnAppStart((AEEApplet*) pi); return TRUE;

case EVT_APP_STOP:

// ここにコードを追加します。 return TRUE;

default: break; } return FALSE;}

Page 15: BREW を学ぶ

BREW ウィザードが生成したコードは、AEEClsCreateInstance() と HelloWorld_HandleEvent()という二つの関数。 AEEClsCreateInstance() は、ユーザーが BREW アプレッ

トのアイコンを選択して起動したときに呼び出される関数。開発者はこの関数内で BREW アプレットのデータ構造体を作成して返す必要がある。

HelloWorld_HandleEvent() は、ユーザーが携帯電話のキーを押したり、アプリを終了させたりなど、さまざまな操作を行ったときに呼び出される関数。

Page 16: BREW を学ぶ

BREW アプレットの構造

BREW アプレットは、 “アプレット構造体” と “イベント ハンドラ” のペアで構成される。

アプレット構造体とは、 BREW アプレットがデータを格納するための構造体で、そのアプレットでグローバルに使用する変数などを格納しておく。 BREW ウィザードが生成したコードでは、デフォルトで AEEApplet 構造体が使用されている。

イベント ハンドラとは、 BREW 実行環境からのさまざまな通知を受け取る関数で、ユーザーがキーを押したときなどに呼び出される。 BREW ウィザードが生成したコードでは、デフォルトで HelloWorld_HandleEvent() 関数が使用されている。

Page 17: BREW を学ぶ

画面への描画 //// アプレットが開始したときに呼び出される。//static void HelloWorld_OnAppStart(AEEApplet* app){ AECHAR text[] = {'H','e','l','l','o',' ','W','o', 'r', 'l', 'd', '\0'};

// 画面ビットマップに文字列を表示する IDISPLAY_DrawText(app->m_pIDisplay, AEE_FONT_BOLD, // 太字のフォント text, // 表示する文字列 -1, // -1 = 文字列をすべて表示する 0, // 無視される 0, // 無視される NULL, // クリッピングしない IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE); // 左右中央揃え、上下中央揃

// 更新された画面ビットマップを表示する IDISPLAY_Update (app->m_pIDisplay);

}

Page 18: BREW を学ぶ

BREW エミュレータ用にコンパイルする すべてのファイルを確認。

Helloworld.bid と HelloWorld.mif は 他のファイルと同じフォルダ内に入れておく。

コンパイルを行うには、 メニューから [ ビルド ] - [ ソリューションのビルド ] を選択。ソースコードに誤りがなければ、正常にビルドが行われ、アウトプット ウィンドウに次のようなメッセージが表示される。 HelloWorld.dll - エラー 0 警告 0HelloWorld プロジェクト フォルダに、 HelloWorld.dll というファイルが作成される。

Page 19: BREW を学ぶ

BREW エミュレータで実行する

BREW エミュレータで動作させるためには、 HelloWorld.dll ファイルと HelloWorld.mif ファイルが必要。この二つのファイルを次のような場所にコピー。  C:\Applet\HelloWorld.mif  C:\Applet\HelloWorld\HelloWorld.dllBREW エミュレータを起動。デフォルトでは BREW SDK のExamples フォルダにある BREW アプレットがエミュレータ画面に表示されるので、エミュレータの読み取るフォルダを C:\Applet に変更する必要がある。メニューから [ ファイル ] - [ アプレットディレクトリの変更 ] を選択し、 [ フォルダの参照 ] ダイアログで C:\Applet フォルダを選択して [OK] を押す。

Page 20: BREW を学ぶ

最初のアイコンを選択した状態で画面に “ Hello World” というタイトルが表示されていれば、 BREW エミュレータが MIF ファイルを認識している証拠。この段階ではアプリケーション本体である .dll は実行されていない。タイトルの "Hello World" というテキストは、 MIF ファイルの [ アプレット ] タブの [ 名前 ] 項目に入力したものが表示される。アイコンを選択した状態で Enter を押して、画面中央に太字で“Hello World” と表示されれば作成されたことになる。

Page 21: BREW を学ぶ

今後の予定

BREW エミュレータの基本ツールを把握しておく。

また次回までに、 BREW API の基本的な使い方についてサンプルプログラムを使い、学んでいく。

また、参考書を見て知識を深め、次回以降のオリジナルのアプリを作成するための構想を立て

る。

Page 22: BREW を学ぶ

参考資料株式会社 ソフィア・クレイドル HPhttp://www.s-cradle.com/developer/index.html#brew


Top Related