Click here to Skip to main content
15,894,180 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Why it doesn't work ? and display black surface on activity : I want just display camera in my activity Thanks for your help



Java
import android.content.Context;

import android.graphics.SurfaceTexture;
import android.hardware.Camera;
import android.util.AttributeSet;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.ViewGroup;

import java.io.IOException;
import java.util.List;

/**
 * Created by AMMR-USERNAME on 4/6/2015.
 */
public class CameraSurface extends SurfaceView implements SurfaceHolder.Callback{

    SurfaceHolder surfaceHolder;
    Camera camera;
    List<Camera.Size> localSize;

    public CameraSurface(Context context) {
        super(context);
        Init(context);
    }

    public CameraSurface(Context context, AttributeSet attrs) {
        super(context, attrs);
        Init(context);
    }

    public CameraSurface(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        Init(context);
    }

    void Init(Context context)
    {


        surfaceHolder = getHolder();
        surfaceHolder.addCallback(this);
        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        SafeCameraOpen(Camera.CameraInfo.CAMERA_FACING_FRONT);


    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {

    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
        requestLayout();;
        camera.startPreview();
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        if(camera != null)
            camera.stopPreview();
    }



    void StopPreviewAndFreeCamera()
    {
        if(camera != null)
        {
            camera.stopPreview();
            camera.release();
            camera = null;
        }
    }

    boolean SafeCameraOpen(int id)
    {
        boolean qOpened = false;
        try
        {
            ReleaseCameraAndPreview();
            SetCamera(Camera.open(id));
            qOpened = (camera != null);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        return qOpened;
    }

    void ReleaseCameraAndPreview()
    {
        SetCamera(null);
        if(camera != null)
        {
            camera.release();
            camera = null;
        }
    }


    void SetCamera(Camera _camera)
    {
        if(_camera == camera)
            return;
        StopPreviewAndFreeCamera();
        camera = _camera;
        if(camera != null)
        {
            localSize = camera.getParameters().getSupportedPreviewSizes();
            requestLayout();

            try {
                camera.setPreviewDisplay(surfaceHolder);
            } catch (IOException e) {
                e.printStackTrace();
            }

            camera.startPreview();
        }
    }
}



I use this: http://developer.android.com/training/camera/cameradirect.html Thanks.
Posted
Comments
Herman<T>.Instance 11-Apr-15 11:46am    
why we have to guess while you can debug.....

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900