Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

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

From 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 04:36.
225 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×