s60多媒体按键键的应用

媒体键的应用

From Forum Nokia Wiki

  • 设备, 软件 版本:

S60 3rd Edition

 

  • 详细描述

媒体键的按键事件是无法通过常规手段监测到的,这点和其他按键事件不同。媒体键,如播放/暂停,停止,音量高/低,前进以及后退等键,属于一些S60第三版手机的新特性,不会生成一般的

按键事件,以便被程序框架捕捉,如HandleKeyEventL()以及OfferKeyEventL()。

 

  • 解决方案

媒体键的按键事件要通过Remote Control API来处理。

下列代码片段演示了如何处理:

CRemConInterfaceSelector
 
CRemConCoreApiTarget
 
MRemConCoreApiTargetObserver
 
Remote Control API requires ReadUserData capability.
 
//------------------------------------------------------------------------------
 
#include <remconcoreapitargetobserver.h> // link against RemConCoreApi.lib
 
#include <remconcoreapitarget.h> // and
 
#include <remconinterfaceselector.h> // RemConInterfaceBase.lib
 
class CMediaKeysTestUi : public CAknAppUi, public MRemConCoreApiTargetObserver
 
{
 
...
 
// From MRemConCoreApiTargetObserver
 
 
 
void MrccatoCommand(TRemConCoreApiOperationId aOperationId,
 
TRemConCoreApiButtonAction aButtonAct);
 
// following functions from MRemConCoreApiTargetObserver are not needed
 
// in this case -> use empty implementations for these:
 
// MrccatoPlay
 
// MrccatoTuneFunction
 
// MrccatoSelectDiskFunction
 
// MrccatoSelectAvInputFunction
 
// MrccatoSelectAudioInputFunction
 
private:
 
CRemConInterfaceSelector* iInterfaceSelector;
 
CRemConCoreApiTarget* iCoreTarget;
 
};
 
void CMediaKeysTestUi::ConstructL()
 
{
 
...
 
iInterfaceSelector = CRemConInterfaceSelector::NewL();
 
iCoreTarget = CRemConCoreApiTarget::NewL(*iInterfaceSelector, *this);
 
iInterfaceSelector->OpenTargetL();
 
}
 
// ----------------------------------------------------------------------------
 
// MrccatoCommand()
 
// Receives events (press/click/release) from the following buttons:
 
// 'Play/Pause', 'Volume Up', 'Volume Down', 'Stop', 'Rewind', 'Forward'
 
// ----------------------------------------------------------------------------

 

void CMediaKeysTestUi::MrccatoCommand(TRemConCoreApiOperationId aOperationId,

                                     TRemConCoreApiButtonAction aButtonAct)

    {

    TRequestStatus status;

        switch( aOperationId )

        {

        case ERemConCoreApiPausePlayFunction:

            {

            switch (aButtonAct)

                {

                case ERemConCoreApiButtonPress:

                    // Play/Pause button pressed

                    break;

                case ERemConCoreApiButtonRelease:

                    // Play/Pause button released

                    break;

                case ERemConCoreApiButtonClick:

                    // Play/Pause button clicked

                    break;

                default:

                    // Play/Pause unknown action

                    break;

                }                                   

            //Send the response back to Remcon server           

            iCoreTarget->PausePlayFunctionResponse(status, KErrNone);

            User::WaitForRequest(status);

            break;

            }       

        case ERemConCoreApiStop:

            {

            switch (aButtonAct)

                {

                // see above (case ERemConCoreApiPausePlayFunction)

                // for possible actions

                }

            iCoreTarget->StopResponse(status, KErrNone);

            User::WaitForRequest(status);

            break;  

            }  

        case ERemConCoreApiRewind:

            {

            switch (aButtonAct)

                {

                // see above for possible actions

                }

            iCoreTarget->RewindResponse(status, KErrNone);

            User::WaitForRequest(status);       

            break;

            }           

        case ERemConCoreApiForward:

            {

            switch (aButtonAct)

                {

                // see above for possible actions

                }

            iCoreTarget->ForwardResponse(status, KErrNone);

            User::WaitForRequest(status);

            break;     

            }   

        case ERemConCoreApiVolumeUp:

            {       

            switch (aButtonAct)

                {

                // see above for possible actions

                }

            iCoreTarget->VolumeUpResponse(status, KErrNone);

            User::WaitForRequest(status);       

            break;

            }           

        case ERemConCoreApiVolumeDown:

            {

            switch (aButtonAct)

                {

                // see above for possible actions

                }

            iCoreTarget->VolumeDownResponse(status, KErrNone);

            User::WaitForRequest(status);       

            break;

            }   

        case ERemConCoreApiFastForward:

            {

            switch (aButtonAct)

                {

                // see above for possible actions

                }

            iCoreTarget->FastForwardResponse(status, KErrNone);

            User::WaitForRequest(status);

            break;     

            }                  

        case ERemConCoreApiBackward:

            {

            switch (aButtonAct)

                {

                // see above for possible actions

                }

            iCoreTarget->BackwardResponse(status, KErrNone);

            User::WaitForRequest(status);

            break;  

            }                        

        default:

            break;

        }

    }   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值