



文档简介
Android的多媒体框架包括了对各种通用音频格式进行采集和编码的支持,因此你能够容易的把音频集成到你的应用程序中。如果设备硬件支持,你还能够使用MediaRecorder API来记录音频。本文向你展示如何编写从设备的麦克中采集音频、保存并播放它的应用程序。注意:Android模拟器没有采集音频的能力,但是实际的设备可能提供这种能力。执行音频采集从设备上采集音频比音视频播放要复杂一些,但依然相当简单:1. 创建一个新的android.media.MediaRecorder类的实例;2. 使用MediaRecorder.setAudioSource()方法设置音频源。你可能还想使用MediaRecorder.AudioSource.MIC;3. 使用MediaRecorder.setOutputFormat()方法设置输出文件格式;4. 使用MediaRecorder.setOutputFile()方法设置输出文件名;5. 使用MediaRecorder.setAudioEncoder()方法设置音频编码;6. 调用MediaRecorder实例上的MediaRecorder.prepare()方法;7. 调用MediaRecorder.start()方法启动音频采集;8. 调用MediaRecorder.stop()方法终止音频采集;9. 使用完MediaRecorder实例后,调用它的MediaRecorder.release()方法。要始终调用这个方法来立即释放资源。示例:录音和播放录音这个例子的类演示了如何建立、启动和终止音频采集,并且播放录音文件。/* * The application needs to have the permission to write to external storage * if the output file is written to the external storage, and also the * permission to record audio. These permissions must be set in the * applications AndroidManifest.xml file, with something like: * * * * */package com.android.audiorecordtest;import android.app.Activity;import android.widget.LinearLayout;import android.os.Bundle;import android.os.Environment;import android.view.ViewGroup;import android.widget.Button;import android.view.View;import android.view.View.OnClickListener;import android.content.Context;import android.util.Log;import android.media.MediaRecorder;import android.media.MediaPlayer;import java.io.IOException;public class AudioRecordTest extends Activity private static final String LOG_TAG = AudioRecordTest; private static String mFileName = null; private RecordButton mRecordButton = null; private MediaRecorder mRecorder = null; private PlayButton mPlayButton = null; private MediaPlayer mPlayer = null; private void onRecord(boolean start) if (start) startRecording(); else stopRecording(); private void onPlay(boolean start) if (start) startPlaying(); else stopPlaying(); private void startPlaying() mPlayer = new MediaPlayer(); try mPlayer.setDataSource(mFileName); mPlayer.prepare(); mPlayer.start(); catch (IOException e) Log.e(LOG_TAG, prepare() failed); private void stopPlaying() mPlayer.release(); mPlayer = null; private void startRecording() mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mRecorder.setOutputFile(mFileName); mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); try mRecorder.prepare(); catch (IOException e) Log.e(LOG_TAG, prepare() failed); mRecorder.start(); private void stopRecording() mRecorder.stop(); mRecorder.release(); mRecorder = null; class RecordButton extends Button boolean mStartRecording = true; OnClickListener clicker = new OnClickListener() public void onClick(View v) onRecord(mStartRecording); if (mStartRecording) setText(Stop recording); else setText(Start recording); mStartRecording = !mStartRecording; ; public RecordButton(Context ctx) super(ctx); setText(Start recording); setOnClickListener(clicker); class PlayButton extends Button boolean mStartPlaying = true; OnClickListener clicker = new OnClickListener() public void onClick(View v) onPlay(mStartPlaying); if (mStartPlaying) setText(Stop playing); else setText(Start playing); mStartPlaying = !mStartPlaying; ; public PlayButton(Context ctx) super(ctx); setText(Start playing); setOnClickListener(clicker); public AudioRecordTest() mFileName = Environment.getExternalStorageDirectory().getAbsolutePath(); mFileName += /audiorecordtest.3gp; Override public void onCreate(Bundle icicle) super.onCreate(icicle); LinearLayout ll = new LinearLayout(this); mRecordButton = new RecordButton(this); ll.addView(mRecordButton, new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 0); mPlayButton = new PlayButton(this); ll.addView(mPlayButton, new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025如何撰写借调合同范本
- 传染病的社区预防与管理
- 宫外孕护理要点
- 中班课间及游戏安全管理规范
- 预防传染病毒
- 支架病人护理查房
- 2025年药事管理学试题
- 口腔癌患者口腔护理规范
- 帕金森的生活护理
- 新质生产力安全生产
- 2024年浙江省中考社会试卷真题(含标准答案及评分标准)
- MOOC 儿科学-四川大学 中国大学慕课答案
- 10kV供配电系统电气设备改造 投标方案(技术方案)
- 《义务教育道德与法治课程标准(2022年版)》
- 医院检验科实验室生物安全管理手册
- 七人学生小品《如此课堂》剧本台词手稿
- 110kV升压站土建监理实施细则
- GB 25595-2018 食品安全国家标准 乳糖(高清版)
- 部编版七年级语文下册文言文专项练习
- 供应商社会准则符合性自审问卷
- 医院禁止胎儿性别鉴定的承诺书和责任书
评论
0/150
提交评论