Requisitos previos:
- Fundamentos de desarrollo de aplicaciones de Android para principiantes
- Guía para instalar y configurar Android Studio
- android | Comenzando con la primera aplicación/proyecto de Android
- android | Ejecutando tu primera aplicación de Android
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