×
Namespaces

Variants
Actions

AIW サービス・ハンドラ(Service Handler) API

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata
Code ExampleArticle
Translated:
By masatoshi
Last edited: hamishwillee (30 May 2013)

Note.pngNote: :このAPIは、公開SDKには含まれていません。SDK API Plug-inに含まれています。

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

File:AIWConsumer.zip

File:Emergency Caller.zip

 
This page was last modified on 30 May 2013, at 07:36.
137 page views in the last 30 days.