22
BREW ををを ををををを を をを を をを Microsoft Visual Studio .NET 2003 をををを BREW ををををををををををを

BREW を学ぶ

Embed Size (px)

DESCRIPTION

BREW を学ぶ. Microsoft Visual Studio .NET 2003 を使って BREW アプリの作成手順を学ぶ. 情報工学科1組 石原 第4週目. "HelloWorld" プログラムを作る. 画面に "Hello World" と表示する簡単な BREW アプリを作成する。. BREW エミュレータで実行する BREW アプリケーションの実体は .dll ファイルです。これを "BREW モジュール " という。 BREW モジュールには、必ず MIF ファイルが必要で、 - PowerPoint PPT Presentation

Citation preview

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