Utilising media keys on S60 devices

来源:互联网 发布:nginx安全配置基线 编辑:程序博客网 时间:2024/06/06 13:11

Description

Key presses of media keys cannot be detected in the same way asother key events. Media keys, such as Play/Pause, Stop, Volume Up/Down,Rewind, and Forward keys featured on some S60 3rd Edition devices donot generate normal key events that could be handled within theapplication framework, for example, in HandleKeyEventL() or OfferKeyEventL().

Solution

Events from media keys can be handled with the Remote Control API. Below is a code snippet that demonstrates this.

Remote Control API requires ReadUserData capability.

 

To handle hardware keys the following approach can be followed.

1) Derive a class from MRemConCoreApiTargetObserver

2) Use the following code snippet in your class.
CRemConInterfaceSelector* iSelector;
CRemConCoreApiTarget* iTarget;

//preferably in the constructL()
iSelector=CRemConInterfaceSelector::NewL();
iTarget = CRemConCoreApiTarget::NewL( *iSelector, *this );
iSelector->OpenTargetL();


3) MrccatoCommand() api is an virtual method inMRemConCoreApiTargetObserver which should be implemented.This is acallback method which will be called by the framework when a hardwarekey is pressed.

void MrccatoCommand(TRemConCoreApiOperationIdaOperationId,TRemConCoreApiButtonAction aButtonAct)
{

switch(aOperationId)
{
case ERemConCoreApiVolumeDown:
{
//do your own stuff
break;
}
case ERemConCoreApiVolumeUp:
{
//do your own stuff
break;
}
}
}

4) Header file for CRemConInterfaceSelector: remconinterfaceselector.h
Library: remconinterfacebase.lib
Header file for CRemConCoreApiTarget: remconcoreapitarget.h
Library:remconcoreapi.lib