类型:音频处理大小:2.0M语言:中文 评分:3.3

标签:

立即下载

今天工作上需要做一个一边录音一边播放的功能,大致原因是有一个外部设备输入音频到我们机器,然后我们机器需要马上把音频播放出来。所以了解了一些有关录音和播放的知识。接到这个任务的第一反应就是看看Android源码里面的录音Demo,因此今天针对Android的录音demo程序讲解一些录音和播放相关知识。

今天主要讲解一下使用MediaRecorder 实现录音,主要是参照Android官网介绍来说明。

这个程序并不能实现一边录音一边播放,下一篇文章我再说如何解决这问题。下面是我们今天要讲解的Mediarecorder的状态机图。摘录自Android官网。

(PS:新建的QQ群,有兴趣可以加入一起讨论:Android群:322599434)

1、使用Mediarecorder 录音

MediaRecorder类用来进行媒体采样,包括音频和视频。也就是用来记录音频和视频方法的类,记录的数据一般都是写入到文件里面。因此我们可以通过这个类实现录音和录视频的功能。下面介绍MediaRecorder用来录音的简单方法:MediaRecorder recorder = new MediaRecorder();

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

recorder.setOutputFile(PATH_NAME);

recorder.prepare();

recorder.start(); // 开始录音

...

recorder.stop();

recorder.reset(); // You can reuse the object by going back to setAudioSource() step

recorder.release(); // Now the object cannot be reused

上面是使用MediaRecorder录音的简单流程代码,基本上你使用的代码,就能实现录音的功能。

2、MediaRecorder 相关的类

//Edited by mythou//http://www.cnblogs.com/mythou///定义音频编码

class MediaRecorder.AudioEncoder

//定义声音资源

class MediaRecorder.AudioSource

//回调接口,当录音出现错误的时候调用

interface MediaRecorder.OnErrorListener

//回调接口,当录音出现错误的时候调用

interface MediaRecorder.OnInfoListener

//定义输出格式class MediaRecorder.OutputFormat

//定义视频编码class MediaRecorder.VideoEncoder

//定义视频sourceclass MediaRecorder.VideoSource

3、MediaRecorder常用方法//获取音频信号源的最高值。

final static int getAudioSourceMax()

//最后调用这个方法采样的时候返回最大振幅的绝对值

int getMaxAmplitude()

//准备recorder 开始捕获和编码数据

void prepare()

//发布与此MediaRecorder对象关联的资源

void release()

//重新启动mediarecorder到空闲状态

void reset()

//设置录制的音频通道数。

void setAudioChannels(int numChannels)

//设置audio的编码格式

void setAudioEncoder(int audio_encoder)

//设置录制的音频编码比特率

void setAudioEncodingBitRate(int bitRate)

//设置录制的音频采样率。

void setAudioSamplingRate(int samplingRate)

//设置用于录制的音源。

void setAudioSource(int audio_source)

//辅助时间的推移视频文件的路径传递。

void setAuxiliaryOutputFile(String path)

void setAuxiliaryOutputFile(FileDescriptor fd)

//在文件描述符传递的辅助时间的推移视频

//设置一个recording的摄像头

void setCamera(Camera c)

//设置视频帧的捕获率

void setCaptureRate(double fps)

//设置记录会话的最大持续时间(毫秒)

void setMaxDuration(int max_duration_ms)

//设置记录会话的最大大小(以字节为单位)

void setMaxFileSize(long max_filesize_bytes)

//注册一个回调被调用发生错误时,同时录制

void setOnErrorListener(MediaRecorder.OnErrorListener l)

//注册要同时记录一个信息事件发生时调用的回调。

void setOnInfoListener(MediaRecorder.OnInfoListener listener)

//设置输出的视频播放的方向提示

void setOrientationHint(int degrees)

//传递要写入的文件的文件描述符

void setOutputFile(FileDescriptor fd)

//设置输出文件的路径

void setOutputFile(String path)

//设置在录制过程中产生的输出文件的格式

void setOutputFormat(int output_format)

//表面设置显示记录媒体(视频)的预览

void setPreviewDisplay(Surface sv)

//从一个记录CamcorderProfile对象的使用设置

void setProfile(CamcorderProfile profile)

//设置视频编码器,用于录制

void setVideoEncoder(int video_encoder)

//设置录制的视频编码比特率

void setVideoEncodingBitRate(int bitRate)

//设置要捕获的视频帧速率

void setVideoFrameRate(int rate)

//设置要捕获的视频的宽度和高度

void setVideoSize(int width, int height)

//开始捕捉和编码数据到setOutputFile(指定的文件)

void setVideoSource(int video_source)

//开始录音

void start()

//停止recording

void stop()

4、播放录音mPlayer = new MediaPlayer();

mPlayer.setDataSource(mSampleFile.getAbsolutePath());

mPlayer.setOnCompletionListener(this);

mPlayer.setOnErrorListener(this);

mPlayer.prepare();

mPlayer.start();

//.......

mPlayer.stop();

mPlayer.release();

mPlayer = null;

上面是一段简单播放录音的过程,结合上面录音代码,就可以实现录音和回放。

MediaRecorder的使用方法很简单,最后给出Android源码里面的录音程序,方便有需要的朋友下载看看。下一篇文章再讲解如何实现一边录音一边播放功能。

android录音程序,使用MediaRecorder编写Android 录音程序相关推荐

  1. python开发安卓程序-python可以编写android程序吗?

    python可以编写android程序吗?答案是肯定的.Android不直接支持使用python开发应用,需要使用其它中间件或者库.PythonForAndroid.CLE以及Wrapandroid ...

  2. swift android界面,使用 Swift 语言编写 Android 应用入门

    原标题:使用 Swift 语言编写 Android 应用入门 Swift标准库可以编译安卓armv7的内核,这使得可以在安卓移动设备上执行Swift语句代码.本文解释了如何在你的安卓手机上运行一个简单 ...

  3. Android.mk 编译c语言,编写 android.mk 中 LOCAL_C_INCLUDES 的技巧

    编写 android.mk 中 LOCAL_C_INCLUDES 的技巧 在编写android.mk的过程中,免不了要修改LOCAL_C_INCLUDES来设置头文件的include目录, 一般写成这 ...

  4. android hook 多线程,从零编写Android Hook Framework

    0x00 背景 最近想做一个安卓的hook framework,来进行dynamic binary instrumentation.看了一些教程,完成了一部分工作. 0x01 原理 hook原理参照z ...

  5. python计算器小程序源码_python编写计算器程序-python代码编写计算器小程序

    本文实例为大家分享了python计算器小程序的具体代码,供大家参考,具体内容如下 import tkinter import tkinter.messagebox import math class ...

  6. 89c51,8255,6个led数码管显示时钟的汇编语言程序,汇编语言要求编写一个时钟程序 用八位数码管实现时分秒的计时功能...

    我以前做的一个6位数码管的时钟程序,你可以看看,其实6位足够了. KEYVALEQU 30H KEYTMEQU 31H KEYSCANEQU 32H DATEQU 33H SCANLEDEQU 39H ...

  7. python可以写安卓应用吗_python可以编写android程序吗?

    python可以编写android程序吗?答案是肯定的.Android不直接支持使用python开发应用,需要使用其它中间件或者库.PythonForAndroid.CLE以及Wrapandroid ...

  8. 我的第一个Android应用BMI-深入浅出Android

    深入浅出 Android 1入门 .... 4 初探 Android .. 4 2008 年末最大的冲击 .... 4 Android 是什么 .... 4 从创意开始 .... 5 安装 Andro ...

  9. wxWidgets:编写一个应用程序

    wxWidgets:编写一个应用程序 wxWidgets:编写一个应用程序 这段代码有什么作用? wxWidgets:编写一个应用程序 您好,欢迎来到本教程.像我一样,您可能尝试过使用 Win32 库 ...

最新文章

  1. jmeter 高并发测试报告_使用 JMeter 进行压力测试
  2. 推荐一个优化分页查询的办法(分页数很大的情况)
  3. php 提取登录QQ,php QQ登录
  4. 【iVX 初级工程师培训教程 10篇文拿证】04 画布及我和 iVX 合照
  5. PyCharm取消启动时自动加载项目
  6. React.js入门基础一
  7. WDCP(WDlinux Control Panel) mysql/add_user.php、mysql/add_db.php Authentication Loss
  8. 网络流 增广路 入门很好的文章
  9. python俄罗斯方块编码简单_python俄罗斯方块教程-100行代码
  10. learun通用权限系统框架功能实现设计
  11. at24c08 E2PROM的I2C设备驱动实例——基于mini2440
  12. safri 对于display:block;的元素显示不出来 其他所有浏览器均正常
  13. nfc和红外线的区别_比较NFC支付、蓝牙支付、红外线支付技术的优缺点
  14. 报错:npm ERR code EPERM
  15. 想学怎么把截图的英文翻译成中文?这就教你翻译截图
  16. 息屏指纹解锁性能优化 TP LCD
  17. erp系统服务器网络怎么设置,erp系统云服务器怎么配置
  18. android生成车票动效,Android项目源码功能齐全的12306火车票订票系统项目
  19. 跳槽神器!阿里巴巴内部出品“Spring全线笔记”,不止是全家桶,理论与实战结合,挑战年薪80w!
  20. java实现qq抢红包_Java实现抢红包算法,附完整代码(公平版和手速版)

热门文章

  1. 苹果appstore支付,票据内容详解
  2. 没钱买 mac ? 一招教你如何让 Windows 秒变【苹果电脑】
  3. 14年,图灵出版了这些口碑科普好书
  4. Reac 学习 初识(一)
  5. wwise移植到linux平台,设立Wwise项目 - Lumberyard 用户指南
  6. Linux命令之ntpdate网络校时,时间
  7. 数字IC设计之脚本语言
  8. 线性代数:攀登机器学习的阶梯
  9. 哪款电脑监控软件适合公司使用(电脑监控软件哪个好?)
  10. Unity 之 UGUI RectTransform矩形变换组件详解