イベント ハンドラとは?
イベントハンドラとは、BREW 実行環境 ( BREW AEE ) からのさまざまなメッセージ ( BREWでは「イベント」と呼びます) を受信し処理する関数です。
BREW では、アプリの開始・中断・再開・終了、キー入力、文字入力、キー押下、キー押下解除、アプリ固有などのイベントがあります。
BREW アプリは、BREW AEE から通知される各種イベントを処理するモジュール群から構成されます。
イベントハンドラのプロトタイプは次のようになります。
イベントハンドラとは、BREW 実行環境 ( BREW AEE ) からのさまざまなメッセージ ( BREWでは「イベント」と呼びます) を受信し処理する関数です。
BREW では、アプリの開始・中断・再開・終了、キー入力、文字入力、キー押下、キー押下解除、アプリ固有などのイベントがあります。
BREW アプリは、BREW AEE から通知される各種イベントを処理するモジュール群から構成されます。
イベントハンドラのプロトタイプは次のようになります。
BREW には、アプリの開始・中断・再開・終了、キー入力、文字入力、キー押下、キー押下解除、アプリ固有など、 40 種類以上のイベントが存在しています。
イベントを独自に定義することもできます。
以下が、BREW の主なイベントです。
イベントコード | 説明 |
---|---|
EVT_APP_START | BREW アプリが起動されました。 |
EVT_APP_STOP | ユーザーが BREW アプリを終了します。 |
EVT_APP_SUSPEND | BREW アプリを中断します。 |
EVT_APP_RESUME | 中断した BREW アプレットを再開します。 |
EVT_KEY | ユーザーが何かのキーを押しました。 |
EVT_KEY_PRESS | ユーザーが何かのキーを押下しました。 |
EVT_KEY_RELEASE | ユーザーが何かのキーを離しました。 |
EVT_CHAR | ユーザーが何かの文字キーを押しました。 |
EVT_USER | ユーザー定義のイベントが発生しました。 |
個々のイベントについては、『BREW API リファレンス』をご覧ください。
イベントキューにあるイベントを取得する関数はありません。
IAPPLET_HandleEvent() がコールされた場合に限り、イベントは取得できます。
サスペンドやレジュームのとき、ヒープメモリにあるアプリが使用している情報の退避と復帰は自動的になされません。
リソースの解放と確保やタイマーやコールバックのキャンセルと登録についても、BREWは何もしてくれません。
EVT_APP_SUSPEND イベント ( サスペンド時 ) や EVT_APP_RESUME イベント ( レジューム時 ) に対するイベントハンドリングの処理としてプログラミングしなければいけません。
また、レジューム時には画面の再描画も必要です。
終了キーを押した場合、BREW アプリは「EVT_KEY」イベントではなく、「EVT_APP_STOP」イベントを受信します。
よって、終了キー押下によるアプリ終了を回避することはできません。
プレビュー モードとスナップショット モードとの切り替えを行う場合は、ICAMERA_Stop() によってカメラを一度停止させる必要があります。
一方コールバック関数内では、カメラが停止したことは通知されますが、なぜカメラが停止したのか (スナップショット モードに移行するためなのか、それとも本当にカメラを停止するためなのか) は通知されません。
この問題の解決法は BREW プログラミング入門 「BREW でカメラ」で詳しく解説していますので、そちらをご覧ください。
サスペンド時の処理として、 ICamera インターフェースのインスタンスの解放をプログラムとして記述する必要があります。
レジューム時の処理として、 ICamera インターフェースのインスタンスの生成をプログラムとして記述する必要があります