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可能会遇到各种问题,比如说只展开一个组,关闭其 ...
随机推荐
- 认识input输入框的placeholder属性
我们来认识下input输入框的placeholder属性. placeholder 属性提供可描述输入字段预期值的提示信息.(placeholder 属性适用于以下的 <input> 类型 ...
- c# 在cmd中用 7z解压缩文件
var exePath = @"C:\Program Files\7-Zip\7z.exe"; var path = @"I:\work\MusicCatcher2\Wi ...
- therefore/so/hence/then/accordingly/Thus
这几个词的区别大致可从以下几方面去看:1.therefore adv.因此, 所以=for that reason=consequently常用于连接两个并列分句,其前加“and”或分号“:”.He ...
- android4.0下载问题
近期在下载android4.0的代码,下列操作 下载Repo $ mkdir ~/bin $ PATH=~/bin:$PATH $ curl https://dl-ssl.google.com/dl/ ...
- 【ASP.NET】判断访问网站的客户端是PC还是手机
原文:[ASP.NET]判断访问网站的客户端是PC还是手机 主要就是通过客户端传递的User-agent来判断访问网站的客户端是PC还是手机,.NET中就是Request.ServerVariable ...
- Python网络01 原始Python服务器
原文:Python网络01 原始Python服务器 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 之前我的Python教程中有人 ...
- Swift 学习Using Swift mix and match, network: 写rss读者
有使用第三方库.因此,需要使用mix and match财产. 请指出错误,谢谢! rss 阅读器,非常easy的代码.仅仅是为了学习swift语言而写. 1、BaseViewController.s ...
- SQLite外键
数据库工具:SQLite Manager(V0.7.7) SQLite版本号:V3.6.19+ SQLite Manager 默认是不开启外键的. 那么怎样,使用它创建一个带有外键的表呢? 一.开启外 ...
- NSIS:在线下载并安装程序
原文 NSIS:在线下载并安装程序 看到有同学留言说需要这方面的代码,所以贴出以下代码供参考(非完整脚本).需要用NSISdl插件. Section -.NET Framework NSISdl ...
- 爬虫(heritrix框架)
Heritrix 下载 目前 Heritrix 的最新版本是 1.14.4(2010-5-10 发布),您可以从 SourceForge(http://sourceforge.net/projects ...