使用鸿蒙音频录制与播放 API 构建语音备忘录 App HarmonyOS 5.0.0或以上

有时候,打字太麻烦。
用语音记录想法、会议纪要、备忘事项,简单高效。

本篇将用鸿蒙 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、邮件等外部应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值