×
Namespaces

Variants
Actions
Revision as of 07:29, 16 December 2011 by hamishwillee (Talk | contribs)

Application Interworking(AIW)(日本語)

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata
Article
Translated:
By masatoshi
Last edited: hamishwillee (16 Dec 2011)

アプリケーション・インターワーキング(アプリケーション間の相互作用, Application Interwoking, AIW)フレームワークは、既存のコードへの静的リンクやデバイスにどんなサービスが利用可能か前もって知ること無しに、機能をアプリケーションに動的に追加する仕組みです

基準アイテム(criteria item)は、あるAIWサービスを明記します。コンシューマ・アプリケーションは、そのAIWサービスを使用に興味があります。基準アイテムの配列をインタレスト(interest)と呼びます。コンシューマ・アプリケーションのインタレストは、そのリソース・ファイルに定義するか、CAiwCriteiraItem を使って動的に定義します。AIW フレームワークは、基準アイテムを使って、適切なサービス・プロバイダ(provider)を利用可能かどうか調べ、要求されたプロバイダを初期化します。

AIWフレームワークのメイン・クラスは、CAiwServiceHandler です。これは、コンシューマ側のAIW APIを実装します。AIWサービスを使う各アプリケーションは、このクラスのインスタンスを生成しなければいけません。サービス・ハンドラ(handler)は、コンシューマ・アプリケーションにサービスを提供するサービス・プロバイダの、動的なロードをサポートします。インタレストとデータ引数を通して、サービス・ハンドラは、コンシューマとサービス・プロバイダを相互に対応付け、プロバイダからコンシューマを隠します。

例:もしサード・パーティ・アプリケーションが電話を発呼したい場合、その機能をもつプロバイダを使用することが出来ます。コンシューマ・アプリケーションは、CAiwCriteriaItem かrssファイルに詳細を記述することで、そのようなサービスを使いたいことを以下のように明記します。


  // Specifying dynamically
 
CAiwCriteriaItem* criteria = CAiwCriteriaItem::NewLC(
KAiwCmdCall, KAiwCmdCall,
_L8( "*" ) );
 
 
// using rss file
 
RESOURCE AIW_INTEREST r_aiwconsumerapp_interest1
{
items =
{
AIW_CRITERIA_ITEM
{
id = EAIWPlaceHolder;
serviceCmd = KAiwCmdCall; //from aiwcommon.hrh
serviceClass = KAiwClassMenu; //from aiwcommon.hrh
contentType = "*";
//defaultProvider = 0x101F868E;
maxProviders =1;
}
};
}



このリソースIdは、サービス・ハンドラのAttachL()メソッドに渡されます。コンシューマとプロバイダ間でデータを渡すために、AIWフレームワークは、ジェネリック・パラメータ・リスト(generic parameter list)を使います。ジェネリック・パラメータ・リストのアイテムは、セマンティックIDを持ち、これは、アイテムが持つデータの方を定義しています。これらセマンティックIDの値は、AIWGenericParams.hrh で定義されています。

例えば、発呼する場合、電話番号や通話の種類(テレビ電話、音声、VoIP)、発呼者名などの詳細を渡す必要があります。これらの値は、TAiwDialDataV1 を使って渡され、これは、EGenericParamCallDialDataV1 を明記することでプロバイダに通知されます。


    CAiwServiceHandler* serviceHandler = CAiwServiceHandler::NewLC();
 
// Create AIW interest
RCriteriaArray interest;
CleanupClosePushL( interest );
 
CAiwCriteriaItem* criteria = CAiwCriteriaItem::NewLC(
KAiwCmdCall, KAiwCmdCall,
_L8( "*" ) );
TUid base;
base.iUid = KAiwClassBase;
criteria->SetServiceClass( base );
 
User::LeaveIfError( interest.Append( criteria ) );
 
// Attach to AIW interest
serviceHandler->AttachL( interest );
 
// Create AIW param package
TAiwDialDataV1 data;
TAiwDialDataV1Pckg dataPckg( data );
 
iNameBuffer = aName.Left( iNameBuffer.MaxLength() );
 
data.SetName( iNameBuffer );
 
iTelNumber = aNumber.Left( iTelNumber.MaxLength() );
 
data.SetTelephoneNumber( iTelNumber );
 
data.SetCallType( aCallType );
 
data.SetWindowGroup( CCoeEnv::Static()->RootWin().Identifier() );
 
CAiwGenericParamList& paramList = serviceHandler->InParamListL();
 
TPtrC8 ptr;
ptr.Set( dataPckg );
TAiwVariant variant( ptr );
 
TAiwGenericParam param( EGenericParamCallDialDataV1, variant );
paramList.AppendL( param );
 
// Execute AIW command
serviceHandler->ExecuteServiceCmdL( KAiwCmdCall, paramList,
serviceHandler->OutParamListL() );
 
CleanupStack::PopAndDestroy( 3 ); // criteria, interest, serviceHandler

 

89 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.

×