android AudioRecorder简单心得分享
1.如何创建一个有效的AudioRecorder实例 Android各种设备的采样频率不同,输入的声道数也不同,如果采用固定的采样频率和声道数,那么得到的AudioRecorder不一定能够正常初始化。为了正常使用,需要尝试各种不同的参数,得到在此设备上可以用的AudioRecorder实例。代码如下: 代码如下:private void createAudioRecord() { for (int sampleRate : new int[]{44100, 8000, 11025, 16000, 22050, 32000, 47250, 在Android平台上,AudioRecorder是用于实时音频数据捕获的一个核心组件。它允许开发者记录设备麦克风的音频数据,为各种音频应用提供了基础。本文将深入探讨如何创建有效的AudioRecorder实例以及处理可能出现的常见错误。 ### 创建有效的AudioRecorder实例 创建AudioRecorder时,必须考虑到不同设备的硬件差异,特别是采样率(sample rate)和声道配置(channel configuration)。以下是一个尝试不同参数以找到适合当前设备配置的示例代码: ```java private void createAudioRecord() { for (int sampleRate : new int[]{44100, 8000, 11025, 16000, 22050, 32000, 47250, 48000}) { for (short audioFormat : new short[]{AudioFormat.ENCODING_PCM_16BIT, AudioFormat.ENCODING_PCM_8BIT}) { for (short channelConfig : new short[]{AudioFormat.CHANNEL_IN_MONO, AudioFormat.CHANNEL_IN_STEREO}) { try { int recBufSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat); if (recBufSize < 0) { continue; } audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, channelConfig, audioFormat, recBufSize * 2); if (audioRecord.getState() == AudioRecord.STATE_INITIALIZED) { return; } audioRecord.release(); audioRecord = null; } catch (Exception e) { // Do nothing } } } } throw new IllegalStateException("getInstance() failed : no suitable audio configurations on this device."); } ``` 这段代码遍历了多种常见的采样率、编码格式(PCM_16BIT 和 PCM_8BIT)和声道设置(MONO 和 STEREO),并尝试使用`AudioRecord.getMinBufferSize()`获取最小缓冲区大小。如果初始化成功,就返回AudioRecord实例;否则,继续尝试下一个配置。如果所有尝试都失败,抛出异常表明无法找到适合的音频配置。 ### 常见错误及其解决方案 #### 1. 错误ERROR_BAD_VALUE 当在某些设备上尝试开始录音时,可能会遇到`ERROR_BAD_VALUE`错误。这通常发生在`audioRecord.startRecording()`时。一个可能的原因是使用了`AudioManager`但未正确释放。确保在不使用`AudioManager`时调用`release()`方法,以防止资源泄漏。 #### 其他错误处理 对于其他可能出现的错误,开发者可以通过搜索特定的错误代码或日志信息来找到相应的解决方案。Android开发者社区和网上资源通常提供了丰富的错误排查指南。 ### 音频录制与处理 在Android开发中,除了`AudioRecord`,`MediaRecorder`也是一个常用的音频处理工具,它可以更方便地实现音频的录制、编码和存储。同时,`AudioRecord`提供更底层的访问,可以用于实现如暂停录音这样的高级功能。例如,你可以通过暂停和恢复`AudioRecord`的读取操作来控制录音的暂停和恢复。 此外,`AudioRecord`可以用来检测设备是否有音频输入,这对于语音识别或噪声检测等应用非常有用。通过读取音频数据并分析其静音状态,可以判断麦克风是否接收到声音。 一旦录音完成,`AudioRecord`通常会生成原始的PCM数据,需要进行编码(如MP3或AAC)才能存储为常见的音频文件格式。这通常涉及使用第三方库或者`MediaRecorder`来处理。 Android的音频处理涉及到多个层面,包括设备兼容性、错误处理、实时操作以及数据转换。理解并掌握这些知识点是开发高效音频应用的关键。





























- 粉丝: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 网络环境下教育教学的探索与实施.docx
- Ahdqyln计算机专业大学本科方案设计书(网络).doc
- 数据库课程设计(实例-).doc
- 单片机万年历电子钟方案设计书报告含电路图和源程序.doc
- 2010年9月全国计算机等级测验二级笔试试卷C语言程序设计.docx
- workerman-PHP资源
- 计算机软件应用与发展分析.docx
- 麻村砂石加工系统安全渡汛措施.doc
- 论网络环境中的图书馆藏书发展.docx
- 一级分类食品饮料、家居用品、个人用品、IT与电子商务、耐用品.doc
- 工作任务8-网站宣传与推广.ppt
- 基于大学城空间的动态网页课程信息化教学设计.docx
- ATS单片机的数字温度测量及显示系统设计方案.doc
- 贫困地区的教育信息化发展障碍及对策.docx
- 论大数据对高校教育的推动作用.docx
- Freescale单片机电池管理系统设计方案.doc



评论0