Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Android / Tomar fotos con la camara y guardar en la sdcard

Tomar fotos con la camara y guardar en la sdcard

Por jc mouse viernes, noviembre 8, 2013

En este post realizaremos una aplicación android que hará uso de la cámara del celular para tomar una foto y guardarla en la sdcard del teléfono en el lugar que nosotros indiquemos y con el nombre que deseemos.

un crimen

Necesitamos

– Eclipse Indigo + Android instalado

Nivel Java-Android: Intermedio

Tiempo: 15 minutos

1.Crea un nuevo Application Android Project con la siguiente configuración:

Application Name: Toma Foto

Project Name: TomaFoto

Package Name: com.bolivia.tomafoto

Activity: Blank Activity

Activity Name: MainActivity.java

Layout Name: activity_main.xml

2. Abre el archivo AndroidManifest.xml para añadir los permisos necesarios, estos son:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Estos permisos te permiten manipular la cámara desde la aplicación y escribir en el sdcard.

3. Abre el archivo activity_main.xml, nuestra interfaz estará compuesta de un solo botón, el código XML es el siguiente:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/btnTomaFoto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="@string/strTomaFoto" />

</RelativeLayout>

Importante, el ID del botón es «btnTomaFoto«, no olvides también crear un string para el texto del botón.

4. Finalmente el código para tomar la foto, abre el archivo «MainActivity.java» y reemplaza por:

01 package com.bolivia.tomafoto;
02 import java.io.File;
03 import java.io.IOException;
04 import java.text.SimpleDateFormat;
05 import java.util.Date;
06 
07 import android.net.Uri;
08 import android.os.Bundle;
09 import android.os.Environment;
10 import android.provider.MediaStore;
11 import android.annotation.SuppressLint;
12 import android.app.Activity;
13 import android.content.Intent;
14 import android.util.Log;
15 import android.view.Menu;
16 import android.view.View;
17 import android.widget.Button;
18 
19 public class MainActivity extends Activity {
20  
21  private final String ruta_fotos = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/misfotos/";
22     private File file = new File(ruta_fotos);
23     private Button boton;
24     
25  @Override
26  protected void onCreate(Bundle savedInstanceState) {
27   super.onCreate(savedInstanceState);
28   setContentView(R.layout.activity_main);
29   //======== codigo nuevo ========
30   boton = (Button) findViewById(R.id.btnTomaFoto);
31   //Si no existe crea la carpeta donde se guardaran las fotos
32   file.mkdirs();
33   //accion para el boton
34   boton.setOnClickListener(new View.OnClickListener() {
35 
36    @Override
37    public void onClick(View v) {
38     String file = ruta_fotos + getCode() + ".jpg";
39     File mi_foto = new File( file );
40     try {
41                  mi_foto.createNewFile();
42              } catch (IOException ex) {              
43               Log.e("ERROR ", "Error:" + ex);
44              }       
45              //
46              Uri uri = Uri.fromFile( mi_foto );
47              //Abre la camara para tomar la foto
48              Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
49              //Guarda imagen
50              cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
51              //Retorna a la actividad
52              startActivityForResult(cameraIntent, 0);
53    }
54 
55   });
56   //====== codigo nuevo:end ====== 
57  }
58 
59  /**
60  * Metodo privado que genera un codigo unico segun la hora y fecha del sistema
61  * @return photoCode 
62  * */
63  @SuppressLint("SimpleDateFormat")
64  private String getCode()
65  {
66   SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss");
67   String date = dateFormat.format(new Date() );
68   String photoCode = "pic_" + date;  
69   return photoCode;
70  }
71  
72  @Override
73  public boolean onCreateOptionsMenu(Menu menu) {
74   // Inflate the menu; this adds items to the action bar if it is present.
75   getMenuInflater().inflate(R.menu.main, menu);
76   return true;
77  }
78 
79 }

#21 se indica donde se almacenaran las fotos que se tomen, nuestra ruta es «sdcard/pictures/misfotos/»

#34..#55 en la acción del botón se añade el código para tomar la foto y guardar la foto, cuando se presione el botón, se abrirá la cámara del celular para tomar la foto, cuando esta acción se realice, se volverá a la aplicación.

#64 para guardar las fotos, se necesitan de un nombre único para eso se crea un método que hará uso de la hora y fecha del dispositivo para generar un código único «pic_yyyymmddhhmmss.jpg» que nos sirve de nombre de imagen

El resto del código esta comentado y es bastante cortito para que se pueda entender, ejecutamos la aplicación y ya podemos tomar fotos.

tomas

un crimen

commander

Proyecto android TOMA FOTO en este enlace pobre

enjoy! 🙂

 

Tags

Artículos similares

Generar esquema XSD a partir de clases java

En un post anterior vimos como usar la herramienta XJC del JDK para generar clases java desde esquemas XSD (XML Sch[...]

Modo Mantenimiento sin Consola: Archivo DOWN

La forma que tiene Laravel en poner una aplicación en Modo Mantenimiento es por consola mediante el comando: Sin embargo[...]

SharedPreferences: Preferencias de Usuario

En este post construiremos paso a paso un SharedPreferences más conocido en español como «Preferencias de Usuario«, esta[...]

Agregar tablas a los items de un JComboBox

En este post personalizaremos un componente JComboBox para que sus elementos acepten tablas (JTable) en lugar de texto s[...]

Pon a prueba tu código con Android Studio

Realizar pruebas sobre nuestro código nos permiten comprobar su correcto funcionamiento e integración con otros módulos[...]

Leer datos de un REST API con VUE

En este post realizaremos un proyecto en VUE que se conectara a un REST API  y utilizara un servicio del mismo para[...]