有时候,打字太麻烦。
用语音记录想法、会议纪要、备忘事项,简单高效。
本篇将用鸿蒙 ArkTS 原生 API,手把手教你构建一款语音备忘录应用:
✅ 录音一键开始/结束
✅ 自动保存为本地音频文件
✅ 支持播放/暂停/删除音频
✅ 文件列表展示+命名规范
✅ 技术模块一览
能力 | 模块 |
---|---|
音频录制 | @ohos.multimedia.media |
音频播放 | @ohos.multimedia.media |
本地文件操作 | @ohos.file.fs |
时间/命名工具 | Date , format() 或 uuid |
📦 Step1:封装音频录制逻辑
import media from '@ohos.multimedia.media'
import fs from '@ohos.file.fs'
let recorder: media.AVRecorder
async function startRecording(filename: string): Promise<string> {
const path = `/data/user/record/${filename}.aac`
recorder = await media.createAVRecorder()
await recorder.prepare({
audioEncodeBitRate: 96000,
audioSampleRate: 44100,
audioChannels: 2,
audioCodecMime: media.CodecMimeType.AAC,
fileFormat: media.AVRecorderOutputFormat.AAC_ADTS,
uri: path
})
await recorder.start()
return path
}
async function stopRecording(): Promise<void> {
await recorder.stop()
await recorder.release()
}
📦 Step2:封装音频播放功能
let player: media.AVPlayer
async function playAudio(filePath: string) {
player = await media.createAVPlayer()
await player.setSource({ uri: filePath, mediaType: media.MediaType.AUDIO })
await player.prepare()
await player.play()
}
async function pauseAudio() {
await player.pause()
}
📦 Step3:构建 UI:录音控制 + 文件列表
@Entry
@Component
struct VoiceMemoApp {
@State isRecording: boolean = false
@State records: string[] = []
async toggleRecording() {
if (!this.isRecording) {
const name = `memo_${Date.now()}`
const path = await startRecording(name)
this.records.push(path)
} else {
await stopRecording()
}
this.isRecording = !this.isRecording
}
async deleteAudio(path: string) {
await fs.unlink(path)
this.records = this.records.filter(p => p !== path)
}
build() {
Column({ space: 20 }) {
Button(this.isRecording ? '停止录音' : '开始录音')
.onClick(() => this.toggleRecording())
List() {
ForEach(this.records, path => (
ListItem() {
Row({ space: 10 }) {
Text(path.split('/').pop() ?? '')
Button('播放').onClick(() => playAudio(path))
Button('删除').onClick(() => this.deleteAudio(path))
}
}
))
}
}
.padding(20)
}
}
📦 Step4:录音文件本地管理建议
-
建议保存至
/data/user/record/
或用户选择路径; -
使用统一前缀 + 时间戳命名(如
memo_202505131115.aac
); -
可添加备注字段、JSON 存储元数据;
-
支持语音转文字(后续可集成 AI 模型);
✅ 拓展功能建议
功能 | 实现方式 |
---|---|
语音转文字(ASR) | 接入语音识别引擎,如鸿蒙 AI 能力模块 |
录音标签与搜索 | 本地 JSON 存储音频文件 + 标签字段 |
多格式导出 | 支持 WAV / MP3 格式或音频合成导出 |
分享录音文件 | 使用鸿蒙系统分享接口,发送至微信、邮箱等 |
🎯 应用场景
场景 | 描述 |
---|---|
教师课堂录音 | 标题:语文第3课回顾 |
面试记录 | 标题:2025-05-面试反馈录音 |
家人/老人的语音备忘 | 一键点录,清晰易用 |
创意记录 | 灵感一来就说,不怕忘 |
🧩 小结
通过本篇你已掌握:
-
如何使用 ArkTS 原生 API 实现音频录制;
-
音频播放/暂停功能封装与调用;
-
文件保存、命名、删除等文件管理;
-
构建语音备忘录完整功能闭环。
这是鸿蒙在“音频处理 + 原生交互 + 本地持久化”能力上的一次全面实战。
📘 下一篇预告
《系统分享能力集成:调用鸿蒙原生“分享弹窗”一键转发文本/图片/文件》
我们将接入鸿蒙原生分享接口,让你的 App 一键分享录音、笔记、图片至微信、QQ、邮件等外部应用。