Android 记录的(MediaRecorder)而播放(MediaPlayer)

经MediaRecorder和MediaPlayer实现声音记录和回放,代码比较简单,直接附着到代码。

xml文档面对只有四个button不贴。

UI

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3lzbmcwNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" align="middle" width="400" height="800">

代码:

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;
	}

}

版权声明:本文博主原创文章。博客,未经同意,不得转载。

时间: 2024-10-29 19:08:56

Android 记录的(MediaRecorder)而播放(MediaPlayer)的相关文章

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

Android提高21篇之一:MediaPlayer

本文介绍MediaPlayer的使用.MediaPlayer可以播放音频和视频,另外也可以通过VideoView来播放视频,虽然VideoView比MediaPlayer简单易用,但定制性不如用MediaPlayer,要视情况选择了.MediaPlayer播放音频比较简单,但是要播放视频就需要SurfaceView.SurfaceView比普通的自定义View更有绘图上的优势,它支持完全的OpenGL ES库. 先贴出本文程序运行结果的截图,上面是播放/停止音频,可用SeekBar来调进度,下面

Android音频录制MediaRecorder之简易的录音软件实现代码(转)

原文:http://www.jb51.net/article/46182.htm Android音频录制MediaRecorder之简易的录音软件实现代码 这篇文章主要介绍了Android音频录制MediaRecorder之简易的录音软件实现代码,有需要的朋友可以参考一下 使用MediaRecorder的步骤:1.创建MediaRecorder对象2.调用MediRecorder对象的setAudioSource()方法设置声音的来源,一般传入MediaRecorder.MIC3.调用Media

Android开发之MediaRecorder类详解

MediaRecorder类详解 手机一般都有麦克风和摄像头,而Android系统就可以利用这些硬件来录制音视频了. 为了增加对录制音视频的支持,Android系统提供了一个MediaRecorder的类.该类的使用也非常简单,下面让我们来了解一下这个类: 一.类结构: java.lang.Object    ? android.media.MediaRecorder 二.类概述: 用于录制音频和视频的一个类. 三.状态图: 说明: 与MediaPlayer类非常相似MediaRecorder也

【黑马Android】(11)音乐播放器/视频播放器/照相机/常见对话框/notification通知/样式和主题/帧动画/传感器/应用程序反编译与安装

音乐播放器api <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:or

android 逐帧动画的播放与播放结束操作对象

逐帧动画的xml代码: 1 <?xml version="1.0" encoding="utf-8"?> 2 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" 3 android:oneshot="true" > 4 5 <item 6 android:drawable="@drawabl

Android平台中关于音频播放

Android平台中关于音频播放有以下三种方式: 1.SoundPool ---- 适合短促且对反应速度比较高的情况(游戏音效或按键声等) 2.MediaPlayer ---- 适合比较长且时间要求不高的情况 3.AudioTrack ---- 播放解码后的PCM码流 方法一:SoundPool 1)SoundPool简介 SoundPool类是Android用于管理和播放应用程序的音频资源的类.一个SoundPool对象可以看作是一个可以从APK中导入资源或者从文件系统中载入文件的样本集合.它

Android音频: 如何使用AudioTrack播放一个WAV格式文件?

翻译 By Long Luo 原文链接:Android Audio: Play a WAV file on an AudioTrack 译者注: 1. 由于这是技术文章,所以有些词句使用原文,表达更准确. 2. 由于水平有效,有些地方可能翻译的不够准确,如有不当之处,敬请批评指正. 3. 针对某些语句,适当补充了上下文及更适合中文阅读,尽量做到信达雅. 如果你已经成功地了解了关于AudioTrack的一些话题,那么你可能享受它带来的好处,例如低延迟(在STATIC(静态)模式),能够生成流式音频

android 利用 service 实现音乐播放

今天的播放器利用了service,播放音乐在service端,进度条在activity端,因此主要的工作就是activity和service的交互,本文将利用IBinder进行交互,主要是activity可以调用service的函数,可以参考我的这篇博客. 本文关键点:利用利用IBinder实现activity 控制service 实现功能: 1 控制播放进度: activity调用service的函数,对MediaPlayer进行控制.包括启动时的播放和滑动seekbar时,对MediaPla

Android API Demos 系列之 — 播放GIF动画的类Movie

良好的开端,是成功的一半.A good beginning is half done.  -_- 本文目录 ● 一.什么是GIF ● 二.Android系统和应用如何播放GIF 一.[什么是GIF] Gif动态图片,是通过对多图层的图片,按时间进行不同的切换,以达到动画的效果.Gif动态图片的特点是,图片小,易于随时安置调用.比起一张单调的静态图片,Gif格式的动态图片明显更加的生动和有意思. 二.[Android系统和应用如何播放GIF] 在Android系统的原生控件ImageView并不支