Чтобы заставить его работать, мне нужно было разблокировать камеру только в методе surfaceDestroyed()
, в деятельности которого реализуется SurfaceHolder.Callback
.
@Override public void surfaceDestroyed(SurfaceHolder holder){
camera.release();
hasSurface = false;
}
Поскольку в некоторых устройствах освобождение аппаратных ресурсов является медленным процессом, который может повлиять на немедленную обработку.Отпустите камеру в surfaceDestroyed()
, чтобы предварительный просмотр поверхности был остановлен / уничтожен, а затем мы можем освободить камеру.