Android 录音(MediaRecorder)与播放(MediaPlayer)

通过MediaRecorder和MediaPlayer实现声音的录制和播放,代码比较简单,直接贴代码。xml文件里面只有四个按钮就不贴了。

UI

代码:

VoiceActivity.class

package com.zy.ione;

import com.zy.media.UPlayer;
import com.zy.media.URecorder;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class VoiceActivity extends Activity {

	private String path = null;
	private URecorder recorder;
	private UPlayer player;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.setContentView(R.layout.activity_voice);

		path = Environment.getExternalStorageDirectory().getAbsolutePath();
		path += "/ione.pcm";  

		recorder = new URecorder(path);
		player = new UPlayer(path);

		//开始录音
		findViewById(R.id.ione_record_start_btn).setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {	

				Toast.makeText(VoiceActivity.this, "start record", Toast.LENGTH_SHORT).show();

				recorder.start();
			}
		});

		//停止录音
        findViewById(R.id.ione_record_stop_btn).setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				Toast.makeText(VoiceActivity.this, "stop record", Toast.LENGTH_SHORT).show();
				recorder.stop();
			}
		});

       //开始播放
      	findViewById(R.id.ione_play_start_btn).setOnClickListener(new OnClickListener() {

      		@Override
      		public void onClick(View arg0) {	

      			Toast.makeText(VoiceActivity.this, "start play", Toast.LENGTH_SHORT).show();
      			player.start();
      		}
      	});

      	//停止播放
         findViewById(R.id.ione_play_stop_btn).setOnClickListener(new OnClickListener() {

      		@Override
      		public void onClick(View arg0) {
      			Toast.makeText(VoiceActivity.this, "stop play", Toast.LENGTH_SHORT).show();
      			player.stop();
      		}
      	});
	}

}

操作接口

package com.zy.media;

public interface IVoiceManager {

	public boolean start();
	public boolean stop();
}

录音

package com.zy.media;

import java.io.IOException;

import android.media.MediaRecorder;
import android.util.Log;

public class URecorder implements IVoiceManager{

	private final String TAG = URecorder.class.getName();
	private String path;
	private MediaRecorder mRecorder;
	public URecorder(String path){
		this.path = path;
		mRecorder = new MediaRecorder();
	}

	/*
	 * 开始录音
	 * @return boolean
	 */
	@Override
	public boolean start() {
		//设置音源为Micphone
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        //设置封装格式
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mRecorder.setOutputFile(path);
        //设置编码格式
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  

        try {
            mRecorder.prepare();
        } catch (IOException e) {
            Log.e(TAG, "prepare() failed");
        }
        //录音
        mRecorder.start();
		return false;
	}

	/*
	 * 停止录音
	 * @return boolean
	 */
	@Override
	public boolean stop() {
		mRecorder.stop();
        mRecorder.release();
        mRecorder = null;
		return false;
	}

}

播放

package com.zy.media;

import android.media.MediaPlayer;
import android.util.Log;

public class UPlayer implements IVoiceManager {

    private final String TAG = UPlayer.class.getName();
	private String path;

	private MediaPlayer mPlayer;
	public UPlayer(String path){
		this.path = path;
		mPlayer = new MediaPlayer();
	}

	@Override
	public boolean start() {
        try {
			 //设置要播放的文件
			 mPlayer.setDataSource(path);
			 mPlayer.prepare();
			 //播放
			 mPlayer.start();
		 }catch(Exception e){
			 Log.e(TAG, "prepare() failed");
		 }

		return false;
	}

	@Override
	public boolean stop() {
		mPlayer.stop();
		mPlayer.release();
		mPlayer = null;
		return false;
	}

}

Android 录音(MediaRecorder)与播放(MediaPlayer)

时间: 2024-08-25 04:13:29

Android 录音(MediaRecorder)与播放(MediaPlayer)的相关文章

Android录音--AudioRecord、MediaRecorder

Android提供了两个API用于实现录音功能:android.media.AudioRecord.android.media.MediaRecorder. 网上有很多谈论这两个类的资料.现在大致总结下: 1.AudioRecord 主要是实现边录边播(AudioRecord+AudioTrack)以及对音频的实时处理(如会说话的汤姆猫.语音) 优点:语音的实时处理,可以用代码实现各种音频的封装 缺点:输出是PCM语音数据,如果保存成音频文件,是不能够被播放器播放的,所以必须先写代码实现数据编码

Android 使用MediaRecorder录音

package com.example.HyyRecord; import android.app.Activity; import android.content.Intent; import android.media.MediaRecorder; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.view.View; import java.io.F

Android中的音频播放(MediaPlayer和SoundPool)

Android中音频和视频的播放我们最先想到的就是MediaPlayer类了,该类提供了播放.暂停.停止.和重复播放等方法.该类位于android.media包下,详见API文档.其实除了这个类还有一个音乐播放类那就是SoundPool,这两个类各有不同分析一下便于大家理解 MediaPlayer: 此类适合播放较大文件,此类文件应该存储在SD卡上,而不是在资源文件里,还有此类每次只能播放一个音频文件. 此类用法如下: 1.从资源文件中播放 MediaPlayer   player  =   n

Android多媒体-MediaRecorder 录制音视频

不多说,直接上代码,有详细注释 MyAudioRecord.java import java.io.File; import java.io.IOException; import android.app.Activity; import android.content.ContentValues; import android.content.Intent; import android.media.MediaPlayer; import android.media.MediaRecorder

android录音相关

android的麦克风在现在的生活中发挥着很大的作用,打电话,视频聊天,语音识别等等. android sdk的api里提供了很方便的调用方法,下面写一个小的DEMO. 五个按钮:开始录音,停止,播放,删除录音,保存(令存为) recordBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try{ _recordAudioFile=File.createTempFile("

Android录音实现——使用AtudioRecord

最近在做android中录音录屏的功能,以前也是从未接触多媒体这块,然后从不会到一点点的摸索,参考大神们的代码,到现在算是入门了,今天就总结一下android中的录音部分,后面总结录屏. 在android中实现录音共有三种方式: 通过意图捕获音频.这是android中最简单的一种方式,就是通过一个意图利用已有的.提供录制功能的应用程序.android系统中都会再带一个录音程序,我们可以通过意图来调用这个录音程序,从而实现录音功能. MediaRecorder类实现录音.MediaRecorder

Android练习项目 Mp3播放器实现(二)

在经过几天的折腾之后,迎来了Mp3播放器的第二篇博客,这篇文章主要将如何实现播放器的播放,下一首,上一首,顺序播放,循环播放,随机播放,单曲循环等操作. 其实操作的过程中主要是通过参数的传递来实现功能的. 在activity里面互相传参有很多中方法,但对于activity和service进行交互有些方法并不适合,通过对Broadcast和BroadcastReceiver等操作,来控制播放的实现. 我们先设定好广播,然后通过发送信号来进行传递数据. 主要在activity里面动态注册广播,通过传

通过Android录音进行简单音频分析

Android录音有MediaRecorder和AudioRecord两种方式,前者使用方便,可以直接生成录音文件,但是录音格式为aac和amr等等,都经过压缩处理,不方便进行音频分析. 而用AudioRecord可以得到PCM编码的原音频数据,可以用FFT对数据进行处理,简单分析声音的频率. 1.AndroidRecord录音 private static final String FILE_NAME = "MainMicRecord"; private static final i

Android 实现简单音乐播放器(二)

在Android 实现简单音乐播放器(一)中,我介绍了MusicPlayer的页面设计. 现在,我将解析MusicPlayer的功能实现,就讲一些主要的点和有趣的细节,结合MainActivity.java代码进行说明(写出来可能有点碎……一向不太会总结^·^). 一.功能菜单 在MusicPlayer中,我添加了三个菜单: search(搜索手机中的音乐文件,更新播放列表). clear(清除播放列表……这个功能是最初加进去的,后来改进之后,已经没什么实际意义). exit(退出). menu