mpxmusicplayer/mediakeyhandler/src/mpxmediakeyhandlerimp.cpp
branchRCL_3
changeset 26 70a8526f03f2
parent 21 a1247965635c
child 28 56b11cf8addb
--- a/mpxmusicplayer/mediakeyhandler/src/mpxmediakeyhandlerimp.cpp	Tue Apr 27 16:34:37 2010 +0300
+++ b/mpxmusicplayer/mediakeyhandler/src/mpxmediakeyhandlerimp.cpp	Tue May 11 16:10:56 2010 +0300
@@ -27,6 +27,7 @@
 #include <bautils.h>
 #include <StringLoader.h>
 #include <apgwgnam.h>
+#include <utf.h>
 
 #ifdef UPNP_INCLUDED
 #include <upnpcopycommand.h>  
@@ -68,6 +69,19 @@
 const TInt KTenStepsVolume = 10;   
 const TInt KTwentyStepsVolume = 20;
 
+const TRemConCoreApiOperationId KSupportedCoreFeatures[] = {
+        ERemConCoreApiVolumeUp,
+        ERemConCoreApiVolumeDown,
+        ERemConCoreApiPlay,
+        ERemConCoreApiStop,
+        ERemConCoreApiPause,
+        ERemConCoreApiRewind,
+        ERemConCoreApiFastForward,
+        ERemConCoreApiForward,
+        ERemConCoreApiBackward,
+        ERemConCoreApiPausePlayFunction
+};
+
 _LIT( KMPXMediaKeyHandlerRscPath, "mpxmediakeyhandler.rsc" );
 
 
@@ -105,10 +119,24 @@
 
     // Register to remote control framework
     iInterfaceSelector = CRemConInterfaceSelector::NewL();
-    iCoreTarget = CRemConCoreApiTarget::NewL( *iInterfaceSelector, *this );
+
+    // For AVRCP 1.4 support, pass the core features to the target API. 
+    TInt entrySize = sizeof( KSupportedCoreFeatures[0] );
+    TRemConCoreApiOperationId* entries = (TRemConCoreApiOperationId*) &KSupportedCoreFeatures[0];
+    TInt count = sizeof( KSupportedCoreFeatures ) / entrySize;
+    RArray<TRemConCoreApiOperationId> coreFeatures( entrySize, entries, count );
+    iCoreTarget = CRemConCoreApiTarget::NewL( *iInterfaceSelector, *this, coreFeatures );
+
     // For handling AVRCP 1.3 metadata
     iMetaDataHandler = MMPXMetaDataHandler::NewL(*iInterfaceSelector);
-    iInterfaceSelector->OpenTargetL();
+    
+    // For AVRCP 1.4 support, make the player named. 
+    HBufC* avsrcname = StringLoader::LoadLC( R_MPX_AVSRC_NAME_TEXT );
+    HBufC8* avsrcname8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( avsrcname->Des() );
+    CleanupStack::PushL( avsrcname8 );
+    iInterfaceSelector->OpenTargetL(ERemConAudioPlayer, ERemConNoSubType, *avsrcname8);
+    CleanupStack::PopAndDestroy( avsrcname8 );
+    CleanupStack::PopAndDestroy( avsrcname );
     iResponseHandler = CMPXRemConKeyResponse::NewL( *iCoreTarget );
 
     // Timer for implementing repeat