Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 04:37, 2 May 2008.

Application Interworking(AIW)(日本語)

From Forum Nokia Wiki

英語版:Application Interworking(AIW)


アプリケーション・インターワーキング(アプリケーション間の相互作用, 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

 

Related Discussions
Thread Thread Starter Forum Replies Last Post
Server application sevkar General Symbian C++ 1 2004-08-03 04:02
Ask The Expert: dcrocha on Python Nokia Ron Interviews & Ask the Experts 15 2008-04-21 20:51
Embedding Shaikuny General Symbian C++ 0 2004-12-18 12:49
Developing something similiar to To-Do Application andreas84 General Symbian C++ 1 2003-10-03 10:40
"Allow application to send request" ? Yes or no. sponnukumar Mobile Java General 5 Yesterday 11:17
 
Powered by MediaWiki