/magnify/src/com/google/marvin/magnify/CaptureActivity.java

http://eyes-free.googlecode.com/ · Java · 97 lines · 77 code · 20 blank · 0 comment · 4 complexity · c3ed291efe9a0290dbd1698a32749eac MD5 · raw file

  1. package com.google.marvin.magnify;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.graphics.Bitmap;
  5. import android.graphics.BitmapFactory;
  6. import android.hardware.Camera;
  7. import android.os.Bundle;
  8. import android.util.Log;
  9. import android.view.SurfaceHolder;
  10. import android.view.SurfaceView;
  11. import android.view.View;
  12. import java.io.IOException;
  13. public class CaptureActivity extends Activity implements SurfaceHolder.Callback,
  14. Camera.PictureCallback, Camera.AutoFocusCallback, View.OnClickListener {
  15. private static final String TAG = "CaptureActivity";
  16. private SurfaceHolder mHolder;
  17. private SurfaceView mPreview;
  18. private Camera mCamera;
  19. protected static Bitmap mBitmap;
  20. int[] mImage;
  21. int mWidth;
  22. int mHeight;
  23. @Override
  24. public void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. Log.i(TAG, "Started " + TAG);
  27. setContentView(R.layout.main);
  28. mPreview = (SurfaceView) findViewById(R.id.preview);
  29. mPreview.setOnClickListener(this);
  30. mHolder = mPreview.getHolder();
  31. mHolder.addCallback(this);
  32. mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  33. }
  34. @Override
  35. public void surfaceCreated(SurfaceHolder holder) {
  36. try {
  37. mCamera = Camera.open();
  38. mCamera.setPreviewDisplay(holder);
  39. } catch (IOException e) {
  40. Log.e(TAG, e.toString());
  41. }
  42. }
  43. @Override
  44. public void surfaceDestroyed(SurfaceHolder holder) {
  45. mCamera.stopPreview();
  46. mCamera.release();
  47. mCamera = null;
  48. }
  49. @Override
  50. public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
  51. mHolder.setFixedSize(w, h);
  52. Camera.Parameters parameters = mCamera.getParameters();
  53. parameters.setPreviewSize(w, h);
  54. parameters.setPictureSize(2048, 1536);
  55. mCamera.setParameters(parameters);
  56. mCamera.startPreview();
  57. }
  58. @Override
  59. public void onClick(View v) {
  60. if (v == mPreview) {
  61. mCamera.autoFocus(this);
  62. }
  63. }
  64. @Override
  65. public void onPictureTaken(byte[] data, Camera camera) {
  66. if (mBitmap != null) {
  67. mBitmap.recycle();
  68. }
  69. mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
  70. Intent intent = new Intent(this, ZoomActivity.class);
  71. startActivity(intent);
  72. }
  73. @Override
  74. public void onAutoFocus(boolean success, Camera camera) {
  75. mCamera.takePicture(null, null, this);
  76. }
  77. }