您的位置:首页 > 移动开发 > Android开发

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

最后,提供源代码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: