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

android音频录音,(一)MediaRecorder简介

1.MediaRecorder概述

Android 多媒体框架支持捕获和编码各种常见的音频和视频格式,简要介绍音频录音。

2.MediaRecorder

源码路径:
frameworks/base/media/java/android/media/MediaRecorder.java

源码接口:

setAudioSource(MediaRecorder.AudioSource.MIC) 用于设置音频源,如:MediaRecorder.AudioSource.MIC,此MIC一般为设备主MIC:
源码函数:
public native void setAudioSource(@Source int audioSource)throws IllegalStateException;

setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)设置输出文件格式,如:MediaRecorder.OutputFormat.THREE_GPP,THREE_GPP表示录音保存文件为3gp:
源码函数:
public native void setOutputFormat(int output_format)throws IllegalStateException;

setOutputFile()设置输出文件名,如" sdcard/audiorecordtest.3gp":
源码函数:
public void setOutputFile(File file)
     {
          mPath = null;
          mFd = null;
          mFile = file;
     }

setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)设置音频编码器,MediaRecorder.AudioEncoder.AMR_NB,AMR_NB为编码格式:
源码函数:
public native void setAudioEncoder(int audio_encoder)throws IllegalStateException;

prepare()各参数设置完成后,启动初始化:
源码函数:
public void prepare() throws IllegalStateException, IOException
{
  if (mPath != null) {
      RandomAccessFile file = new RandomAccessFile(mPath, "rw");
      try {
          _setOutputFile(file.getFD());
      } finally {
          file.close();
      }
  } else if (mFd != null) {
      _setOutputFile(mFd);
  } else if (mFile != null) {
      RandomAccessFile file = new RandomAccessFile(mFile, "rw");
      try {
          _setOutputFile(file.getFD());
      } finally {
          file.close();
      }
  } else {
      throw new IOException("No valid output file");
  }
  _prepare();
}

start() 执行录音启动:
源码函数:
public native void start() throws IllegalStateException;

stop()停止录音:
源码函数:
public native void stop() throws IllegalStateException;

3 权限申请:

使用录音功能,APK必须告知用户它将访问设备的音频输入。从 Android 6.0(API 级别 23)开始,APK录音运行时,必须请求用户批准。APK 需要请求如下权限。
<uses-permission android:name="android.permission.RECORD_AUDIO" />

以上,MediaRecorder录取模式简要说明,可以参照源码进行查看。

不同参数类型: https://mp.csdn.net/mp_blog/creation/editor/140903503

相关文章:

android音频录音,(一)MediaRecorder简介

1.MediaRecorder概述 Android 多媒体框架支持捕获和编码各种常见的音频和视频格式&#xff0c;简要介绍音频录音。 2.MediaRecorder 源码路径&#xff1a;frameworks/base/media/java/android/media/MediaRecorder.java 源码接口&#xff1a; setAudioSource(MediaRecorde…...

autoX.js

一. 概述 AutoX.js 使用 JavaScript 作为脚本语言&#xff0c;目前使用 Rhino 1.7.13 作为脚本引擎&#xff0c;支持 ES5 与部分 ES6 特性。 下载地址&#xff1a; https://github.com/kkevsekk1/AutoX/releases 官方文档&#xff1a; AutoX.js 二. 用法 1. 首先在官网下…...

日本软文发稿:日本主流发稿媒体有哪些?

日本软文发稿&#xff1a;日本主流发稿媒体有哪些 在日本发布软文时&#xff0c;选择合适的主流媒体进行推广是非常关键的。以下是一些在日本广受欢迎、影响力较大的媒体推荐&#xff08;排列不区分媒体排名顺序&#xff09;&#xff1a; 1. 朝日新闻 (Asahi Shimbun) 朝日新…...

翰德恩赋能中国邮政信息科技产品创新系列培训

为了增强中邮信科公司需求分析工程师的专业素养&#xff0c;提升其业务需求和业务价值的挖掘能力&#xff0c;进而设计并交付满足用户期望的产品&#xff0c;提升用户体验&#xff0c;运营管理部于2024年4月至6月成功举办了六期需求分析工程师能力提升系列培训。 本次系列培训…...

分享一个基于SpringBoot的英语学习平台Java英语学习任务打卡系统(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…...

Golang学习笔记

Go 语言学习笔记 1. 引言 Go 语言是由 Google 开发的一种静态类型、编译型的系统编程语言。它以简洁、高效和易于理解著称&#xff0c;并且支持并发编程。 2. 安装与环境配置 2.1 安装 Go 访问 Go 官方网站 下载适合你操作系统的安装包。安装完成后&#xff0c;设置 GOPAT…...

详解【多线程与并发】之线程

目录 1、线程 1.1线程Thread 1.2线程特点 1.3线程函数的原型 1.4Linux对于pthread的API的支持 1.4.1创建一个线程 1.4.2线程的退出 1.5资源分离 2、线程的同步/互斥机制 2.1线程互斥锁 2.1.1初始化线程互斥锁 2.2线程互斥锁的PV 操作 2.2.1P 操作&#xff08;上锁…...

Linux安全与高级应用(四)深入探索MySQL数据库:安装、管理与安全实践

文章目录 标题&#xff1a;全面解析LAMP平台部署及应用第一部分&#xff1a;LAMP平台概述第二部分&#xff1a;准备工作第三部分&#xff1a;安装和配置PHP第四部分&#xff1a;配置Apache第五部分&#xff1a;测试LAMP平台第六部分&#xff1a;部署phpMyAdmin总结 &#x1f44…...

「iOS」自定义Modal转场——抽屉视图的实现

「iOS」自定义Modal转场——抽屉视图的实现 文章目录 「iOS」自定义Modal转场——抽屉视图的实现前言错误尝试自定义Modal转场实现流程自定义动画类UIPresentationController 成果展示参考文章 前言 在仿写网易云的过程之中&#xff0c;看到学长之前仿写时实现的抽屉视图&…...

【数据结构】顺序结构实现:特殊完全二叉树(堆)+堆排序

二叉树 一.二叉树的顺序结构二.堆的概念及结构三.堆的实现1.堆的结构2.堆的初始化、销毁、打印、判空3.堆中的值交换4.堆顶元素5.堆向上调整算法&#xff1a;实现小堆的插入6.堆向下调整算法&#xff1a;实现小堆的删除7.堆的创建1.堆向上调整算法&#xff1a;建堆建堆的时间复…...

【c++学习技术栈】

c学习技术栈 基础c基础组件中间件框架devops性能目标岗位 基础 计算机网络数据结构与算法操作系统linux c 基础组件 池式组件&#xff1a;线程池&#xff0c;内存池&#xff0c;db数据库连接池原子&#xff0c;无锁队列&#xff0c;ringbuffer&#xff0c;定时器。日志&…...

swift 自定义DatePacker

import Foundationenum AppDatePickerStyle {case KDatePickerDate //年月日case KDatePickerTime //年月日时分case kDatePickerMonth // 年月case KDatePickerSecond //秒}class AppDatePicker: UIView {private let jk_rootView UIApplication.shared.keyWindow!pri…...

MySQL事务,锁,MVCC总结

mysql中最重要的就是事务&#xff0c;其四大特性让我们维持了数据的平衡&#xff0c;一致。那么事务究竟是什么&#xff0c;与什么相关&#xff0c;他的使用步骤&#xff0c;以及使用过程中我们会遇到什么问题呢&#xff1f;下面我们一起学习交流! 1.MySQL的存储引擎&#xff…...

24/8/7 算法笔记 支持向量机回归问题天猫双十一

import numpy as np from sklearn.svm import SVR import matplotlib.pyplot as plt X np.linspace(0,2*np.pi,50).reshape(-1,1) y np.sin(X) plt.scatter(X,y) 建模 线性核函数 svr SVR(kernel linear) svr.fit(X,y.ravel())#变成一维y_ svr.predict(X) plt.scatter(…...

win7系统利用定时启动+脚本实现MySQL文件自动备份

前言 最近接到项目&#xff0c;数据量不大但对运行数据的安全性要求极高&#xff0c;为避免因不可抗拒因素导致的数据丢失&#xff0c;选择机械硬盘作为数据存储盘&#xff0c;并使用脚本方式对文件进行备份 一、脚本 下面为自动备份文件的 脚本&#xff0c;可根据自身情况进…...

基于Java多线程处理数据

基于Java多线程处理数据 背景代码实现 背景 在日常工作中&#xff0c;有一个同步企微客户-学员关系接口的定时任务在执行中随着数据量的不断增长&#xff0c;定时任务的执行结束时间也出现了当天执行不完的情况&#xff0c;影响到了正常业务的运行。基于这种情况&#xff0c;在…...

日常知识点之遇到问题结构体按位构造协议时和期望不一致,研究记录一下

遇到一个问题&#xff0c;在做业务的时候&#xff0c;涉及到协议相关&#xff0c;按位进行设计&#xff0c;用结构体来模拟协议时&#xff0c;发现内存存储和实际目的不一致&#xff0c;知道是大小端以及计算机底层存储逻辑相关&#xff0c;所以研究了一下。 1&#xff1a;简单…...

spring mvc 文件下载

在web中下载的方式大多基于servlet&#xff0c;在web.xml中配置下载路径&#xff0c;这里再介绍json(转成base64字符串)和blob的使用方式 servlet WEB-INF/web.xml <!--url映射--> <servlet-mapping><servlet-name>DowloadServlet</servlet-name>&l…...

Qt WebEngine基于WebEngineScript注入js脚本

在之前的文章中&#xff0c;我们介绍了Qt WebEngine注入js的用法&#xff0c;及runJavaScript()的用法&#xff0c;该方法主要是用在页面加载完成后&#xff0c;为了和网页做一些交互时使用。有时候需要监听网页加载完成的一些状态或信息&#xff0c;则需要网页加载前注入js来实…...

案例分享-国外UI设计界面赏析

国外UI设计倾向于简洁的布局和清晰的排版&#xff0c;减少视觉干扰&#xff0c;提升用户体验。通过合理的色彩搭配和图标设计&#xff0c;营造舒适愉悦的使用氛围。 设计师不拘泥于传统框架&#xff0c;勇于尝试新元素和理念&#xff0c;使界面独特有趣。同时&#xff0c;强调以…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...