在QML中调用symbian remote control API 控制音量键


From Wiki
Jump to:  navigationsearch
Article Metadata

代码示例
兼容于
平台: 
Symbian

文章
由  liuting 在 26 Oct 2011 创建
最后由  renlin 在 12 Jul 2012 编辑

Contents

介绍

由于Qt 没有提供函数来响应音量键,所以我们要使用 symbian remote control API 来控制音量键,下面我们将以一个例子来看这些API如何使用。

代码示例

首先我们需要在.PRO 文件中引入如下两个库


LIBS+=-lremconinterfacebase -lremconcoreapi

接下来我们需要定义一个类MediaKeysObserver派生自 QObject 和MRemConCoreApiTargetObserver,在其构造函数中创建 CRemConCoreApiTarget对象

MediaKeysObserver::MediaKeysObserver(QObject*parent):QObject(parent)
 
{
    interfaceSelector = CRemConInterfaceSelector::NewL();
    coreTarget = CRemConCoreApiTarget::NewL(*interfaceSelector, *this);
    interfaceSelector->OpenTargetL();
}

接下来我们需要重写 void MrccatoCommand(TRemConCoreApiOperationId aOperationId ,TRemConCoreApiButtonAction aButtonAct),在其中响应按键消息,根据自己的需要对按键消息进行处理,具体代码如下:

void MediaKeysObserver::MrccatoCommand( TRemConCoreApiOperationId operationId,TRemConCoreApiButtonAction buttonAct) 
{
    switch (operationId) {
    case ERemConCoreApiPausePlayFunction:
        if (buttonAct == ERemConCoreApiButtonClick)
            emit mediaKeyClicked(MediaKeysObserver::EPlayPauseKey);
        break;
    case ERemConCoreApiStop:
        if (buttonAct == ERemConCoreApiButtonClick)
            emit mediaKeyClicked(MediaKeysObserver::EStopKey);
        break;
    case ERemConCoreApiRewind:
        if (buttonAct == ERemConCoreApiButtonClick)
            emit mediaKeyClicked(MediaKeysObserver::EFastRewindKey);
        break;
    case ERemConCoreApiForward:
        if (buttonAct == ERemConCoreApiButtonClick)
            emit mediaKeyClicked(MediaKeysObserver::EForwardKey);
        break;
    case ERemConCoreApiVolumeUp:
        if (buttonAct == ERemConCoreApiButtonClick)
            emit mediaKeyClicked(MediaKeysObserver::EVolIncKey);
        else if (buttonAct == ERemConCoreApiButtonPress)
            emit mediaKeyPressed(MediaKeysObserver::EVolIncKey);
        else if (buttonAct == ERemConCoreApiButtonRelease)
            emit mediaKeyReleased(MediaKeysObserver::EVolIncKey);
        break;
    case ERemConCoreApiVolumeDown:
        if (buttonAct == ERemConCoreApiButtonClick)
            emit mediaKeyClicked(MediaKeysObserver::EVolDecKey);
        else if (buttonAct == ERemConCoreApiButtonPress)
            emit mediaKeyPressed(MediaKeysObserver::EVolDecKey);
        else if (buttonAct == ERemConCoreApiButtonRelease)
            emit mediaKeyReleased(MediaKeysObserver::EVolDecKey);
        break;
    case ERemConCoreApiFastForward:
        if (buttonAct == ERemConCoreApiButtonClick)
            emit mediaKeyClicked(MediaKeysObserver::EFastForwardKey);
        else if (buttonAct == ERemConCoreApiButtonPress)
            emit mediaKeyPressed(MediaKeysObserver::EFastForwardKey);
        else if (buttonAct == ERemConCoreApiButtonRelease)
            emit mediaKeyReleased(MediaKeysObserver::EFastForwardKey);
        break;
    case ERemConCoreApiBackward:
        if (buttonAct == ERemConCoreApiButtonClick)
            emit mediaKeyClicked(MediaKeysObserver::EBackwardKey);
        else if (buttonAct == ERemConCoreApiButtonPress)
            emit mediaKeyPressed(MediaKeysObserver::EBackwardKey);
        else if (buttonAct == ERemConCoreApiButtonRelease)
            emit mediaKeyReleased(MediaKeysObserver::EBackwardKey);
        break;
    default:
        break;
    }
}
在本例中,我们的操作是根据不同的按键消息,象QML发送不同的SIGNAL,最后我们看下如何在QML中响应音量键,QML代码如下:

MediaKeysObserver 
{
    id: mediakeysobserver
    property int key
    onMediaKeyClicked: {
        console.log("mediakey clicked");
        switch (key) {
        case MediaKeysObserver.EVolIncKey:
            audioPlayer.volume += 0.1
            break
        case MediaKeysObserver.EVolDecKey:
            audioPlayer.volume -= 0.1
            break
        default: break;
        }
    }
}

在QML中我们是通过响应音量增减键来控制播放音频的声音大小


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值