简介录音和播放音频实现

本文介绍了Android中MediaRecorder和MediaPlayer的使用,用于录音和播放音频。MediaRecorder的录音流程包括多个步骤,而MediaPlayer的工作流程更为复杂,支持暂停、回放等功能。文章还提到了AudioTrack和AudioRecord,它们通过流操作处理PCM文件,但录音质量可能不高,且涉及降噪处理。此外,还提到在暂停和停止时对MediaPlayer对象的正确管理。
摘要由CSDN通过智能技术生成

1.MediaRecorder及MediaPlayer:

MediaRecorder类父类是object,位于media包下,是用来录制音频和视频。

下面是录音模型:

看起来很是复杂的样子,当然了解下流程还是有必要的。至少你知道如果想重新初始化的话,可以直接使用 reset()方法,不管在哪个阶段都可以重置,有图有真相是吧!

其他的话,也没啥说的,流程都是规范化了的,改动的空间不大,看api好了。

MediaPlayer也位于media包下,直接继承与object类,可以用来放音频/视频的文件和流。

下面是工作流程:

看起来比录音的流程更复杂了,更深的东西我们暂时就不深究了。相对于录音来说,主要多了暂停,回放的状态,方法中更是添加了循环,进度等东西,更多的就不说了,有兴趣的童鞋可以慢慢研究,可以对下面的实例进行扩展。


首先,我对功能进行了封装。

/**
 * 录音的类,封装了录音/播放的开始停止功能
 */
public class MyRecord {
	/** 录音 */
	private MediaRecorder mRecorder;
	/** 播放 */
	private MediaPlayer mPlayer;

	private String path = "";
	public static MyRecord myRecord = null;
	// 单例
	private MyRecord() {
		mkMyDir();
	};

	public static synchronized MyRecord getInstance() {
		if (myRecord == null) {
			myRecord = new MyRecord();
		}
		return myRecord;
	}

	// 在sdcard上创建文件夹
	public void mkMyDir() {
		File dir = new File(Environment.getExternalStorageDirectory()
				.getAbsolutePath() + "/TestRecord");
		path = dir.getAbsolutePath();
		dir.mkdir();
	}

	// 获取文件夹路径
	public String getPath() {
		return path;
	}

	// 开始录音
	public void startRecord(String filePath) {
		mRecorder = new MediaRecorder();
		mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
		m
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值