关闭Android CameraDevice很慢,会挂起应用程序
我正在编写一个使用摄像头的Android应用程序 我采用了谷歌提供的示例代码。然而,我注意到调用的关闭Android CameraDevice很慢,会挂起应用程序,android,android-camera2,Android,Android Camera2,我正在编写一个使用摄像头的Android应用程序 我采用了谷歌提供的示例代码。然而,我注意到调用的close()方法花费的时间太长(在我的三星Galaxy S8上几乎是一秒钟) 此方法是从onPause()调用的,因此当摄影机片段关闭时,应用程序会挂起一段时间 @Override public void onPause() { closeCamera(); stopBackgroundThread(); super.onPause(); } private void c
close()
方法花费的时间太长(在我的三星Galaxy S8上几乎是一秒钟)
此方法是从onPause()
调用的,因此当摄影机片段关闭时,应用程序会挂起一段时间
@Override
public void onPause() {
closeCamera();
stopBackgroundThread();
super.onPause();
}
private void closeCamera() {
try {
mCameraOpenCloseLock.acquire();
if (null != mCaptureSession) {
mCaptureSession.close();
mCaptureSession = null;
}
if (null != mCameraDevice) {
mCameraDevice.close(); // This call takes 1 second!
mCameraDevice = null;
}
if (null != mImageReader) {
mImageReader.close();
mImageReader = null;
}
} catch (InterruptedException e) {
throw new RuntimeException("Interrupted while trying to lock camera closing.", e);
} finally {
mCameraOpenCloseLock.release();
}
}
调用closeCamera()
方法时,如何避免应用程序变得无响应
我试图从UI线程以外的另一个线程调用它,但在某些情况下应用程序会崩溃。当我的设备(mi a1-oreo)使用补丁启动时,我遇到了这个问题 如果您的设备也有补丁引导,请尝试使用库存引导闪存。这对我很有帮助。请参见