HarmonyOS 音频录制与播放模块
HarmonyOS 音频录制与播放模块
1.模块功能概览
- 麦克风权限动态检测与申请
- 音频录制功能(支持参数配置)
- 音频波形实时可视化(暂时未完善,先凑合看,后续会完善)
- 录音文件播放功能
2.权限检测流程
1.代码实现
async checkPermission() {const manager = abilityAccessCtrl.createAtManager();// 首次权限申请const result = await manager.requestPermissionsFromUser(getContext(), ["ohos.permission.MICROPHONE"]);// 检查所有权限是否通过const isPass = result.authResults.every(res => res === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED);if (!isPass) {// 二次弹窗引导设置const confirm = await promptAction.showDialog({...});if (confirm.index === 1) {// 跳转系统设置const finalResult = await manager.requestPermissionOnSetting(getContext(), ["ohos.permission.MICROPHONE"]);}}
}
2.2. 权限状态处理
| 状态 | 处理方式 |
|---|---|
| 第一次授权成功 | 直接启用录音功能 |
| 第一次授权失败 | 弹窗提示前往系统设置 |
| 系统设置二次授权失败 | 返回上级页面 |
3. 录音功能核心实现
1.录音机配置
// 创建文件描述符
const file = fileIo.openSync(filePath, fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE);// AVRecorder 参数配置
const config = {audioSourceType: media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,url: `fd://${file.fd}`,profile: {audioBitrate: 100000,audioChannels: 2,audioSampleRate: 48000,audioCodec: media.CodecMimeType.AUDIO_AAC,fileFormat: media.ContainerFormatType.CFT_MPEG_4A}
};
2.录音操作控制
| 方法 | 功能描述 |
|---|---|
| startRecord() | 创建文件句柄/配置参数/启动录音 |
| stopRecord() | 停止录音/释放资源/关闭文件 |
3.音频播放实现
async playRecord() {const avPlayer = await media.createAVPlayer();avPlayer.url = `fd://${file.fd}`;avPlayer.on('stateChange', (state) => {if (state === 'initialized') {avPlayer.prepare();} else if (state === 'prepared') {avPlayer.play(); // 自动播放}});
}
4.效果展示

相关文章:
HarmonyOS 音频录制与播放模块
HarmonyOS 音频录制与播放模块 1.模块功能概览 麦克风权限动态检测与申请音频录制功能(支持参数配置)音频波形实时可视化(暂时未完善,先凑合看,后续会完善)录音文件播放功能 2.权限检测流程 1.代码实现…...
小白学Agent技术[4](Agent设计模式)
文章目录 Agent设计模式Zero shotFew shot应用场景 技术特性对比ReAct模式ReAct模式简介ReAct模式举例ReAct模式实现 Plan and Solve模式实现原理 Reason without Observation模式LLMCompiler模式实现原理 Basic ReflectionBasic Reflection原理 Reflexion 模式Reflexion 模式原…...
Google参数逆向 谷歌搜索
背景 从2025年1月15日开始,Google强制用户开启JavaScript才能使用Google搜索功能。 由于此前业务需要调用Google搜索功能去寻找目标资源进行下载,Google的改版导致整条产线全部瘫痪,急需解决方案。 业务每日需要Google搜索数百万次 临时解决方…...
OneM2M:全球性的物联网标准-可应用于物联网中
OneM2M 是一个全球性的物联网(IoT)标准,旨在为物联网设备和服务提供统一的框架和接口,以实现设备之间的互操作性、数据共享和服务集成。OneM2M 由多个国际标准化组织(如 ETSI、TIA、TTC、ARIB 等)共同制定,目标是解决物联网领域的碎片化问题,提供一个通用的标准,支持跨…...
MySQL环境搭建和基本操作
前言 MySQL是现在最为流行的数据库,而且是开源的,任何人都可以在Internet下载,进行安装。 MySQL环境搭建 一、软件包安装 MySQL是目前最为流行的开放源码的数据库,是完全网络化的跨平台的关系型数据库系统,它是由瑞典MySQLAB公司…...
【GIT】non-fast-forward错误
遇到 non-fast-forward 错误时,通常是因为远程仓库有本地尚未包含的提交(如远程仓库初始化时自动生成的 README.md 等文件)。以下是分步解决方案: 1. 拉取远程更改并合并历史 git pull origin master --allow-unrelated-historie…...
深入了解Linux —— 调试程序
前言 我们已经学习了linux下许多的工具,vim、gcc、make/makefile等; 已经能够在linux写代码,并且进行编译运行,让程序在linux下跑起来。 但是,如果我们在写代码的时候遇见了错误;但是我们并不知道错误在哪&…...
JVM - 3.垃圾回收
1.垃圾收集的经典问题 1.哪些内存需要回收2.什么时候回收3.如何回收1.你知道哪几种垃圾回收器,各自的优缺点,重点讲一下cms和g12.JVM GC算法有哪些,目前的JDK版本采用什么回收算法3.G1回收器的回收过程 1.Java中垃圾的定义(Garbag…...
vs code 设置字体颜色
修改setting.json文件 {"remote.SSH.remotePlatform": {"ubuntu": "linux"},// "workbench.colorTheme": "One Dark Pro",// "editor.semanticTokenColorCustomizations": {// },"editor.semanticTokenColo…...
MoonSharp 文档一
目录 1.Getting Started(入门手册) 步骤1:在 IDE 中引入 MoonSharp 步骤2:引入命名空间 步骤3:调用脚本 步骤4:运行代码 2.Keeping a Script around(保留一个脚本) 步骤1:复现前教程所有操作 步骤2:改为创建Script对象 步骤3:访问全局环境 步骤4:直接调用…...
Unity3D 图形渲染(Graphics Rendering)详解
前言 Unity3D 是一款广泛使用的游戏引擎,其图形渲染系统是开发者创建高质量视觉效果的核心。本文将深入探讨 Unity3D 的图形渲染管线、渲染技术、以及如何通过代码实现自定义渲染效果。 对惹,这里有一个游戏开发交流小组,大家可以点击进来一…...
计算机视觉图像点运算【灰度直方图均衡化图形界面实操理解 +开源代码】
对一个数字图像处理系统来说,一般的处理过程为三个步骤:图像预处理、特征抽取、图像识别和分析。图像的点运算就是预处理过程中的重要一步,点运算是对图像的灰度级进行变换。 图像点运算概念 点运算是指对图像的每个像素依次进行相同的灰度变…...
在Windows 7操作系统,基于llama.cpp本地化部署 deepseek-r1模型的方法 2025-02-08
一、概述 现在已经是大模型时代。 个人认为,deepseek效果惊艳,大模型已进入实用阶段。 有些电脑,由于种种原因,还在用 Windows 7, Windows XP 等操作系统。 为了让这些电脑用上大模型,本教程在 llama.c…...
力扣146 - LRU缓存
视频讲解 哈希 双向链表 为什么要用双向链表? 快速删除节点(O(1)) 如果是单链表的话,删除一个节点时,需要从头遍历,找到前驱节点,才能修改 prev->next,导致 O(n)…...
C++ 算法竞赛STL以及常见模板
目录 STL /*═══════════════ Vector ═══════════════*/ /*════════════════ Pair ════════════════*/ /*══════════════ String ════════════════*/ /*══════════…...
微信小程序将markdown内容转为pdf并下载
要在微信小程序中将Markdown内容转换为PDF并下载,您可以使用以下方法: 方法一:使用第三方API服务 选择第三方API服务: 可以选择像 Pandoc、Markdown-PDF 或 PDFShift 这样的服务,将Markdown转换为PDF。例如,PDFShift 提供了一个API接口,可以将Markdown内容转换为PDF格式…...
AI绘画软件Stable Diffusion详解教程(7):图生图基础篇(改变图像风格)
我们在使用AI魔盒不停的绘制一幅幅图像时,会有这样的疑问:为什么生成的图像随机性这么强?我们如何按照自己的构图创作作品?为什么提示词生成的图像细节不够?如何把手绘的风格转换成另一种风格,或者说把自己…...
ES映射知识
映射 映射类似于关系型数据库的Schema(模式)。 映射来定义字段列和存储的类型等基础信息。 {"mappings": {"properties": {"username": {"type": "keyword","ignore_above": 256 // 忽略…...
蓝桥杯嵌入式组第七届省赛题目解析+STM32G431RBT6实现源码
文章目录 1.题目解析1.1 分而治之,藕断丝连1.2 模块化思维导图1.3 模块解析1.3.1 KEY模块1.3.2 ADC模块1.3.3 IIC模块1.3.4 UART模块1.3.5 LCD模块1.3.6 LED模块1.3.7 TIM模块 2.源码3.第七届题目 前言:STM32G431RBT6实现嵌入式组第七届题目解析源码&…...
SpringBoot项目配置文件
SpringBoot项目提供了多种属性配置方式(properties、yaml、yml) yml配置文件 使用Apifox可以方便开发接口、前端测试等 工程搭建: 1.创建SpringBoot工程,并引入web开发起步依赖、mybatis、mysql驱动、lombok 2.创建数据库表&am…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
