Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.maccer.vidcamtest;
- import java.io.IOException;
- import java.util.List;
- import android.content.Context;
- import android.hardware.Camera;
- import android.hardware.Camera.Size;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- import android.view.ViewGroup;
- abstract class CameraPreview extends ViewGroup implements SurfaceHolder.Callback {
- Camera mCamera;
- SurfaceView mSurfaceView;
- SurfaceHolder mHolder;
- List<Size> mSupportedPreviewSizes;
- Object mPreviewSize;
- CameraPreview(Context context) {
- super(context);
- mSurfaceView = new SurfaceView(context);
- addView(mSurfaceView);
- // Install a SurfaceHolder.Callback so we get notified when the
- // underlying surface is created and destroyed.
- mHolder = mSurfaceView.getHolder();
- mHolder.addCallback(this);
- mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
- }
- public void setCamera(Camera camera) {
- if (mCamera == camera) { return; }
- stopPreviewAndFreeCamera();
- mCamera = camera;
- if (mCamera != null) {
- List<Size> localSizes = mCamera.getParameters().getSupportedPreviewSizes();
- mSupportedPreviewSizes = localSizes;
- requestLayout();
- try {
- mCamera.setPreviewDisplay(mHolder);
- } catch (IOException e) {
- e.printStackTrace();
- }
- /*
- Important: Call startPreview() to start updating the preview surface. Preview must
- be started before you can take a picture.
- */
- mCamera.startPreview();
- }
- }
- public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- // Now that the size is known, set up the camera parameters and begin
- // the preview.
- Camera.Parameters parameters = mCamera.getParameters();
- //parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
- parameters.setPreviewSize(w, h);
- requestLayout();
- mCamera.setParameters(parameters);
- /*
- Important: Call startPreview() to start updating the preview surface. Preview must be
- started before you can take a picture.
- */
- mCamera.startPreview();
- }
- public void surfaceDestroyed(SurfaceHolder holder) {
- // Surface will be destroyed when we return, so stop the preview.
- if (mCamera != null) {
- /*
- Call stopPreview() to stop updating the preview surface.
- */
- mCamera.stopPreview();
- }
- }
- /**
- * When this function returns, mCamera will be null.
- */
- private void stopPreviewAndFreeCamera() {
- if (mCamera != null) {
- /*
- Call stopPreview() to stop updating the preview surface.
- */
- mCamera.stopPreview();
- /*
- Important: Call release() to release the camera for use by other applications.
- Applications should release the camera immediately in onPause() (and re-open() it in
- onResume()).
- */
- mCamera.release();
- mCamera = null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement