SoFunction
Updated on 2025-03-11

Android Camera Basics

1. Overview
This chapter mainly talks about the relevant knowledge points of Android camera Camera, which mainly includes three aspects: the Android boot system camera generation thumbnail image, the Android boot system camera generation original image, and Android custom camera, etc.

2. Android boots the system camera

Core code:

package ;

import ;
import ;
import ;
import ;
import ;
import ;
import ;
import .;
import ;
import ;

import ;

import ;
import ;
import ;
import ;

public class MainActivity extends AppCompatActivity {

  private static int REQ_1 = 1;
  private static int REQ_2 = 2;
  private ImageView image_iv;

  private String mFilePath;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    (savedInstanceState);
    setContentView(.activity_main);

    image_iv = (ImageView) findViewById(.image_iv);

    mFilePath = ().getPath();
    mFilePath = mFilePath +"/" + ()+".jpg";
  }

  public void startCamera1(View view){
    //Implicit Intent Call    Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(it, REQ_1);
  }

  public void startCamera2(View view){
    //Implicit Intent Call    Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    Uri photoUri = (new File(mFilePath));
    (MediaStore.EXTRA_OUTPUT, photoUri);
    startActivityForResult(it, REQ_2);
  }

  public void customCamera(View view){
    Intent it = new Intent(, );
    startActivity(it);
  }


  /**
    *
    * @param requestCode
    * @param resultCode
    * @param data //Thumbnail
    */
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    (requestCode, resultCode, data);
    if(resultCode == RESULT_OK){
      if(requestCode == REQ_1){//Thumbnail        Bundle bundle = ();
        Bitmap bmp = (Bitmap) ("data");
        image_iv.setImageBitmap(bmp);
      }else if(requestCode == REQ_2){//Original picture        FileInputStream fis = null;
        try {
          fis = new FileInputStream(mFilePath);
          Bitmap bitmap = (fis);
          image_iv.setImageBitmap(bitmap);
        } catch (FileNotFoundException e) {
          ();
        }finally {
          try {
            ();
          } catch (IOException e) {
            ();
          }
        }
      }

    }
  }
}

3. Android custom camera

1. Customize the camera steps:

Create a camera
Create a SurfaceView
Associate the camera with the SurfaceView
Adjust the camera display effect
Customize the camera preview interface

2. Core code:
Custom camera

package ;

import ;
import ;
import ;
import ;
import .;
import ;
import ;
import ;

import ;

import ;
import ;
import ;
import ;

/**
 * Description:
 * User: chenzheng
 * Date: 2016/12/27 0027
 * Time: 13:43
 */
public class CustomCameraActivity extends AppCompatActivity implements {

  private SurfaceView mPreview;
  private Camera mCamera;
  private SurfaceHolder mHolder;
  private  mPictureCallback = new () {
    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
      File tempFile = new File("/sdcard/");
      try {
        FileOutputStream fos = new FileOutputStream(tempFile);
        (data);
        ();
        Intent it = new Intent(, );
        ("picPath", ());
        startActivity(it);
        finish();
      } catch (FileNotFoundException e) {
        ();
      } catch (IOException e) {
        ();
      }

    }
  };


  @Override
  public void onCreate(Bundle savedInstanceState) {
    (savedInstanceState);
    setContentView(.activity_custom_camera);

    mPreview = (SurfaceView) ();
    mHolder = ();
    (this);
    //Click on autofocus    (new () {
      @Override
      public void onClick(View v) {
        (null);;

      }
    });
  }

  /**
    * Photograph
    * @param view
    */
  public void capture(View view){
     parameters = ();
    ();
    (800,400);
    (.FOCUS_MODE_AUTO);//Autofocus    (new () {
      @Override
      public void onAutoFocus(boolean success, Camera camera) {
        //Focus accurate photos        if(success){
          (null, null, mPictureCallback);

        }
      }
    });


  }

  /**
    * Get the camera object
    * @return
    */
  private Camera getCamera(){
    mCamera = ();
    return mCamera;

  }

  /**
    * Start previewing the camera contents
    */
  private void setStartPreview(Camera camera, SurfaceHolder holder){
    try {
      (holder);
      (90);//Set the camera preview to 90 degrees perpendicular screen      ();
    } catch (IOException e) {
      ();
    }

  }

  /**
    * Free up camera resources
    */
  private void releaseCamera(){
    if(mCamera!=null){
      (null);
      ();
      ();
      mCamera = null;

    }


  }

  @Override
  protected void onResume() {
    ();
    if (mCamera==null){
      mCamera = getCamera();
      if(mHolder!=null){
        setStartPreview(mCamera, mHolder);
      }
    }
  }

  @Override
  protected void onPause() {
    ();
    releaseCamera();
  }

  @Override
  public void surfaceCreated(SurfaceHolder holder) {
    setStartPreview(mCamera, mHolder);
  }

  @Override
  public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    ();
    setStartPreview(mCamera, mHolder);
  }

  @Override
  public void surfaceDestroyed(SurfaceHolder holder) {
    releaseCamera();
  }
}

Generate image result page

package ;

import ;
import ;
import ;
import ;
import .;
import ;

import ;

import ;
import ;

/**
 * Description:
 * User: chenzheng
 * Date: 2016/12/30 0030
 * Time: 13:27
 */
public class CaptureResultActivity extends AppCompatActivity {

  private String picPath;
  private ImageView result_iv;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    (savedInstanceState);
    setContentView(.activity_capture_result);

    picPath = getIntent().getStringExtra("picPath");
    result_iv = (ImageView) findViewById(.result_iv);
    try {
      FileInputStream fis = new FileInputStream(picPath);
      Bitmap bitmap = (fis);
      Matrix matrix = new Matrix();
      (90);//Rotate the 90-degree matrix      bitmap = (bitmap, 0, 0, (), (), matrix, true);
      result_iv.setImageBitmap(bitmap);
    } catch (FileNotFoundException e) {
      ();
    }

  }
}


4. Download the project source code

http://xiazai./201701/yuanma/AndroidCamera().rar

The above is all the content of this article. I hope it will be helpful to everyone's study and I hope everyone will support me more.