Я использую следующий код для освобождения камеры в onPause. Но линия mCamera.release() занимает в среднем 30 секунд, чтобы выпустить камеру на устройстве Nexus 10. Я добавил регистрацию до и после mCamera.release() и обнаружил, что разница во времени между печатью этих журналов составляет 30 секунд.
private void releaseCamera() {
if (mCamera != null) {
previewing = false;
mCamera.setPreviewCallback(null);
if(mPreview != null)
mPreview.getHolder().removeCallback(mPreview);
Log.e("QR","Starting to call mCamera.release()");
mCamera.release();
Log.e("QR","Released Camera");
mCamera = null;
}
}
Я вызываю mCamera.stopPreview() перед вызовом releaseCamera()
Есть ли способ, которым я могу сделать это асинхронно? Потому что от деятельности Camerapreview до следующей активности требуется менее минуты.
Edit1: мы уменьшили размер предварительного просмотра с самого высокого (1080x1920) до среднего диапазона (480x800), и все стало нормально работать. Размер предварительного просмотра имеет какое-либо отношение к выпуску камеры в HAL?