Camera API Tutorial
Introduction
The Camera API in Android allows you to capture pictures and videos in your application. This tutorial will guide you through the process of integrating Camera API in your Android application, from setting up the environment to capturing images.
Setting Up Your Project
To use the Camera API, you need to set up a new Android project. Follow these steps:
Step 1: Create a New Project
Open Android Studio and create a new project. Choose an appropriate name and package for your project.
Step 2: Add Camera Permissions
Open the AndroidManifest.xml
file and add the following permissions:
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Using Camera Intent
One of the simplest ways to integrate camera functionality is by using an Intent to open the camera application. Here's how you can do it:
Step 1: Create a Button to Open Camera
In your layout file (e.g., activity_main.xml
), add a Button:
<Button android:id="@+id/btn_open_camera" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Open Camera" />
Step 2: Handle Button Click
In your Activity file (e.g., MainActivity.java
), handle the button click to open the camera using an Intent:
Button btnOpenCamera = findViewById(R.id.btn_open_camera); btnOpenCamera.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, REQUEST_IMAGE_CAPTURE); } });
Step 3: Handle the Result
Override the onActivityResult
method to handle the captured image:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { Bundle extras = data.getExtras(); Bitmap imageBitmap = (Bitmap) extras.get("data"); // Do something with the imageBitmap } }
Using Camera2 API
The Camera2 API provides more advanced camera functionalities. Here's a basic example of how to use Camera2 API:
Step 1: Add Dependencies
Add the Camera2 API dependency to your build.gradle
file:
implementation "androidx.camera:camera-camera2:1.0.0" implementation "androidx.camera:camera-lifecycle:1.0.0" implementation "androidx.camera:camera-view:1.0.0-alpha19"
Step 2: Initialize Camera
Initialize the Camera2 API in your Activity:
private void startCamera() { ListenableFuture<ProcessCameraProvider> cameraProviderFuture = ProcessCameraProvider.getInstance(this); cameraProviderFuture.addListener(() -> { try { ProcessCameraProvider cameraProvider = cameraProviderFuture.get(); bindPreview(cameraProvider); } catch (ExecutionException | InterruptedException e) { // Handle any errors } }, ContextCompat.getMainExecutor(this)); } private void bindPreview(@NonNull ProcessCameraProvider cameraProvider) { Preview preview = new Preview.Builder().build(); CameraSelector cameraSelector = new CameraSelector.Builder() .requireLensFacing(CameraSelector.LENS_FACING_BACK) .build(); preview.setSurfaceProvider(viewFinder.getSurfaceProvider()); Camera camera = cameraProvider.bindToLifecycle((LifecycleOwner)this, cameraSelector, preview); }
Conclusion
This tutorial has provided an overview of how to integrate Camera functionality in Android applications using both the Camera Intent and the Camera2 API. For more advanced features and customizations, refer to the official Android documentation.