List of usage examples for org.opencv.android JavaCameraView.JavaCameraSizeAccessor JavaCameraView.JavaCameraSizeAccessor
JavaCameraView.JavaCameraSizeAccessor
From source file:to.augmented.reality.android.aremu.opencv.EmulatorCameraView.java
License:Apache License
private boolean initializeCamera(int width, int height) //----------------------------------------------------- { boolean result = true; synchronized (this) { if (camera != null) try { camera.release();// ww w. ja v a 2s. com } catch (Exception _e) { } camera = null; Camera realCamera = null; int backId = -1, frontId = -1; Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); for (int i = 0; i < Camera.getNumberOfCameras(); i++) { Camera.getCameraInfo(i, cameraInfo); if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) backId = i; else if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) frontId = i; } if (mCameraIndex == CAMERA_ID_ANY) { int id = (backId >= 0) ? backId : (frontId >= 0) ? frontId : -1; if (id >= 0) try { realCamera = Camera.open(id); } catch (Exception e) { realCamera = null; Log.e(TAG, "camera id " + id, e); } if (realCamera == null) { id = (id == backId) ? frontId : backId; try { realCamera = Camera.open(id); } catch (Exception e) { realCamera = null; Log.e(TAG, "camera id " + id, e); } } if (realCamera != null) new ARCamera(context, id, realCamera); else { new ARCamera(context, -1); id = -1; } camera = (ARCamera) ARCamera.open(id); } else { int id = -1; if (mCameraIndex == CAMERA_ID_BACK) { try { realCamera = Camera.open(backId); } catch (Exception e) { realCamera = null; } id = backId; } else if (mCameraIndex == CAMERA_ID_FRONT) { try { realCamera = Camera.open(frontId); } catch (Exception e) { realCamera = null; } id = frontId; } if (realCamera != null) new ARCamera(context, id, realCamera); else new ARCamera(context, id); camera = (ARCamera) ARCamera.open(id); } if (camera == null) return false; try { if ((headerFile != null) && (framesFile != null)) camera.setFiles(headerFile, framesFile); else { Log.w(TAG, "Recording files not set in initializeCamera. Call setRecordingFiles in onCreate."); return true; } Camera.Parameters params = camera.getParameters(); List<Camera.Size> sizes = params.getSupportedPreviewSizes(); if (sizes != null) { Size frameSize = calculateCameraFrameSize(sizes, new JavaCameraView.JavaCameraSizeAccessor(), width, height); params.setPreviewSize((int) frameSize.width, (int) frameSize.height); camera.setParameters(params); params = camera.getParameters(); mFrameWidth = params.getPreviewSize().width; mFrameHeight = params.getPreviewSize().height; if ((getLayoutParams().width == ViewGroup.LayoutParams.MATCH_PARENT) && (getLayoutParams().height == ViewGroup.LayoutParams.MATCH_PARENT)) mScale = Math.min(((float) height) / mFrameHeight, ((float) width) / mFrameWidth); else mScale = 0; if (mFpsMeter != null) mFpsMeter.setResolution(mFrameWidth, mFrameHeight); int bufferSize = camera.getPreviewBufferSize(); buffer = new byte[bufferSize]; camera.addCallbackBuffer(buffer); camera.setPreviewCallbackWithBuffer(this); frameBuffer = new FrameRingBuffer(2, bufferSize); AllocateCache(); // cameraFrames = new AREmuCameraFrame[2]; // cameraFrames[0] = new AREmuCameraFrame(frameChain[0], camera.getFileFormat(), mFrameWidth, mFrameHeight); // cameraFrames[1] = new AREmuCameraFrame(frameChain[1], camera.getFileFormat(), mFrameWidth, mFrameHeight); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { surfaceTexture = new SurfaceTexture(MAGIC_TEXTURE_ID); camera.setPreviewTexture(surfaceTexture); } else camera.setPreviewDisplay(null); camera.startPreview(); } else result = false; } catch (Exception e) { result = false; Log.e(TAG, "", e); } } return result; }