android开发(18) 调用手机的麦克风录音,并播放。
2015-08-14 14:50
686 查看
收到需求说要做语音通信,我去,要做个微信么,当然,我们做不到那个程度,先捣鼓下怎么录音吧。那么尝试做个示例。
看看录音的代码:
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(newFileName());
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
mRecorder.start();
代码的大概过程有:
1。设定声音来源。这里指定为 麦克风
2。指定输出格式 。
3。指定输出文件。
4. 指定音频编码格式。
5. 预备。
6. 启动录音。
配合启动录音的过程,就会有终止录音的过程,代码:
mRecorder.stop();
mRecorder.release();
mRecorder = null;
结束,并释放资源。
---------
录音完成后,总得要听听吧。我们看播放的过程:
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(fileName);
mPlayer.prepare();
mPlayer.start();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
这个,太简单了把。指定个数据源(要播放的文件)就可以了。
那么如何终止播放呢?
mPlayer.release();
mPlayer = null;
好吧。我承认。这一切都太简单了。android 提供的十分强大的封装。
------
贴出我封装好的 录音 和播放的 类。
class SoundRecorder {
MediaRecorder mRecorder;
boolean isRecording;
public void startRecording() {
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(newFileName());
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
mRecorder.start();
}
public void stopRecording() {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
}
public String newFileName() {
String mFileName = Environment.getExternalStorageDirectory()
.getAbsolutePath();
String s = new SimpleDateFormat("yyyy-MM-dd hhmmss")
.format(new Date());
return mFileName += "/rcd_" + s + ".3gp";
}
}
public class SoundPlayer {
MediaPlayer mPlayer;
public void startPlaying(String fileName) {
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(fileName);
mPlayer.prepare();
mPlayer.start();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
}
public void stopPlaying() {
mPlayer.release();
mPlayer = null;
}
}
最后,提供源代码下载。
看看录音的代码:
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(newFileName());
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
mRecorder.start();
代码的大概过程有:
1。设定声音来源。这里指定为 麦克风
2。指定输出格式 。
3。指定输出文件。
4. 指定音频编码格式。
5. 预备。
6. 启动录音。
配合启动录音的过程,就会有终止录音的过程,代码:
mRecorder.stop();
mRecorder.release();
mRecorder = null;
结束,并释放资源。
---------
录音完成后,总得要听听吧。我们看播放的过程:
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(fileName);
mPlayer.prepare();
mPlayer.start();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
这个,太简单了把。指定个数据源(要播放的文件)就可以了。
那么如何终止播放呢?
mPlayer.release();
mPlayer = null;
好吧。我承认。这一切都太简单了。android 提供的十分强大的封装。
------
贴出我封装好的 录音 和播放的 类。
class SoundRecorder {
MediaRecorder mRecorder;
boolean isRecording;
public void startRecording() {
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(newFileName());
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
mRecorder.start();
}
public void stopRecording() {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
}
public String newFileName() {
String mFileName = Environment.getExternalStorageDirectory()
.getAbsolutePath();
String s = new SimpleDateFormat("yyyy-MM-dd hhmmss")
.format(new Date());
return mFileName += "/rcd_" + s + ".3gp";
}
}
public class SoundPlayer {
MediaPlayer mPlayer;
public void startPlaying(String fileName) {
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(fileName);
mPlayer.prepare();
mPlayer.start();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
}
public void stopPlaying() {
mPlayer.release();
mPlayer = null;
}
}
最后,提供源代码下载。
相关文章推荐
- android开发(19) 调用手机的摄像头录像,并播放。
- android开发(20) 使用adb建立pc和android设备之间的连接。usb连接方式。
- android开发(21)蜂鸣提示音和震动提示的实现。
- android开发(22)使用正则表达式 。从一个字符串中找出数字,多次匹配。
- android开发(22)使用正则表达式 。从一个字符串中找出数字,多次匹配。
- Android的SQLite中如何判断一个表是否存在
- arcgis for android 学习 - (5) 在地图指定位置添加“标记“,并尝试选中它
- arcgis for android 学习 - (6) 属性查询。检索图层上某个要素,并高亮显示它。
- arcgis for android 学习 - (7) 在真机上 模拟GPS
- android开发(13) 尝试在流布局中移动控件
- android开发(14) 可以横向滚动的ListView(固定列头)
- android开发(15) 调用摄像头拍照,保存在照片到数据库。
- android LayoutInflater
- android定位的实现
- android开发之GPS定位详解
- android 三种定位方式
- android 定位的4种方式介绍
- Android软件换皮肤问题
- Android Animations动画使用详解
- Android手机SD卡创建文件并写入内容