Download - BREW を学ぶ
BREW を学ぶ
情報工学科1組 石原 第4週目
Microsoft Visual Studio .NET 2003 を使ってBREW アプリの作成手順を学ぶ
"HelloWorld" プログラムを作る
BREW エミュレータで実行する BREW アプリケーションの実体は
.dll ファイルです。これを "BREW モジュール " という。BREW モジュールには、必ず MIF ファイルが必要で、HelloWorld.dll モジュールには HelloWorld.mif というファ
イルが必要になる。この二つは必ずペアで扱う。 MIF ファイルは BREW モジュールに関するメタ情報を記述するためのもの。
画面に "Hello World" と表示する簡単な BREW アプリを作成する。
BREW アプリケーションを開発に必要な作業
各 BREW アプレットのクラス ID の作成 各 BREW アプレットの振る舞いの実装 BREW モジュールのメタ情報を記述した MIF ファイルの作成 BREW モジュール (DLL) の作成
MIF ファイルの作成
HelloWorld アプリケーションでは、 HelloWorld.dll という BREW モジュールに、 “ HelloWorld” という名前の BREW アプレットを含めることにする。
HelloWorld アプレットのクラス ID は 0x1234 にする。これらの BREW モジュールの情報や、そこに含まれているアプレットの情報は、 MIF ファイルに格納する。まず MIF ファイルの作成手順を見ていく。
BREW MIF エディタ を起動。 BREW モジュールに一つのアプレットを含め
る設定を行う。まず [ アプレット ] タブの [ 新規アプレット ] ボタンを押す。
[ClassID の生成 ] ダイアログが表示されるので、 [ 名前 ] に “ HelloWorld” と入力し、[ ローカル ] ラジオボタンを選択する。また [ClassID] に "1234" と入力。
HelloWorld.bid というファイル名で保存。 このファイルに HelloWorld アプレットの クラス ID が格納される。 MIF エディタに戻り、 [ アプレット ] タブの [Cl
assID]
から 0x00001234 を選択する。これは HelloWorld
アプレットを表すクラス ID 。 アプレットの名前や種類、アイコンを設定する。 [ 名前 ] には “ Hello World” と入力し、 [ アプ
レットの種類 ] では “ツール” を選択。 HelloWorld.mif というファイル名で保存。
* .bid ファイルの中身 MIF ファイルを作成する途中で .bid ファイル
を作成。このファイルは、 BREW アプレットのクラス ID を定義した C 言語のヘッダーファイルで、テキストエディタで開いてみると、次のようになっていることが分かる。
#define AEECLSID_HELLOWORLD
0x00001234
この .bid ファイルは、後で BREW アプレットの実装を行うときに、ソースコードにインクルードすることになる。
BREW プロジェクト (DLL ファイル)の作成
Microsoft Visual Studio .NET 2003 を起動 。 メニューの [ ファイル ] - [ 新規作成 ] - [ プロジェクト ]
を選択し、 [Visual C++ プロジェクト ] を選択
ウィザードの [ ステップ 1/2] では、 BREW アプリケーションで使用する機能。以下のような機能がある。
今回は “ Hello World” と表示するだけの単純なアプリケーションでいずれの機能も使用しないので、何も選択せずに [Finish] ボタンをクリック。
BREW プロジェクトの内容
BREW アプリケーション ウィザードが生成したファイルを調べてみる。 Visual C++ の左側の [FileView] タブを見ると、三つのファイルがプロジェクトに追加されている。 AEEAppGen.c AEEModGen.c HelloWorld.c
* AEEAppGen.c と AEEModGen.c
この二つのファイルは、 BREW アプリケーション ウィザードで
生成した複数の BREW プロジェクトから共有されるソース コードなので、不用意に編集してはいけない。
[FileView] で HelloWorld.c をダブルクリックして、このファイルを開いてみる。
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;}
//// 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;}
BREW ウィザードが生成したコードは、AEEClsCreateInstance() と HelloWorld_HandleEvent()という二つの関数。 AEEClsCreateInstance() は、ユーザーが BREW アプレッ
トのアイコンを選択して起動したときに呼び出される関数。開発者はこの関数内で BREW アプレットのデータ構造体を作成して返す必要がある。
HelloWorld_HandleEvent() は、ユーザーが携帯電話のキーを押したり、アプリを終了させたりなど、さまざまな操作を行ったときに呼び出される関数。
BREW アプレットの構造
BREW アプレットは、 “アプレット構造体” と “イベント ハンドラ” のペアで構成される。
アプレット構造体とは、 BREW アプレットがデータを格納するための構造体で、そのアプレットでグローバルに使用する変数などを格納しておく。 BREW ウィザードが生成したコードでは、デフォルトで AEEApplet 構造体が使用されている。
イベント ハンドラとは、 BREW 実行環境からのさまざまな通知を受け取る関数で、ユーザーがキーを押したときなどに呼び出される。 BREW ウィザードが生成したコードでは、デフォルトで HelloWorld_HandleEvent() 関数が使用されている。
画面への描画 //// アプレットが開始したときに呼び出される。//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);
}
BREW エミュレータ用にコンパイルする すべてのファイルを確認。
Helloworld.bid と HelloWorld.mif は 他のファイルと同じフォルダ内に入れておく。
コンパイルを行うには、 メニューから [ ビルド ] - [ ソリューションのビルド ] を選択。ソースコードに誤りがなければ、正常にビルドが行われ、アウトプット ウィンドウに次のようなメッセージが表示される。 HelloWorld.dll - エラー 0 警告 0HelloWorld プロジェクト フォルダに、 HelloWorld.dll というファイルが作成される。
BREW エミュレータで実行する
BREW エミュレータで動作させるためには、 HelloWorld.dll ファイルと HelloWorld.mif ファイルが必要。この二つのファイルを次のような場所にコピー。 C:\Applet\HelloWorld.mif C:\Applet\HelloWorld\HelloWorld.dllBREW エミュレータを起動。デフォルトでは BREW SDK のExamples フォルダにある BREW アプレットがエミュレータ画面に表示されるので、エミュレータの読み取るフォルダを C:\Applet に変更する必要がある。メニューから [ ファイル ] - [ アプレットディレクトリの変更 ] を選択し、 [ フォルダの参照 ] ダイアログで C:\Applet フォルダを選択して [OK] を押す。
最初のアイコンを選択した状態で画面に “ Hello World” というタイトルが表示されていれば、 BREW エミュレータが MIF ファイルを認識している証拠。この段階ではアプリケーション本体である .dll は実行されていない。タイトルの "Hello World" というテキストは、 MIF ファイルの [ アプレット ] タブの [ 名前 ] 項目に入力したものが表示される。アイコンを選択した状態で Enter を押して、画面中央に太字で“Hello World” と表示されれば作成されたことになる。
今後の予定
BREW エミュレータの基本ツールを把握しておく。
また次回までに、 BREW API の基本的な使い方についてサンプルプログラムを使い、学んでいく。
また、参考書を見て知識を深め、次回以降のオリジナルのアプリを作成するための構想を立て
る。
参考資料株式会社 ソフィア・クレイドル HPhttp://www.s-cradle.com/developer/index.html#brew