android | Cómo abrir la cámara a través de Intent y mostrar la imagen capturada

Requisitos previos: 

El propósito de este artículo es mostrar cómo abrir la cámara desde dentro de una aplicación y hacer clic en la imagen y luego mostrar esta imagen dentro de la misma aplicación. En este artículo se ha desarrollado una aplicación para Android para lograr esto. La apertura de la cámara desde el interior de nuestra aplicación se logra con la ayuda de la clase ACTION_IMAGE_CAPTURE Intent of MediaStore .

Por ejemplo:

Esta imagen muestra la imagen en la que la cámara hizo clic y se configuró en Imageview. Cuando se abre la aplicación, muestra el botón «Cámara» para abrir la cámara. Cuando se presiona, la clase MediaStore inicia la intención ACTION_IMAGE_CAPTURE. Cuando se captura la imagen, se muestra en la vista de imagen.

Cómo crear una aplicación para abrir la cámara a través de Intent y mostrar la imagen capturada

Paso 1: en primer lugar, cree una nueva aplicación de Android. Esto creará un archivo XML «actividad_principal.xml» y un archivo Java «MainActivity.Java». Consulte los requisitos previos para obtener más información sobre este paso.

Paso 2: abra el archivo «actividad_principal.xml» y agregue los siguientes widgets en un diseño relativo: 

  • Un botón para abrir la cámara
  • Un ImageView para mostrar la imagen capturada

Sintaxis:

android:id="@+id/id_name"
  • Botón de la cámara: camera_button
  • Vista de imagen: click_image

Paso 3: ahora, después de la interfaz de usuario, este paso creará el backend de la aplicación. Para esto, abra el archivo “MainActivity.java” e instancia los componentes creados en el archivo XML (Botón de cámara, ImageView) usando el método findViewById(). Este método vincula el objeto creado a los componentes de la interfaz de usuario con la ayuda de la ID asignada.

Sintaxis general: 

objeto ComponentType = (ComponentType)findViewById(R.id.IdOfTheComponent);

Sintaxis de los componentes utilizados: 

Botón camera_open_id= (Botón)findViewById(R.id.camera_button); 
ImageView click_image_id = (ImageView)findViewById(R.id.click_image ); 
 

Paso 4: este paso implica configurar las operaciones en el botón de la cámara e ImageView. Estas operaciones son las siguientes: 

  • Primero defina la variable pic_id que es la identificación de solicitud de la imagen en la que se hizo clic. Esto se hace de la siguiente manera: 

privado estático final int pic_id = 123

  •  Agregue el oyente en el botón Cámara. Esto se usará para abrir la cámara cuando el usuario haga clic en el botón. Esto se hace de la siguiente manera: 

camera_open_id.setOnClickListener(nueva Vista.OnClickListener() {}

  •  Ahora cree la intención ACTION_IMAGE_CAPTURE proporcionada por MediaStore. Este Intent ayudará a abrir la cámara para capturar la imagen. Inicie la intención con el pic_id solicitado. Esto se hace de la siguiente manera: 

Intento camera_intent = nuevo Intento(MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(camera_intent, pic_id); 
 

  • Ahora use el método onActivityResult() para obtener el resultado, aquí la imagen capturada. Esto se hace de la siguiente manera: 

void protegido onActivityResult(int requestCode, int resultCode, Intent data) { } 
 

  • Luego configure la imagen recibida como resultado de la intención de la cámara en ImageView para su visualización. 

Foto de mapa de bits = (mapa de bits) datos.getExtras().get(“datos”); 
clicked_image_id.setImageBitmap(foto); 
 

Paso 5: Ahora ejecute la aplicación y opere de la siguiente manera: 

  • Cuando se abre la aplicación, muestra un botón de «Cámara». Haga clic en él para abrir la cámara.
  • Capture la imagen y muestre la imagen capturada.

El código completo de MainActivity.java y activity_main.xml de la aplicación Camera se encuentra a continuación.

Nombre de archivo: actividad_principal.xml

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
    <!-- add Camera Button to open the Camera-->
    <Button
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:layout_marginLeft="140dp"
        android:id="@+id/camera_button"
        android:text="Camera" />
 
    <!-- add ImageView to display the captured image-->
    <ImageView
        android:layout_marginTop="70dp"
        android:layout_width="350dp"
        android:layout_marginLeft="15dp"
        android:layout_height="450dp"
        android:id="@+id/click_image"
        android:layout_marginBottom="10dp"/>
</RelativeLayout>

Nombre de archivo: MainActivity.java

Java

package org.geeksforgeeks.navedmalik.camera;
 
import android.content.Intent;
import android.graphics.Bitmap;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
 
public class MainActivity extends AppCompatActivity {
 
    // Define the pic id
    private static final int pic_id = 123;
 
    // Define the button and imageview type variable
    Button camera_open_id;
    ImageView click_image_id;
 
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        // By ID we can get each component
        // which id is assigned in XML file
        // get Buttons and imageview.
        camera_open_id = (Button)findViewById(R.id.camera_button);
        click_image_id = (ImageView)findViewById(R.id.click_image);
 
        // Camera_open button is for open the camera
        // and add the setOnClickListener in this button
        camera_open_id.setOnClickListener(new View.OnClickListener() {
 
            @Override
            public void onClick(View v)
            {
 
                // Create the camera_intent ACTION_IMAGE_CAPTURE
                // it will open the camera for capture the image
                Intent camera_intent
                    = new Intent(MediaStore
                                     .ACTION_IMAGE_CAPTURE);
 
                // Start the activity with camera_intent,
                // and request pic id
                startActivityForResult(camera_intent, pic_id);
            }
        });
    }
 
    // This method will help to retrieve the image
    protected void onActivityResult(int requestCode,
                                    int resultCode,
                                    Intent data)
    {
 
        // Match the request 'pic id with requestCode
        if (requestCode == pic_id) {
 
            // BitMap is data structure of image file
            // which stor the image in memory
            Bitmap photo = (Bitmap)data.getExtras()
                               .get("data");
 
            // Set the image in imageview for display
            click_image_id.setImageBitmap(photo);
        }
    }
}

Producción: 

Publicación traducida automáticamente

Artículo escrito por Naved_Alam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *