Saturday, 17 March 2012

Android camera

 To open a camera with out any error in surface view.


package com.camera.preview.
import java.io.IOException;
import java.util.Vector;

import android.content.Context;
import android.hardware.Camera;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class CameraPreview extends SurfaceView implements
        SurfaceHolder.Callback {

    public static final String TAG = "CameraPreview";

    private SurfaceHolder mHolder;
    private Camera mCamera;
    boolean previewing = false;
    private boolean isPreviewRunning = false;

    Vector<NearByLocation> flag = new Vector<NearByLocation>();

    CameraPreview(Context context) {
        super(context);
        mHolder = getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        setFocusable(true);
        setWillNotDraw(false);
    }

    public void surfaceCreated(SurfaceHolder holder) {
        try {
            System.out.println("surfaceCreated");
            if((!isPreviewRunning) && mCamera == null )
            mCamera = Camera.open();
            mCamera.setPreviewDisplay(holder);
            isPreviewRunning=true;
        } catch (IOException e) {
            System.out.println(e);
            mCamera.release();
            isPreviewRunning=false;
            mCamera = null;
            e.printStackTrace();
        }
    }

    public void surfaceDestroyed(SurfaceHolder holder) {

        if (isPreviewRunning && mCamera != null) {
            if (mCamera != null) {
                mCamera.stopPreview();
                mCamera.release();
                mCamera = null;
            }
            isPreviewRunning = false;
        }
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {

        if (isPreviewRunning) {
            mCamera.stopPreview();
        }
        try {
            mCamera.startPreview();
        } catch (Exception e) {
            Log.e(TAG, e.getMessage());
        }
        isPreviewRunning = true;
        mCamera.startPreview();
    }

}


No comments:

Post a Comment