当前位置: 首页 > news >正文

Android16音频之开始录制AudioRecord.startRecording:用法实例(一百八十八) - 指南

简介:CSDN博客专家、《Android系统多媒体进阶实战》作者

博主新书推荐:《Android系统多媒体进阶实战》
Android Audio工程师专栏地址: Audio工程师进阶系列原创干货持续更新中……
Android多媒体专栏地址: 多媒体系统工程师系列原创干货持续更新中……
推荐1:AAOS车载系统+AOSP14系统攻城狮入门视频实战课
推荐2:Android14 Binder之HIDL与AIDL通信实战课
推荐3:Android15快速自定义与集成音效实战课
推荐4:Android15音频策略实战课

人生格言:人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

文章目录

      • 1. 前言
      • 2. Android16进阶之开始录制AudioRecord.startRecording介绍
      • 3. 代码实例
        • 3.1 HiRes手动启动直写
        • 3.2 通话启动与状态灯同步
        • 3.3 识别启动与模型预热并行
      • 3.4 用法总结

Android16进阶之开始录制AudioRecord.startRecording:用法实例

1. 前言

本篇目的:Android16进阶之开始录制AudioRecord.startRecording:用法实例

2. Android16进阶之开始录制AudioRecord.startRecording介绍

  1. 基本概念
    startRecording 将 AudioRecord 状态切换为 RECORDSTATE_RECORDING,启动硬件采集,后续方可调用 read 获取数据。

  2. 功能
    触发 native 驱动;与缓冲区大小联动;支持快速启动;无参数;同步返回。

  3. 使用限制
    需先成功初始化;不可重复调用;调用后状态立即生效;API 3 及以上。

  4. 性能特性
    启动延迟等于缓冲区剩余帧数/采样率;无内存分配;与硬件时钟同步。

  5. 使用场景
    文件采集、实时通话、特征提取、低延迟监视、录音控制。

3. 代码实例

3.1 HiRes手动启动直写
AudioRecord record = new AudioRecord.Builder()
.setAudioSource(MediaRecorder.AudioSource.MIC)
.setAudioFormat(new AudioFormat.Builder()
.setSampleRate(96000)
.setChannelMask(AudioFormat.CHANNEL_IN_STEREO)
.setEncoding(AudioFormat.ENCODING_PCM_16BIT)
.build())
.setBufferSizeInBytes(65536)
.build();
if (record.getState() != AudioRecord.STATE_INITIALIZED) return;
record.startRecording();
FileOutputStream fos = new FileOutputStream("/sdcard/start96k.raw");
byte[] buf = new byte[65536];
while (recording) {
int read = record.read(buf, 0, buf.length);
if (read > 0) fos.write(buf, 0, read);
}
fos.close();
record.stop();
record.release();

代码功能:startRecording后立即读取,确保第一帧无丢失,保留原始动态。

3.2 通话启动与状态灯同步
AudioRecord record = new AudioRecord.Builder()
.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION)
.setAudioFormat(new AudioFormat.Builder()
.setSampleRate(16000)
.setChannelMask(AudioFormat.CHANNEL_IN_MONO)
.setEncoding(AudioFormat.ENCODING_PCM_16BIT)
.build())
.setBufferSizeInBytes(6400)
.build();
if (record.getState() != AudioRecord.STATE_INITIALIZED) return;
record.startRecording();
led.on();
DatagramSocket socket = new DatagramSocket();
InetAddress addr = InetAddress.getByName("10.0.0.88");
byte[] pkt = new byte[320];
while (calling) {
int read = record.read(pkt, 0, pkt.length);
if (read > 0) socket.send(new DatagramPacket(pkt, read, addr, 5004));
}
socket.close();
led.off();
record.stop();
record.release();

代码功能:startRecording成功瞬间点亮指示灯,用户一眼可知采集已激活。

3.3 识别启动与模型预热并行
AudioRecord record = new AudioRecord.Builder()
.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION)
.setAudioFormat(new AudioFormat.Builder()
.setSampleRate(16000)
.setChannelMask(AudioFormat.CHANNEL_IN_MONO)
.setEncoding(AudioFormat.ENCODING_PCM_FLOAT)
.build())
.setBufferSizeInBytes(1280)
.build();
if (record.getState() != AudioRecord.STATE_INITIALIZED) return;
model.warmUp();
record.startRecording();
float[] frame = new float[320];
while (recognizing) {
int read = record.read(frame, 0, frame.length);
if (read > 0) {
float[] mel = computeMel(frame);
model.input(mel);
}
}
record.stop();
record.release();

代码功能:startRecording后立即进入读取循环,与模型预热零间隙衔接,降低首字延迟。

3.4 用法总结

代码关键字功能描述典型应用
startRecording启动采集首帧无丢保存
startRecording启动采集状态灯同步
startRecording启动采集模型预热并行
http://www.jsqmd.com/news/378459/

相关文章:

  • 揭秘加油卡靠谱回收平台:安全、便捷、省钱的最佳选择 - 团团收购物卡回收
  • Nodejs+vue+ElementUI的培训机构课程报名教育管理系统express-mysql
  • 首信保险代理荣获第十六届金鼎奖“年度卓越客户服务机构” - 包罗万闻
  • 2026年四川病媒生物检测厂家权威榜单 靠谱优质实力强 适配多场景精准检测实力过硬服务优 - 深度智识库
  • 金属材料表面六种缺陷类型数据集:工业视觉检测的优质训练资源
  • 2026年四川消杀公司权威榜单 靠谱厂家深耕多领域长效防控 全覆盖灭鼠消杀病媒防治全需求 - 深度智识库
  • 百联OK卡回收攻略,教你轻松换现金! - 团团收购物卡回收
  • 中小工程如何找到灵活批发商?2026年外墙保温板供应商推荐与排名,破解小批量采购痛点 - 品牌推荐
  • 揭晓京东e卡98折回收的行业秘密 - 京回收小程序
  • Elasticsearch核心概念与Java客户端实战 构建高性能搜索服务 - 详解
  • busybox vscode 环境
  • 深度解析武商一卡通使用与回收常见问题:新手必看! - 团团收购物卡回收
  • 2026年品牌策划公司测评报告:基于用户调研的口碑维度深度解析 - 品牌推荐
  • 10 分钟学会:Java 调用 YOLO 模型全流程
  • .NET 中优雅处理 Server-Sent Events 请求取消
  • 分析可靠的全屋定制板材生产企业,云贵川哪家性价比高 - 工业品牌热点
  • 批发商服务能力如何评估?2026年外墙保温板批发商推荐与排名,应对物流与质量一致性痛点 - 品牌推荐
  • 西南地区杰家板材好吗,用户真实口碑大分享 - myqiye
  • 互联网大厂Java面试实录:微服务架构与AI技术场景深度解析
  • 2026年广州网络安全专利AI、环保技术专利AI布局、医疗器械专利AI品牌推荐 - mypinpai
  • 跨境电商、印刷快消、旅游、金融、互联网全行业图片素材网站推荐 - 品牌2026
  • 首信保险代理斩获普惠金融助力机构奖 科技赋能民生保障 - 包罗万闻
  • 【免费源码】WP 链接检测插件免费下载(弹窗版本)
  • 2026年环保设备靠谱公司排名,细聊官方纽英其设备口碑和公司情况 - 工业品网
  • 2026年2月外墙保温板批发商推荐:权威三维评测榜单揭晓 - 品牌推荐
  • 深聊郑州点泰景观设计,在行业知名度、实力以及性价比表现 - 工业设备
  • 聊聊口碑好的360航空软包汽车脚垫,售后完善渠道机构分析 - 工业品网
  • 2026年四川灭鼠厂家权威榜单及选型指南 覆盖家庭等全场景 适配各类鼠患治理需求 - 深度智识库
  • 说说时代蜂族车位代理销售,合作效果、前景及管理服务哪家好 - 工业推荐榜
  • 开源AI编码代理OpenCode的技术架构与特性