鸿蒙Next模拟器录音功能如何使用

在鸿蒙Next模拟器上如何使用录音功能?需要开启哪些权限或进行特殊设置吗?操作步骤能否详细说明一下?

2 回复

鸿蒙Next模拟器录音?简单!打开模拟器,找到“录音”应用,点击红色按钮开始录,再点一下停止。记得先授权麦克风权限哦~(友情提示:别在模拟器里录情歌,容易被同事围观😂)

更多关于鸿蒙Next模拟器录音功能如何使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next模拟器中,录音功能主要通过AudioCapturer类实现。以下是基本使用步骤和示例代码:

1. 添加权限

module.json5中配置录音权限:

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.MICROPHONE"
      }
    ]
  }
}

2. 核心代码实现

import audio from '@ohos.multimedia.audio';
import fs from '@ohos.file.fs';

// 创建音频采集器
let audioCapturer: audio.AudioCapturer | null = null;

async function startRecording() {
  // 1. 设置采集参数
  let audioCapturerOptions: audio.AudioCapturerOptions = {
    streamInfo: {
      samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
      channels: audio.AudioChannel.CHANNEL_1,
      sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
      encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
    },
    capturerInfo: {
      source: audio.SourceType.SOURCE_TYPE_MIC,
      capturerFlags: 0
    }
  };

  // 2. 创建实例
  audioCapturer = await audio.createAudioCapturer(audioCapturerOptions);

  // 3. 开始采集
  await audioCapturer.start();

  // 4. 读取数据并写入文件
  const filePath = 'xxx/test.pcm'; // 替换为实际路径
  let fd = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);

  while (isRecording) { // 自定义停止条件
    let buffer = await audioCapturer.read(BUFFER_SIZE, true);
    fs.writeSync(fd, buffer);
  }

  // 5. 停止并释放资源
  await audioCapturer.stop();
  audioCapturer.release();
  fs.closeSync(fd);
}

3. 关键说明

  • 需要动态申请麦克风权限(API 9+)
  • 默认生成PCM格式原始数据
  • 可通过AudioCapturerstate属性监控状态
  • 建议在UI线程外执行读写操作

4. 注意事项

  • 模拟器需确保音频输入配置正确
  • 实际路径需使用context获取合法沙箱路径
  • 长时间录音建议分文件存储

完整实现还需包含错误处理和权限申请逻辑。建议参考官方文档中的AudioCapturer完整示例。

回到顶部