`
cavalry800528
  • 浏览: 53087 次
文章分类
社区版块
存档分类
最新评论

Android 录音和播放

 
阅读更多

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

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

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

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

 

1、使用Mediarecorder 录音

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

//Edited by mythou
//http://www.cnblogs.com/mythou/
 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

//定义视频source
class MediaRecorder.VideoSource

 

3、MediaRecorder常用方法


//Edited by mythou
//http://www.cnblogs.com/mythou/
//获取音频信号源的最高值。
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、播放录音

//Edited by mythou
//http://www.cnblogs.com/mythou/
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录音程序下载:SoundRecorder8-6.rar

 

Edited by mythou

原创博文,转载请标明出处:http://www.cnblogs.com/mythou/p/3242000.html 

 

 

1
2
分享到:
评论

相关推荐

    Android录音和播放

    综上所述,Android录音和播放涉及的关键技术和步骤已详细阐述。通过理解MediaRecorder和MediaPlayer的工作原理,开发者可以轻松实现音频的录制与播放功能,从而丰富应用的功能和用户体验。在VoiceDemo这个项目中,你...

    android录音和播放

    在Android平台上,录音和播放是两个重要的功能,广泛应用于各种应用程序,如音乐播放器、语音备忘录等。本文将详细讲解如何实现Android中的录音和播放网络音频文件,以及涉及的相关技术。 首先,我们来看录音部分。...

    Android录音、播放功能最佳学习项目app_安卓源码.zip

    通过这个学习项目,开发者可以掌握Android录音和播放的核心技术,并了解如何在实际应用中整合这些功能。项目中的源码提供了完整的实现,是学习和调试的好材料。在实践中,可以根据自己的需求调整和优化,以满足不同...

    android录音功能实现

    "RecordDemo"项目可能包含了实现以上功能的示例代码,你可以通过查看该项目来更深入地了解Android录音和播放的细节。记住,调试和测试在不同设备和Android版本上的表现,因为录音功能可能因设备差异而有所不同。 ...

    Android 录音及音频播放

    以上是Android录音和播放的基本实现,实际应用中可能需要考虑更多细节,如错误处理、权限管理、UI交互等。在app文件中,可能包含了完整的示例代码,包括Activity、布局文件以及对应的XML属性设置,这些可以帮助你更...

    Android 录音并播放

    综上所述,Android录音和播放涉及多个层次的操作,需要理解音频处理的基本原理,并熟悉MediaRecorder、MediaPlayer和AudioTrack的API。在实际开发中,还需要结合用户需求和设备特性进行适当的优化,以提供流畅、稳定...

    android录音播放源代码

    总之,Android录音和播放的核心在于`AudioRecord`和`AudioTrack`,它们分别用于录音和播放操作。`SimpleRecorder`项目提供了这两个功能的基础实现,开发者可以在此基础上添加更多的功能,如文件保存、格式转换、音量...

    Android按下录音录音动画效果 ,自定义录音、播放动画View

    这个视图将承载录音和播放过程中的动画。自定义视图在Android中通常是通过继承`View`或`ViewGroup`类并重写其`onDraw()`方法来实现的。在这个`SoundRecordView`中,我们需要绘制一个可随录音时间增长而变化的圆环...

    详解Android开发录音和播放音频的步骤(动态获取权限)

    详解Android开发录音和播放音频的步骤(动态获取权限) Android 开发录音和播放音频是Android开发中的一个重要环节,涉及到音频处理、权限管理和文件操作等多个方面。以下是详解Android开发录音和播放音频的步骤:...

    实现android录音以及播放功能

    本文将深入探讨这两个API的使用,以及如何在实际项目中整合它们来实现录音和播放功能。 首先,`MediaRecorder`是Android提供的一个核心类,它负责将声音、图像或视频数据记录到媒体文件。在实现录音功能时,我们...

    android 录音与播放录音 带根据音频大小动态效果

    在Android平台上,录音和播放音频是一项常见的功能,尤其在开发音乐、语音聊天或者教育类应用时必不可少。本文将深入探讨如何实现Android录音与播放录音,并介绍如何根据音频大小动态调整播放效果。 首先,我们需要...

    android录音机带录音波形及播放波形

    例如,录音和播放可能在后台线程中进行,而波形绘制则需要在UI线程中进行,以保证用户界面的流畅性。Android提供了Handler、AsyncTask和Thread等多线程模型,开发者可以根据具体需求选择合适的方式。 总的来说,...

    Android录音播放管理工具

    在Android平台上,录音和播放是常见的功能,尤其在开发各种社交和通讯应用时必不可少。本文将详细介绍如何在Android中实现录音播放管理工具,包括语音播放和AMR格式的录音。 首先,我们来看语音播放的部分。在...

    Android下录音及播放录音(AudioRecord)

    在Android平台上,录音和播放音频是一项常见的功能,广泛应用于各种应用程序,如语音备忘录、社交应用和游戏等。本文将深入探讨如何使用Android的`AudioRecord`类进行录音,并利用`MediaPlayer`或`AudioTrack`进行...

    android 模仿微信按住录音语音播放

    对这个文件进行阅读和学习,可以帮助你更深入地理解如何在Android中实现类似微信的录音和播放功能。 总结一下,实现“android 模仿微信按住录音语音播放”主要涉及以下几个步骤和技术: 1. 使用`MediaRecorder`...

    Android实例之录音与回放(播放 MP3)

    通过这个项目,开发者不仅可以学习到如何在Android应用中实现基本的录音和播放功能,还可以加深对Android应用程序架构、文件操作和用户交互的理解。同时,这个实例也可以作为一个基础,扩展到更复杂的音频处理,如...

    Android录音 获取录音文件 录音时间 录音仿微信动画 和播放动画

    本示例主要涉及如何实现录音、获取录音文件、查看录音时长、以及模仿微信的录音和播放动画。以下将详细介绍这些知识点。 1. **Android录音**:Android提供了MediaRecorder类用于录音操作。首先,你需要创建一个...

    Android录音 获取录音文件 录音时间

    在Android 6.0及以上版本,需要动态请求录音和读写外部存储的权限。录音权限(Manifest.permission.RECORD_AUDIO)可以在录音功能使用前请求,而读写外部存储权限(Manifest.permission.WRITE_EXTERNAL_STORAGE)则...

    Android应用源码之录音、播放功能最佳学习项目.zip

    下面我们将详细探讨Android录音和播放功能的关键知识点。 首先,录音功能在Android中主要依赖`MediaRecorder`类。`MediaRecorder`是一个强大的工具,用于将声音或其他媒体数据转换为适合存储或传输的格式。要实现...

Global site tag (gtag.js) - Google Analytics