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

Tutorial Gráficos Vectoriales SVG – Parte I

Estructura Interna de un archivo SVG. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD[...]

Contraseñas con emojis en java

Semanas atrás leí un articulo en el que se pensaba implementar los emojis como contraseñas en los dispositivos con andro[...]

TextToSpeech: Convierte texto a voz

TextToSpeech o TTS, es el sintetizador de voz para android, en los celulares inteligentes viene un motor TTS por defecto[...]

Resolución de pantalla con LibGDX

En este tutorial, veremos un poco más de lo que son las texturas en libGDX y dos maneras de añadirlas a nuestros juegos,[...]

Google Play elimina todas las Apps sobre Coronavirus

El gigante de la informática Google, ante la reciente pandemia mundial declarada por la OMS (Organización Mundial de la[...]

ExecutorService: Tareas asíncronas

Desde java 7 esta disponible la interface ExecutorService que se extiende de Executor y nos proporciona los métodos nece[...]