This page was last modified 04:42, 2 May 2008.
AIW サービス・ハンドラ(Service Handler) API
From Forum Nokia Wiki
| Note! |
|---|
|
AIWサービス・ハンドラAPIの目的は、AIWコンシューマ・アプリケーションに、アプリケーション相互作用フレームワーク(Application Interworking framewokr)のコア機能を与えることです。これには、AIWフレームワークのコアであるサービス・ハンドラ・オブジェクトを使用します。
ユース・ケース
最も重要なAIWサービス・ハンドラAPIの使用例は、つぎの物です:
サービス・ハンドラ・インスタンスの作成
インタレストの追加
ベース・サービス メニュー・サービス
メニュー・ペインの初期化
サービス・コマンドの実行
ベース・サービス・コマンド
メニュー・サービス・コマンド
サービス・ハンドラ・インスタンスの削除
サンプル・コード
サービス・ハンドラ・インスタンスの生成 AIWサービス・ハンドラ APIを使用するために、コンシューマ・アプリケーションは、最初に、サービス・ハンドラ・インスタンスを作成する必要があります。
// Create a service handler instance. iServiceHandler = CAiwServiceHandler::NewL();
インタレストの追加
サービス・ハンドラ・インスタンスが存在するとき、AIWサービス・コマンドが実行する前に、コンシューマ・アプリケーションのインタレストを追加する必要があります。追加が必要なのは通常一回のみで、その適切な場所は、コンシューマ・アプリケーションのConstructL() メソッドです。
ベース・サービス
ベース・サービス・インタレストは、CAiwServiceHandler::AttachL()を使って追加します。
// Attach base service interests. iServiceHandler->AttachL(R_AIWEXAMPLE_BASEINTEREST);
インタレストは、リソース・ファイル内で定義されます。詳細は、AIW基準APIを参照してください。
メニュー・サービス
メニュー・サービスのインタレストは、CAiwServiceHandler::AttachMenuL()を使って追加します。
iServiceHandler->AttachMenuL(R_AIWEXAMPLE_MENU, R_AIWEXAMPLE_MENUINTEREST);
メニュー・ペインと、基準アイテムに関連したメニューを含むインタレストは、リソース・ファイル内で定義されます。詳細は、AIW基準APIを参照してください。
メニュー・ペインの初期化
AIWメニュー・アイテムを含むメニューペインは、初期化する必要があります。これは、コンシューマ・アプリケーションのDynInitMenuPaneL() 内で行われます。
void CAIWExampleAppUi::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane *aMenuPane ) { // First, offer menu pane to AIW framework. It might be the case, that the // user is opening an AIW submenu. In this case, the AIW handles the menu. if ( iServiceHandler->HandleSubmenuL( *aMenuPane ) ) { return; } // Add your normal (non-AIW) menu initialisation code here... // Let AIW provider add its menu items to the menu. iServiceHandler->InitializeMenuPaneL( *aMenuPane, aResourceId, EAIWExampleCmdLast, iServiceHandler->InParamListL()); }
この例では、メニューは、AIWサブメニューを持つかも知れません(つまり、サブメニューは、AIWメニュー・アイテムだけも持ちます)。サブメニューは、AIWフレームワークによって処理されます。よって、CAiwServiceHandler::HandleSubmenuL() がETrue を返すならば、なにもする必要はありません。
実際のメニュー・ペインの初期化は、CAiwServiceHandler::InitializeMenuPaneL() によって行われます。EAIWExampleCmdLast は、列挙型の最後の値でなければいけないことに注意してください。サービス・ハンドラは、生成するメニュー・コマンドのidのベースとしてその値を使用します。
サービス・コマンドの実行
AIWサービス・コマンドは、ベース・サービスは、CAiwServiceHandler::ExecuteServiceCmdL() の呼び出しで、メニュー・サービスはCAiwServiceHandler::ExecuteMenuCmdL()の呼び出しで、実行されます。メソッドは、デフォルトでは、ブロックします。しsかし、プロバイダが非同期に動作するようにすることも可能です。その場合、コンシューマは、コールバック・メソッドを実装し、プロバイダ終了後に、呼ばれます。非同期サービス呼び出しの詳細については、"AIW基準API(AIW Criteria API)"を参照してください。
ベース・サービス・コマンド
ベース・サービス・コマンドは、CAiwServiceHandler::ExecuteServiceCmdL()の呼び出しで、実行されます。例えば、以下のようになります(入力パラメータのセット・アップ方法については、AIW Generic Parameter APIを参照):
iServiceHandler->ExecuteServiceCmdL( KAiwCmdMnShowMap, // The service command. inParamList, // Input parameter list. iServiceHandler->OutParamListL(), // No output parameters used. 0, // No options used. NULL); // No need for callback );
メニュー・サービス・コマンド
コンシューマ・アプリケーションの"AppUI"クラスには、コールバック・メソッドHandleCommandL(TInt aCommand) があります。これが呼ばれるとき、コンシューマ・アプリケーションは、最初に、コマンドが通常のメニュー・コマンドかどうかを判別しなければいけません。もし、コマンドが識別できなければ、AIWフレームワークにコマンドを転送します。これは、通常スイッチ文のdefault 部分で行われます。
void CAIWExampleAppUi::HandleCommandL(TInt aCommand) { switch(aCommand) { case ESomeNonAIWCommand: { // Execute command. // ... break; } case EEikCmdExit: { Exit(); break; } default: { // Forward the command id to AIW, i.e. execute AIW menu // service command. iServiceHandler->ExecuteMenuCmdL( aCommand, iServiceHandler->InParamListL() // No input parameters iServiceHandler->OutParamListL(), // No output parameters 0, // No options used. NULL); // No need for callback break; } } }
サービス・ハンドラ・インスタンスの削除
サービス・ハンドラのインスタンスは、必要が無くなれば、削除する必要があります。通常、これは、コンシューマ・アプリケーションのデストラクタで行われます。
// Delete the service handler instance. delete iServiceHandler;
Example project
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| How to get picture SMS messages out of my phone? | Nokia_Archive | General Messaging | 1 | 2002-05-20 12:39 |
| 6020 multimedia massage eror | nazirna | General Discussion | 2 | 2006-09-03 05:21 |
| Is it possible to use IMlet to be a filter for SMS remote-control commands too? | nimbuslin | Nokia M2M | 3 | 2005-03-03 14:06 |
| Is it ActiveScheduler Problem??? | kiran10182 | General Symbian C++ | 13 | 2006-06-06 14:46 |
| sis在运行时候出错 | wengnankai | Symbian | 19 | 2006-07-28 03:09 |
