Advertisement
Guest User

Untitled

a guest
Aug 30th, 2013
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. package com.maccer.vidcamtest;
  2.  
  3. import java.io.IOException;
  4. import java.util.List;
  5.  
  6. import android.content.Context;
  7. import android.hardware.Camera;
  8. import android.hardware.Camera.Size;
  9. import android.view.SurfaceHolder;
  10. import android.view.SurfaceView;
  11. import android.view.ViewGroup;
  12.  
  13. abstract class CameraPreview extends ViewGroup implements SurfaceHolder.Callback {
  14.  
  15. Camera mCamera;
  16. SurfaceView mSurfaceView;
  17. SurfaceHolder mHolder;
  18. List<Size> mSupportedPreviewSizes;
  19. Object mPreviewSize;
  20.  
  21. CameraPreview(Context context) {
  22. super(context);
  23.  
  24. mSurfaceView = new SurfaceView(context);
  25. addView(mSurfaceView);
  26.  
  27. // Install a SurfaceHolder.Callback so we get notified when the
  28. // underlying surface is created and destroyed.
  29. mHolder = mSurfaceView.getHolder();
  30. mHolder.addCallback(this);
  31. mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  32. }
  33.  
  34. public void setCamera(Camera camera) {
  35. if (mCamera == camera) { return; }
  36.  
  37. stopPreviewAndFreeCamera();
  38.  
  39. mCamera = camera;
  40.  
  41. if (mCamera != null) {
  42. List<Size> localSizes = mCamera.getParameters().getSupportedPreviewSizes();
  43. mSupportedPreviewSizes = localSizes;
  44. requestLayout();
  45.  
  46. try {
  47. mCamera.setPreviewDisplay(mHolder);
  48. } catch (IOException e) {
  49. e.printStackTrace();
  50. }
  51.  
  52. /*
  53. Important: Call startPreview() to start updating the preview surface. Preview must
  54. be started before you can take a picture.
  55. */
  56. mCamera.startPreview();
  57. }
  58. }
  59.  
  60. public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
  61. // Now that the size is known, set up the camera parameters and begin
  62. // the preview.
  63. Camera.Parameters parameters = mCamera.getParameters();
  64. //parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
  65. parameters.setPreviewSize(w, h);
  66. requestLayout();
  67. mCamera.setParameters(parameters);
  68.  
  69. /*
  70. Important: Call startPreview() to start updating the preview surface. Preview must be
  71. started before you can take a picture.
  72. */
  73. mCamera.startPreview();
  74. }
  75.  
  76. public void surfaceDestroyed(SurfaceHolder holder) {
  77. // Surface will be destroyed when we return, so stop the preview.
  78. if (mCamera != null) {
  79. /*
  80. Call stopPreview() to stop updating the preview surface.
  81. */
  82. mCamera.stopPreview();
  83. }
  84. }
  85.  
  86. /**
  87. * When this function returns, mCamera will be null.
  88. */
  89. private void stopPreviewAndFreeCamera() {
  90.  
  91. if (mCamera != null) {
  92. /*
  93. Call stopPreview() to stop updating the preview surface.
  94. */
  95. mCamera.stopPreview();
  96.  
  97. /*
  98. Important: Call release() to release the camera for use by other applications.
  99. Applications should release the camera immediately in onPause() (and re-open() it in
  100. onResume()).
  101. */
  102. mCamera.release();
  103.  
  104. mCamera = null;
  105. }
  106. }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement