gpt4 book ai didi

android - 调用 MediaRecorder.stop() 时卡住应用程序

转载 作者:行者123 更新时间:2023-12-02 17:16:38 27 4
gpt4 key购买 nike

我有 SurfaceView Activity ,我想在此 Activity 中开始和停止视频录制,但如果我转到其他 Activity ,我想继续录制视频。现在我开始录制视频(在 Activity 1 中)并转到其他 Activity ,当我返回(到 Activity 1)并想要停止录制视频时,我的应用程序在调用时卡住 recorder.stop(); 如何我可以修好它?

初始化SurfaceView和SurfaceHolder:

SurfaceView cameraView = (SurfaceView) findViewById(R.id.surfaceView);
SurfaceHolder holder = cameraView.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

开始录制视频:

 protected void startRecordVideo() {
if (cam == null) {
cam = Camera.open();
try {
cam.setPreviewDisplay(holder);
} catch (IOException e) {
e.printStackTrace();
}
}
recording = true;
recorder = new MediaRecorder();
recorder.setCamera(cam);
initRecorder();
prepareRecorder();
try {
cam.unlock();
} catch (RuntimeException e) {
e.printStackTrace();
}
recorder.start();
}

停止录制视频(这是应用程序卡住):

 protected void stopRecordVideo() { //cam - Camera, recorder - MediaRecorder
mc.IS_RECORD = false;
recording = false;
try {
cam.lock();
recorder.stop(); //app freezes in this line (i used Log)
recorder = null;
cam.reconnect();
cam.release();
cam = null;


} catch (IllegalStateException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

附注我不使用 camera.startPreview();camera.stopPreview();

最佳答案

尝试将 stopRecordVideo 包装在 Thread 内,这样它就不会阻塞主 (UI) Thread

如果它不起作用,请看看这个问题:

Android Media Recording using threads

看来你必须做一点“黑客”

关于android - 调用 MediaRecorder.stop() 时卡住应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26864492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com