我像这样创建应用程序:
开始录制的代码
public static void startRecording() {
if (recordTime == 0) {
if (null == mr) {
mr = new MediaRecorder();
}
path = new File(Environment.getExternalStorageDirectory(),
"myRecording.3gp");
mr.reset();获取Ϊ麦克风音乐音量
mr.setAudioSource(MediaRecorder.AudioSource.MIC);
mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mr.setOutputFile(path.getAbsolutePath());
mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mr.prepare();
} catch (IOException e) {
}
mr.start();
Record.recordTime = 1;
}
}结束录制
public static void stopRecording() {
if (mr != null) {
// mr.reset();
mr.stop();
mr.release();
mr = null;
Record.recordTime = 0;
}
}我重复快速呼叫录音,我重复呼叫快速录音并停止录音过程,它会出现ANR现象。谁知道问题出在哪里?
提前感谢!
发布于 2013-10-10 03:03:40
好吧..。这篇文章有点老了,但由于我遇到的是一个非常相似的案例,here上发布的问题的解释对我来说是有意义的。
停止录制时,视频将保存在手机存储器(内置或SD卡)中。由于这是一个繁重的I/O操作,应用程序可能会在一段时间内不响应,从而导致ANR。
我不知道,但是你有没有试过在不同的线程上停止呢?这可能对你有用。
public static void stopRecording() {
if (mr != null) {
new Thread(new Runnable() {
@Override
public void run() {
mr.stop();
mr.release();
mr = null;
Record.recordTime = 0;
}
}).start();
}
}https://stackoverflow.com/questions/14497608
复制相似问题