在自动化脚本中如何实现录音功能?

在移动自动化场景中,录音是高频刚需能力 ------ 会议留痕、语音采集、语音交互验证等场景,都离不开稳定、可控的录音接口。本文从核心原理、API 详解、Demo 实现、场景扩展、问题排查全维度讲解,帮你快速掌握冰狐平台录音功能开发。

一、冰狐智能辅助录音核心逻辑

冰狐智能辅助的录音能力基于设备底层音频捕获接口封装,遵循权限申请→启动录制→过程控制→停止保存的标准流程,全程通过 JS 脚本调用,适配安卓主流设备,支持自定义采样率、文件命名与存储路径,输出标准 WAV 格式音频,兼容性强、音质可控。

核心优势:

  • 零门槛调用:无需原生开发、无需 ADB 调试,纯 JS 脚本实现;
  • 权限极简:仅需申请音频捕获权限,无需额外系统授权;
  • 稳定可靠:后台静默录制,不依赖第三方录音 APP,避免界面干扰;
  • 参数灵活:支持采样率配置,平衡音质与文件体积。

二、录音核心 API 详解

冰狐智能辅助录音功能依赖 3 个核心 API,参数与调用逻辑固定,不可随意修改。

1. requestAudioCapture ()

功能:录音前置操作,向设备申请音频捕获权限,必须在启动录制前调用,否则会因权限不足导致录制失败。

  • 参数:无
  • 返回值:无
  • 注意:调用后系统会自动弹出权限申请弹窗,脚本需等待用户授权后再执行后续操作。

2. startRecordAudio (filename, options)

功能:初始化录音配置,启动音频录制,生成 WAV 格式文件。

  • 参数:
    1. filename(字符串,必填):录音文件名,支持相对路径与绝对路径。相对路径默认保存至设备外部存储 Movies 目录;绝对路径可自定义存储位置(如/sdcard/aznfz_record/)。
    2. options(对象,选填):录音配置项,核心为sampleRate(采样率),可选值 8000、16000、32000、44100,数值越高音质越好、文件越大,官方示例默认 32000,兼顾音质与体积。
  • 返回值:返回录制状态标识,可用于日志排查。

3. stopRecordAudio ()

功能:终止当前录音任务,保存音频文件至指定路径,释放音频资源。

  • 参数:无
  • 返回值:无
  • 注意:必须调用此方法,否则文件无法正常保存,可能出现损坏。

三、基础录音 Demo 源码

以下 Demo 严格遵循官方示例规范,实现授权→启动→延时录制→停止的完整流程,复制到冰狐智能辅助脚本编辑器即可直接运行。

javascript 复制代码
/**
 * 冰狐智能辅助 基础录音Demo
 * 功能:申请权限→启动录制→20秒后自动停止→保存WAV文件
 * 官方文档:https://aznfz.com/document/record#requestAudioCapture
 */
function main() {
    // 1. 申请音频捕获权限(必选前置)
    console.log("===== 开始申请录音权限 =====");
    requestAudioCapture();

    // 等待权限授权完成(避免权限未确认就启动录制)
    sleep(2000);
    console.log("===== 录音权限申请完成 =====");

    // 2. 配置录音参数:文件名+采样率,启动录制
    // 文件名:mys2.wav,采样率32000(官方推荐)
    console.log("===== 启动录音,采样率:32000 =====");
    var recordResult = startRecordAudio('mys2.wav', {sampleRate: 32000});
    // 打印启动状态,便于调试
    console.log("录音启动结果:", recordResult);

    // 3. 录音过程控制:持续录制20秒
    // 可替换为业务逻辑(如控件监听、按钮触发、定时结束)
    console.log("===== 正在录音,时长20秒,请等待 =====");
    sleep(20000);

    // 4. 停止录音,保存文件
    console.log("===== 录音结束,文件已保存 =====");
    stopRecordAudio();

    // 可选:提示录音完成
    toast("录音完成,文件:mys2.wav");
}

Demo 运行说明

  1. 打开冰狐智能辅助 APP,进入脚本编辑页面,新建 JS 脚本;
  2. 复制上述代码,粘贴至编辑器,保存脚本;
  3. 运行脚本,首次执行会弹出录音权限申请,点击 "允许";
  4. 脚本自动启动录音,20 秒后停止,文件保存至设备Movies/mys2.wav,可在文件管理器查看。

四、进阶扩展:实用录音场景实现

基础 Demo 满足通用录制需求,结合自动化业务场景,可扩展出定时录音、按键触发、循环分段录制、文件管理等高级功能,以下为常用场景实现。

场景 1:自定义时长定时录音

支持灵活设置录音时长,替代固定 20 秒,适配会议、采访等场景。

javascript 复制代码
function main() {
    requestAudioCapture();
    sleep(2000);

    // 自定义录音时长:60秒(1分钟)
    var recordDuration = 60 * 1000;
    var fileName = "timing_record.wav";

    // 启动录制
    startRecordAudio(fileName, {sampleRate: 44100});
    toast("开始定时录音,时长1分钟");
    console.log("定时录音启动,时长:" + recordDuration/1000 + "秒");

    // 等待录制完成
    sleep(recordDuration);

    // 停止录制
    stopRecordAudio();
    toast("定时录音完成,文件:" + fileName);
    console.log("文件保存路径:Movies/" + fileName);
}

场景 2:按键触发分段录音

适配课堂、会议重点标记场景,通过物理按键触发分段保存,避免长音频难以检索。

javascript 复制代码
// 分段录音计数器
var segmentIndex = 1;

function main() {
    requestAudioCapture();
    sleep(2000);
    console.log("===== 分段录音准备就绪,按音量下键触发分段 =====");
    toast("按音量下键开始分段录音");

    // 监听音量下键按键事件
    setKeyCallback("KEYCODE_VOLUME_DOWN", function() {
        // 停止上一段录制
        stopRecordAudio();
        console.log("第" + (segmentIndex-1) + "段录音已保存");

        // 生成新段文件名(分段标记)
        var newFileName = "segment_" + segmentIndex + ".wav";
        // 启动新段录制
        startRecordAudio(newFileName, {sampleRate: 32000});
        console.log("开始第" + segmentIndex + "段录音");
        toast("第" + segmentIndex + "段录音中...");

        // 计数器自增
        segmentIndex++;
    });

    // 保持脚本运行,持续监听按键
    while (true) {
        sleep(1000);
    }
}

场景 3:自定义存储路径 + 文件管理

通过绝对路径指定存储目录,便于分类管理录音文件,结合 FileX API 实现目录创建。

javascript 复制代码
// 引入文件管理模块
var FileX = require("FileX");

function main() {
    requestAudioCapture();
    sleep(2000);

    // 自定义存储目录
    var customPath = "/sdcard/冰狐录音/";
    // 创建目录(不存在则自动创建)
    var dir = new FileX(customPath);
    if (!dir.exists()) {
        dir.makeDirs();
        console.log("自定义目录创建成功:" + customPath);
    }

    // 带路径的文件名
    var fullFileName = customPath + "custom_path_record.wav";
    // 启动录制
    startRecordAudio(fullFileName, {sampleRate: 32000});
    toast("自定义路径录音中...");
    console.log("录音文件路径:" + fullFileName);

    // 录制30秒
    sleep(30000);

    // 停止录制
    stopRecordAudio();
    toast("录音完成,路径:" + fullFileName);
}

五、常见问题排查

  1. 启动录音失败,提示权限不足 原因:未调用requestAudioCapture()或未授权;解决:脚本开头必须调用权限申请,运行时手动允许录音权限。

  2. 录音文件损坏、无法播放 原因:未调用stopRecordAudio()直接终止脚本,文件未保存;解决:确保录制完成后必须执行停止方法,可加异常捕获保证执行。

  3. 文件找不到 原因:混淆相对路径与绝对路径;解决:相对路径默认在Movies目录,绝对路径需完整路径(如/sdcard/xxx.wav)。

  4. 音质差 / 文件过大原因:采样率设置不合理;解决:语音场景用 16000/32000,高保真用 44100,节省空间用 8000。

六、总结与规范提醒

冰狐智能辅助的录音功能通过 3 个核心 API,实现了自动化脚本中音频录制的极简开发。

核心规范必记

  1. 权限先行:requestAudioCapture()必须在启动录制前调用;
  2. 格式固定:仅支持 WAV 格式,文件名后缀不可修改;
  3. 完整流程:启动→控制→停止,缺一不可;
  4. 路径清晰:区分相对 / 绝对路径,便于文件管理。

无论是基础自动化录音,还是复杂场景的分段、定时、触发录制,基于本文 Demo 与 API 详解,均可快速扩展实现。后续可结合冰狐的音频播放、网络上传 API,打造录音→播放→上传的完整音频自动化闭环,满足更多业务需求。

相关推荐
Mr -老鬼1 天前
EasyClick 安卓CLI全栈专家能力手册
android·自动化·ai编程·easyclick·易点云测
ai_coder_ai2 天前
在自动化脚本中如何获取手机信息和控制手机?
autojs·自动化脚本·冰狐智能辅助·easyclick
Mr -老鬼3 天前
EasyClick 全平台公开问题解决方案全集(2026最新完整版)
自动化·ec·easyclick·易点云测
ai_coder_ai4 天前
在自动化脚本中如何实现网络访问?
网络·autojs·自动化脚本·冰狐智能辅助·easyclick
ai_coder_ai6 天前
如何优雅的使用悬浮日志调试自动化脚本?
autojs·自动化脚本·冰狐智能辅助·easyclick
ai_coder_ai7 天前
自动化脚本ui编程之flexbox布局
ui·autojs·自动化脚本·冰狐智能辅助·easyclick
ai_coder_ai8 天前
自动化脚本ui编程之垂直滚动布局(vscroll)
ui·autojs·自动化脚本·冰狐智能辅助·easyclick
Mr -老鬼9 天前
EasyClick iOS版 CLI 与 Trae iOS版智能体
ios·自动化·ai编程·tare·ec·easyclick·易点云测
ai_coder_ai9 天前
自动化脚本ui编程之水平滚动布局(hscroll)
ui·autojs·自动化脚本·冰狐智能辅助·easyclick