文档简介
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年投资项目管理师之投资建设项目决策押题练习试题A卷含答案
- 2025年一级注册建筑师之建筑经济、施工与设计业务管理通关试题库(有答案)
- 2026年河南省新乡市单招职业倾向性测试题库及答案1套
- 2026年湖南环境生物职业技术学院单招职业适应性测试题库附答案
- 2026年内蒙古商贸职业学院单招职业技能测试题库新版
- 2026年包头钢铁职业技术学院单招职业倾向性测试必刷测试卷新版
- 2026年泉州纺织服装职业学院单招职业技能考试题库附答案
- 2026年山东省滨州地区单招职业倾向性考试必刷测试卷附答案
- 2026年河南工业和信息化职业学院单招职业倾向性考试题库附答案
- 2022-2023学年河南省南阳市高三上学期秋季期中考试物理试题及答案
- 静脉输血并发症预防处理
- 2022年06月上海外国语大学行政管理人员公开招聘笔试题库含答案解析
- 成人高等教育本科生学士学位英语水平考试大纲(非英语专业第二版)
- 直辖市城投集团固定资产管理制度
- 医疗机构消毒技术规范(2023年版)
- GH/T 1117-2015桂花茶
- 精品课程《人文地理学》完整版
- 公司废弃物清单
- 《幼儿园中班个别化学习活动中科学区域活动材料的投放与思考》讲座课件
- 旅游产业经济MA
评论
0/150
提交评论