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

Sub Tablas: Agregar tablas dentro de otras tablas en Java

El JTable de Java es un gran componente para mostrar datos en una tabla de una forma rápida y sencilla, sin embargo en v[...]

«Hola Mundo» en kotlin con Eclipse

Kotlin es un lenguaje de programación de tipado estático que corre sobre la máquina virtual de Java y que también puede[...]

Login estilo Google

Google tiene entre su formulario de autenticación de usuario para sus diferentes servicios (gmail, blogger, youtube, g+)[...]

ArrayDeque: Cola doblemente terminada

Una cola doblemente terminada o deque es una estructura de datos lineal que permite insertar y eliminar elementos por am[...]

Mapas en HTML5 – Uniendo todo – Parte 6

Última parte del tutorial «Mapas interactivos HTML5», vamos uniendo todo todo el código. En la parte 5 de este tutorial,[...]

Mapas interactivos con HTML5 – Parte 1

La tecnología de HTML5 y javascript  nos permite crear gráficos interactivos livianos sin tener que recurrir a flash, el[...]