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

Mapas HTML5 – Elementos del canvas- Parte 4

Continuando con nuestro tutorial de «Mapas interactivos con HTML5» , esta es la sección que corresponde a los elementos[...]

SharedPreferences: Preferencias de Usuario

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

Efecto Taringa! en vivo

En la pagina de Taringa, existe una sección donde se puede ver lo que pasa en ese foro al momento, «Taringa! en vivo» se[...]

Generador de números aleatorios UNIX

El Método Congruencial Lineal Mixto es el más utilizado en simulación en computadoras digitales y esta basado en una rel[...]

Te enseño como generar imagenes con Google Bard

Google Bard la inteligencia artificial de Google se actualiza con una mejora que entra a competir con el resto de IAs y[...]

Crea un JButton con sonido para tus aplicaciones

En este post crearemos un botón swing que reproducirá un sonido cuando este sea presionado por el usuario.  Sin mas[...]