Android 记录的(MediaRecorder)而播放(MediaPlayer)
经MediaRecorder和MediaPlayer实现声音记录和回放,代码比较简单,直接附着到代码。
xml文档面对只有四个button不贴。
UI
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3lzbmcwNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" 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;
} }
版权声明:本文博主原创文章。博客,未经同意,不得转载。
Android 记录的(MediaRecorder)而播放(MediaPlayer)的更多相关文章
- android 随手记 videoview循环播放网络视频 和mediaplayer+sufaceview播放网络视频
1:videoview循环播放视频 1>xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res ...
- 【我的Android进阶之旅】解决MediaPlayer播放音乐的时候报错: Should have subtitle controller already set
一错误描述 二错误解决 解决方法一 解决方法二 一.错误描述 刚用MediaPlayer播放Music的时候,看到Log打印台总是会打印一条错误日志,MediaPlayer: Should have ...
- Android MediaRecorder录制播放音频
1.请求录制音频权限 <user-permission android:name="android.permission.RECORD_AUDIO"/> RECORD_ ...
- Android音频录制MediaRecorder之简易的录音软件实现代码(转)
原文:http://www.jb51.net/article/46182.htm Android音频录制MediaRecorder之简易的录音软件实现代码 这篇文章主要介绍了Android音频录制Me ...
- Android应用开发--MP3音乐播放器代码实现(一)
需求1:将内存卡中的MP3音乐读取出来并显示到列表当中 1. 从数据库中查询所有音乐数据,保存到List集合当中,List当中存放的是Mp3Info对象 2. 迭代List集合,把每一个Mp3 ...
- android学习日记11--音频播放类
一.android 音频播放类 MediaPlayer和SoundPool都可以用来播放音频.区别是MediaPlayer占用资源高,延迟时间高,播放长音乐的,并且不能同时播放多个音乐,而SoundP ...
- Android记录4--自定义ToggleButton+用SharedPreferences保存用户配置
Android记录4--自定义ToggleButton+用SharedPreferences保存用户配置 2013年8月14日Android记录 很多应用都会有用户设置,用户的一些偏好可以由用户来决定 ...
- Android App调用MediaRecorder实现录音功能的实例【转】
本文转载自:http://www.jb51.net/article/82281.htm 这篇文章主要介绍了Android App调用MediaRecorder实现录音功能的实例,MediaRecord ...
- android 通过帧动画方式播放Gif动画
注意:经过本人测试,这个方法很耗内存, 图片一多就崩了.慎用 <1>用工具(photoshop或者FireWorks)将GIF动画图片分解成多个GIF静态图片,然后保存在res\drawa ...
- Android记录11-控制ExpandableListView展开和关闭
Android记录11-控制ExpandableListView展开和关闭 2013年12月5日 工作记录 我们在使用ExpandableListView可能会遇到各种问题,比如说只展开一个组,关闭其 ...
随机推荐
- POJ3467(预处理)
Cross Counting Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 1331 Accepted: 375 De ...
- div+js 弹出层
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...
- 探索static——不需要能够使用该类实例?
在一般情况下.需要使用一个上课时间.你必须先实例化类,它调用的能力.在编程过程中发现.有些类不能直接实例来使用,利用其场.法等等. 这时候.靠的就是static作用.static英文意思为" ...
- 利用Ring Buffer在SQL Server 2008中进行连接故障排除
原文:利用Ring Buffer在SQL Server 2008中进行连接故障排除 出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/11/21/ring ...
- 用python做自己主动化測试--对server端的自己主动化測试(3)-很多其它http client实例
上一篇中仅仅是实现了一个非常easy的http client功能,request还提供了keep alive, SSL, 多文件上传,cookie 管理功能,http requests头管理等丰富的功 ...
- 创建您自己的Maven模板
相关链接: http://maven.apache.org/archetype/maven-archetype-plugin/ 一.事实上Maven的模板也是一个maven项目,所以我们首先要生成一个 ...
- 基于Hadoop2.2.0版本号分布式云盘的设计与实现
基于Hadoop2.2.0版本号分布式云盘的设计与实现 一.前言 在学习了hadoop2.2一个月以来,我重点是在学习hadoop2.2的HDFS.即是hadoop的分布式系统,看了非常久的源代码看的 ...
- 【原】谈谈promise
最近在看<你不知道的javascript中卷>,发觉作者花了基本一半的篇幅去讲异步和promise,觉得有必要总结一下. 其实本文的目的是想手写一个Promise的,无奈总结着总结着发觉篇 ...
- Cocos观察者设计模式和通报机制
观察员(Observer)模式也称为公告/订阅(Publish/Subscribe)模式.这是 MVC( 模型-视图-控制器)模型的重要组成部分.天气一直讨论的英国最喜欢的话题,近期天气变化几年已成为 ...
- OGG "Loading data from file to Replicat"table静态数据同步配置过程
OGG "Loading data from file to Replicat"table静态数据同步配置过程 一个.mgr过程 GGSCI (lei1) 3> view p ...