鸿蒙Next录音地址如何获取

在鸿蒙Next系统中开发录音功能时,如何获取录音文件的存储地址?需要调用哪些API或权限?存储路径是否因设备或系统版本不同而变化?

2 回复

鸿蒙Next录音地址?简单!调用AudioCapturergetAudioStreamInfo(),然后找source属性就行。不过小心别录到老板的八卦,不然下次开会就是你“鸿蒙Next”了!😄

更多关于鸿蒙Next录音地址如何获取的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,获取录音文件地址通常涉及使用媒体录制API。以下是关键步骤和示例代码:

主要步骤:

  1. 配置权限:在 module.json5 中声明录音权限。
  2. 创建录音实例:使用 AudioRecorder 类。
  3. 设置输出路径:通过 AudioRecorderOptions 指定文件保存位置。
  4. 启动录音:调用 start() 方法。
  5. 获取文件地址:录音完成后,从设置路径或回调中获取。

示例代码:

import audio from '@ohos.multimedia.audio';
import fs from '@ohos.file.fs';
import common from '@ohos.app.ability.common';

// 1. 配置权限(module.json5)
// "requestPermissions": [
//   {
//     "name": "ohos.permission.MICROPHONE"
//   }
// ]

async function startRecording(context: common.Context): Promise<string> {
  // 2. 创建录音实例
  let audioRecorder: audio.AudioRecorder | null = null;
  try {
    let audioStreamInfo: audio.AudioStreamInfo = {
      samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
      channels: audio.AudioChannel.CHANNEL_1,
      sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
      encodingBitRate: 48000
    };

    let audioRecorderConfig: audio.AudioRecorderOptions = {
      streamInfo: audioStreamInfo,
      uri: 'file://data/storage/el2/base/haps/recording.pcm' // 自定义路径
    };

    // 3. 初始化并设置路径
    audioRecorder = await audio.createAudioRecorder();
    await audioRecorder.prepare(audioRecorderConfig);

    // 4. 开始录音
    await audioRecorder.start();
    console.log('录音开始,文件保存至: ' + audioRecorderConfig.uri);

    // 5. 返回文件地址(实际路径需根据URI解析)
    return audioRecorderConfig.uri;
  } catch (err) {
    console.error('录音失败: ' + err.message);
    return '';
  }
}

// 使用示例
// const fileUri = await startRecording(getContext(this));

注意事项:

  • 路径格式:URI 可指向应用沙箱目录(如 data/storage/el2/base/haps/),确保应用有写入权限。
  • 实际路径:通过 fs 模块可解析URI为绝对路径(如使用 fs.accessSync(uri))。
  • 录音完成后调用 stop()release() 释放资源。

通过以上方法,可明确获取录音文件的存储地址。

回到顶部