前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >发布 | 音量控制器

发布 | 音量控制器

作者头像
Qt君
发布2020-02-24 09:19:58
1.2K0
发布2020-02-24 09:19:58
举报
文章被收录于专栏:跟Qt君学编程

❝可设置/同步扬声器与录音音量。(目前仅支持Windows系统)❞

功能

  • 「可设置扬声器/录音音量,开关静音功能」。

部分代码

  • 音量控制类VolumeController对外接口。
代码语言:javascript
复制
class VolumeController
{public:
    explicit VolumeController();
    virtual ~VolumeController();

    int getSpeakerVolume();
    bool setSpeakerVolume(int volumePercent);

    bool isSpeakerMuted();
    bool setSpeakerMuted(bool mute);

    int getMicVolume();
    bool setMicVolume(int volumePercent);

    bool isMicMuted();
    bool setMicMuted(bool mute);

private:
    IAudioEndpointVolume* getEndpointVolume(bool isSpeaker);

private:
    IAudioEndpointVolume *m_speakerEndpointVolume;
    IAudioEndpointVolume *m_micEndpointVolume;
};
  • 绑定音量状态更新的槽函数onUpdate(),并设置更新时间为500ms。
代码语言:javascript
复制
connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(onUpdate()));
m_updateTimer.start(500);
  • onUpdate()槽函数实现。
代码语言:javascript
复制
void onUpdate()
{
    int micVolume     = m_volumeController->getMicVolume();
    int speakerVolume = m_volumeController->getSpeakerVolume();

    ui->horizontalSlider->setValue(micVolume);
    ui->horizontalSlider_2->setValue(speakerVolume);

    ui->label_2->setText(QString::fromLocal8Bit("录音音量:(%1%)").arg(micVolume));
    ui->label_3->setText(QString::fromLocal8Bit("扬声器音量:(%1%)").arg(speakerVolume));
}
  • 通过触发QSlider的槽函数来设置扬声器或录音的音量,并会将设置结果输出。
代码语言:javascript
复制
void on_horizontalSlider_valueChanged(int value)
{
    qDebug() << "Set mic volume: " << value
             << "; Result: " << m_volumeController->setMicVolume(value);
}

void on_horizontalSlider_2_valueChanged(int value)
{
    qDebug() << "Set speaker voluem: " << value
             << "; Result: " << m_volumeController->setSpeakerVolume(value);
}
  • 目前更新音量状态变化是使用定时器查询的方法,后续会使用Windows的事件通知去更新音量显示,这样会高效点。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 功能
  • 部分代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档