Example usage for org.opencv.android JavaCameraView.JavaCameraSizeAccessor JavaCameraView.JavaCameraSizeAccessor

List of usage examples for org.opencv.android JavaCameraView.JavaCameraSizeAccessor JavaCameraView.JavaCameraSizeAccessor

Introduction

In this page you can find the example usage for org.opencv.android JavaCameraView.JavaCameraSizeAccessor JavaCameraView.JavaCameraSizeAccessor.

Prototype

JavaCameraView.JavaCameraSizeAccessor

Source Link

Usage

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;
}