037-第三代软件开发-系统音量设置

头图

第三代软件开发-系统音量设置

文章目录

  • 第三代软件开发-系统音量设置
    • 项目介绍
    • 系统音量设置
      • QML 实现
      • C++ 实现
    • 总结一下

关键字: QtQmlvolume声音GPT

项目介绍

欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。

在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。

在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资源消耗,以确保我们的项目在各种平台和设备上都能够高效运行。

无论您是对 QML 和 C++ 开发感兴趣,还是需要我们为您构建复杂的用户界面和后端逻辑,我们都随时准备为您提供支持。请随时联系我们,让我们一同打造现代化、高性能的 QML & C++ 项目!

重要说明☝

☀该专栏在第三代软开发更新完将涨价

系统音量设置

先看下效果,重点在C++

QML 实现

音量调节的前端实现方式很简单,就是一个Slider 和一个按钮组成

import QtQuick 2.15
import QtQuick.Layouts 1.15                                             // 布局需要
import QtQuick.Controls 2.15
import XXXX 1.0
Popup
{id:rootwidth: 360height: 60visible: falsebackground: Rectangle{color:"#24272B"}RowLayout{anchors.centerIn: parentspacing: 20Button{width: 26height: 26checkable: truechecked:(slider_volume.value === 0) ? true : falsebackground: Image{anchors.centerIn: parentwidth: parent.checked ? 26 : 17height: 26source: parent.checked ? "qrc:/MainWindow/T_Resource/T_Image/MainWindow/jingyin.png" : "qrc:/MainWindow/T_Resource/T_Image/MainWindow/lb.png"}onClicked:{playSound.play()if(checked){slider_volume.value = 0;}}}Slider{id:slider_volumewidth: 250height: 20from: 0stepSize: 1to:100value: Setting.systemVolumebackground: Rectangle {x: slider_volume.leftPaddingy: slider_volume.topPadding + slider_volume.availableHeight / 2 - height / 2implicitWidth: 200implicitHeight: 4width: slider_volume.availableWidthheight: implicitHeightradius: 2color: "#bdbebf"Rectangle {width: slider_volume.visualPosition * parent.widthheight: parent.heightcolor: "#51A7DE"radius: 2}}handle: Rectangle {x: slider_volume.leftPadding + slider_volume.visualPosition * (slider_volume.availableWidth - width)y: slider_volume.topPadding + slider_volume.availableHeight / 2 - height / 2implicitWidth: 26implicitHeight: 26radius: 13color: slider_volume.pressed ? "#f0f0f0" : "#f6f6f6"border.color: "#bdbebf"}onValueChanged:{Setting.systemVolume = value}}Text {font.pixelSize: 20color: "#56A8DC"text: Setting.systemVolume}}
}

C++ 实现

这里需要系统安装一个库,执行以下代码

sudo apt-get install libasound2-dev

要使用下面函数生效,需要包含头文件

#include "alsa/asoundlib.h"

设置音响实现代码:

/*** @brief XXXX::setSystemVolume* @param newSystemVolume* 设置系统音量*/
void XXXX::setSystemVolume(int newSystemVolume)
{#ifdef Q_OS_LINUXif (m_systemVolume == newSystemVolume)return;m_systemVolume = newSystemVolume;emit systemVolumeChanged();snd_mixer_t *handle;snd_mixer_open(&handle, 0);snd_mixer_attach(handle, "default");snd_mixer_selem_register(handle, NULL, NULL);snd_mixer_load(handle);snd_mixer_selem_id_t *sid;snd_mixer_selem_id_alloca(&sid);snd_mixer_selem_id_set_index(sid, 0);snd_mixer_selem_id_set_name(sid, "Master");snd_mixer_elem_t *elem = snd_mixer_find_selem(handle, sid);snd_mixer_selem_set_playback_volume_all(elem, m_systemVolume * (0xFFFF / 100));snd_mixer_close(handle);
#endif
}

设置第一步是不是我们得获取系统音量,代码如下:

/*** @brief XXXX::getVolume* @return* 获取系统音量*/
int XXXX::getVolume()
{
#ifdef Q_OS_LINUXsnd_mixer_t *handle;snd_mixer_selem_id_t *sid;snd_mixer_elem_t *elem;long volume;snd_mixer_open(&handle, 0);snd_mixer_attach(handle, "default");snd_mixer_selem_register(handle, NULL, NULL);snd_mixer_load(handle);snd_mixer_selem_id_alloca(&sid);snd_mixer_selem_id_set_index(sid, 0);snd_mixer_selem_id_set_name(sid, "Master");elem = snd_mixer_find_selem(handle, sid);snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_MONO, &volume);snd_mixer_close(handle);return volume/(0xFFFF / 100);
#endif#ifdef Q_OS_WIN32return 0;
#endif}

总结一下

如上所述,这段代码不具备普遍性,仅仅适用于Linux,是通过snd_mixer库来实现系统音量的调节。其实也想过使用指令实现,不过没有发现好用的。也问过GPT,不过答案也不理想,和我上面的原理也基本一样。

要在Ubuntu中设置系统音量,您可以使用以下命令:

  1. 调整音量大小:

    • amixer set Master <volume>:将音量设置为指定的值。例如,amixer set Master 50%将音量设置为50%。
    • amixer set Master <volume>%:将音量设置为百分比。例如,amixer set Master 80%将音量设置为80%。
    • amixer set Master <volume>+/-<increment>:增加或减少音量。例如,amixer set Master 5%+将音量增加5%,amixer set Master 5%-将音量减少5%。
  2. 静音和取消静音:

    • amixer set Master mute:将音频静音。
    • amixer set Master unmute:取消音频静音。

请注意,这些命令将直接调整系统的主音量控制器。但请确保您具有适当的权限来执行这些操作。

另一个版本的GPT

要在Ubuntu上设置系统音量,你可以使用amixer命令。以下是一些常用的指令:

  1. 查看当前的音量状态:

    amixer get Master
    
  2. 将音量设置为特定百分比(例如50%):

    amixer set Master 50%
    
  3. 增加音量:

    amixer set Master 5%+
    
  4. 减小音量:

    amixer set Master 5%-
    

请注意,这些命令会更改系统的主音量。你也可以使用其他工具,如pactlalsamixer来调整音量。


博客签名2021

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/122003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

听GPT 讲Rust源代码--library/std(8)

题图来自Why is Rust programming language so popular?[1] File: rust/library/std/src/sys/sgx/abi/reloc.rs 在Rust源代码中&#xff0c;sgx/abi/reloc.rs文件的作用是定义了针对Intel Software Guard Extensions (SGX)的重定位相关结构和函数。 该文件中的Rela 结构定义了…

集群节点批量执行 shell 命令

1、SSH 工具本身支持多窗口 比如 MobaXterm&#xff1a; 2、编写脚本通过 ssh 在多台机器批量执行shell命令 创建 ssh_hosts 配置文件&#xff0c;定义需要批量执行的节点&#xff08;必须能够通过 ssh 免密登录&#xff0c;且存在同名用户&#xff09; vim ssh_hostsbig…

Oracle通过透明网关查询SQL Server 报错ORA-00904

Oracle通过透明网关查询SQL Server 报错ORA-00904 问题描述&#xff1a; 只有全表扫描SELECT * 时SQL语句可以正常执行 添加WHERE条件或指定列名查询&#xff0c;查询语句就报错 问题原因&#xff1a; 字段大小写和SQLSERVER中定义的不一致导致查询异常 解决办法&#xff1a; 给…

消息队列中间件面试笔记总结RabbitMQ,Kafka,RocketMQ

文章目录 (一) Rabbit MQRabbitMQ 核心概念消息队列的作用Exchange(交换器)Broker&#xff08;消息中间件的服务节点&#xff09;如何保证消息的可靠性如何保证 RabbitMQ 消息的顺序性如何保证 RabbitMQ 高可用的&#xff1f;如何解决消息队列的延时以及过期失效问题消息堆积问…

Web服务器与Http协议

Web服务器与Http协议 一.Web服务器 1.简介 Web服务器一般指网站服务器&#xff0c;也称之为WWW(World Wide Web)服务器Web服务器是指驻留于因特网上某种类型计算机的程序Web服务器不是硬件服务器&#xff0c;而是软件服务器。Web服务器其主要功能是提供网上信息浏览服务&…

p5.js 视频播放指南

本文简介 在刚接触 p5.js 时我以为这只是一个艺术方向的 canvas 库&#xff0c;没想到它还支持视频文件和视频流的播放。 本文简单讲讲如何使用 P5.js 播放视频。 播放视频文件 p5.js 除了可以使用 video 元素播放视频外&#xff0c;还支持使用 image 控件播放视频。 方式1&…

【机器学习可解释性】2.特征重要性排列

机器学习可解释性 1.模型洞察的价值2.特征重要性排列3.部分依赖图4.SHAP Value5.SHAP Value 高级使用 正文 前言 你的模型认为哪些特征最重要&#xff1f; 介绍 我们可能会对模型提出的最基本的问题之一是&#xff1a;哪些特征对预测的影响最大&#xff1f; 这个概念被称为…

【C++】命名空间

目录 1 命名空间的引入 2 命名空间的定义 3 标准命名空间std 头文件和std的关系 4 命名空间的使用 4.1 加命名空间名称及作用域限定符:: 4.2 使用using将命名空间中某个成员引入(最推荐) 4.3 使用using namespace 命名空间名称 5 总结 1 命名空间的引入 为了解决C语言中…

ffmpeg的下载和编译(vs2022)

感谢大佬的二创,直接提供了sln编译 ffmpeg二创地址 创建如下目录 build存放代码(build最好改成source,因为作者这么建议,编译完才发现) msvc存放第三方依赖的头文件,这里固定叫msvc,因为大佬的sln里查找的路径是这个,不嫌麻烦也可以自己改 下载代码和编译器 下载源码…

自动驾驶之—2D到3D升维

前言&#xff1a; 最近在学习自动驾驶方向的东西&#xff0c;简单整理一些学习笔记&#xff0c;学习过程中发现宝藏up 手写AI 3D卷积 3D卷积的作用&#xff1a;对于2DCNN&#xff0c;我们知道可以很好的处理单张图片中的信息&#xff0c;但是其对于视频这种由多帧图像组成的图…

Node.js中的单线程服务器

为了解决多线程服务器在高并发的I/O密集型应用中的不足&#xff0c;同时避免早期简单单线程服务器的性能障碍&#xff0c;Node.js采用了基于"事件循环"的非阻塞式单线程模型&#xff0c;实现了如下两个目标&#xff1a; &#xff08;1&#xff09;保证每个请求都可以…

2023年系统设计面试如何破解?进入 FAANG 面试的实战指南

如果您正在准备编码面试&#xff0c;但想知道如何准备关键的系统设计主题&#xff0c;并寻找正确方法、技巧和问题的分步指导&#xff0c;那么您来对地方了。在本文中&#xff0c;我将分享 2023 年系统设计面试的完整指南。 在软件开发领域&#xff0c;如果您正在申请高级工程…

16、window11+visual studio 2022+cuda+ffmpeg进行拉流和解码(RTX3050)

基本思想:需要一个window11 下的gpu的编码和解码代码,逐开发使用,先上个图 几乎0延迟的,使用笔记本的显卡 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\extras\demo_suite>deviceQuery.exe deviceQuery.exe Starting...CUDA Device Query (Runtime API…

竞赛选题 深度学习图像分类算法研究与实现 - 卷积神经网络图像分类

文章目录 0 前言1 常用的分类网络介绍1.1 CNN1.2 VGG1.3 GoogleNet 2 图像分类部分代码实现2.1 环境依赖2.2 需要导入的包2.3 参数设置(路径&#xff0c;图像尺寸&#xff0c;数据集分割比例)2.4 从preprocessedFolder读取图片并返回numpy格式(便于在神经网络中训练)2.5 数据预…

Java工具库——Commons IO的50个常用方法

工具库介绍 Commons IO&#xff08;Apache Commons IO&#xff09;是一个广泛用于 Java 开发的开源工具库&#xff0c;由Apache软件基金会维护和支持。这个库旨在简化文件和流操作&#xff0c;提供了各种实用工具类和方法&#xff0c;以便更轻松地进行输入输出操作。以下是 Com…

openpnp - SlotSchultzFeeder source code bugfix

文章目录 openpnp - SlotSchultzFeeder source code bugfix概述笔记openpnp源码调试环境排查思路开git分支查到的问题 - 1查到的问题 - 2查到的问题 - 3针对以上问题进行的逻辑修正D:\my_openpnp\openpnp_github\src\main\java\org\openpnp\machine\reference\driver\wizards\G…

Linux下自动挂载U盘或者USB移动硬盘

最近在折腾用树莓派&#xff08;实际上是平替香橙派orangepi zero3&#xff09;搭建共享文件服务器&#xff0c;有一个问题很重要&#xff0c;如何在系统启动时自动挂载USB移动硬盘。 1 使用/etc/fstab 最开始尝试了用/etc/fstab文件下增加:"/dev/sda1 /home/orangepi/s…

从入门到精通:深入了解CSS中的Grid网格布局技巧和应用!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一…

论文阅读——GPT3

来自论文&#xff1a;Language Models are Few-Shot Learners Arxiv&#xff1a;https://arxiv.org/abs/2005.14165v2 记录下一些概念等。&#xff0c;没有太多细节。 预训练LM尽管任务无关&#xff0c;但是要达到好的效果仍然需要在特定数据集或任务上微调。因此需要消除这个…

Pytorch代码入门学习之分类任务(一):搭建网络框架

目录 一、网络框架介绍 二、导包 三、定义卷积神经网络 3.1 代码展示 3.2 定义网络的目的 3.3 Pytorch搭建网络 四、测试网络效果 一、网络框架介绍 网络理解&#xff1a; 将32*32大小的灰度图片&#xff08;下述的代码中输入为32*32大小的RGB彩色图片&#xff09;&…