Curso de Android con Java: Tomar foto mediante Intent - guardar en la memoria interna su miniatura
Summary
TLDREl script proporciona una guía detallada sobre cómo desarrollar una aplicación que tome fotografías y las almacene como miniaturas en la memoria interna del dispositivo. Se discute cómo utilizar intents para abrir la cámara y capturar imágenes, y luego guardarlas en un formato comprimido para ahorrar espacio. Se incluye la creación de actividades adicionales para mostrar todas las imágenes almacenadas y cómo utilizar un adaptador para mostrarlas en una cuadrícula. El objetivo es crear una aplicación eficiente que permita a los usuarios tomar fotografías de medicamentos, por ejemplo, sin preocuparse por llenar la memoria del dispositivo.
Takeaways
- 📸 El script trata sobre cómo tomar una foto con un dispositivo y guardar una miniatura de esta en la memoria interna de la aplicación.
- 🛠 Se menciona la importancia de no guardar fotos en alta definición cuando no es necesario, para evitar que el dispositivo quede sin memoria.
- 💡 Se plantea una aplicación donde el usuario tome una foto de cada medicamento que toma, sugiriendo la utilidad de utilizar miniaturas para ahorrar espacio de almacenamiento.
- 🔑 Se describe el proceso de implementar una actividad en la que el usuario puede tomar una foto y luego ver todas las fotos tomadas a través de una segunda actividad.
- 📹 Se explica cómo se utiliza un Intent para lanzar la cámara del dispositivo y capturar la foto, pasando un código de resultado para que la aplicación principal sepa que la foto fue tomada.
- 🖼️ Se detalla cómo se crea una vista para mostrar la imagen capturada y cómo se maneja la confirmación de la toma de la foto.
- 📝 Se discute la necesidad de crear un nombre de archivo único para cada foto, utilizando la fecha y hora actuales para evitar conflictos.
- 🗂️ Se menciona el uso de un FileOutput para guardar la foto capturada en la memoria interna del dispositivo.
- 🔄 Se describe cómo se sincroniza la vista para mostrar las fotos almacenadas, utilizando un adaptador personalizado para gestionar los elementos de la cuadrícula.
- 🔍 Se sugiere la posibilidad de verificar si las fotos se han guardado correctamente en la memoria interna mediante un explorador de archivos.
Q & A
¿Qué es un 'Intent implícito' en el contexto de la aplicación para Android?
-Un 'Intent implícito' es una forma de iniciar otra actividad o componente dentro de una aplicación Android sin especificar explícitamente su nombre. Se utiliza para realizar acciones comunes como tomar una foto o enviar un correo electrónico.
¿Cómo se puede tomar una foto y guardarla en la memoria interna de un dispositivo Android?
-Para tomar una foto y guardarla en la memoria interna, se utiliza un Intent para lanzar la cámara del dispositivo y luego, al confirmar la captura, se recibe el resultado en la actividad que llamó a la cámara. A partir de ahí, se puede guardar la imagen en un archivo dentro de la memoria interna de la aplicación.
¿Por qué se recomienda guardar miniaturas de las fotos en lugar de las imágenes originales?
-Guardar miniaturas en lugar de las imágenes originales es recomendable porque consumen mucho menos espacio de almacenamiento en el dispositivo. Esto es especialmente útil cuando se necesita almacenar una gran cantidad de imágenes, como en una aplicación de seguimiento de medicamentos.
¿Cómo se puede mostrar una imagen en un ImageView de Android?
-Para mostrar una imagen en un ImageView, se debe obtener un archivo de imagen en forma binaria a través de un Intent y luego pasar ese archivo al ImageView utilizando un BitmapFactory para decodificar la imagen y mostrarla.
¿Cómo se generan nombres de archivo distintos para las imágenes tomadas?
-Los nombres de archivo distintos se generan utilizando la fecha y hora actuales para asegurarse de que cada archivo tenga un nombre único y no se sobrescriban imágenes anteriores.
¿Qué es un 'Intent explícito' y cómo se utiliza en el contexto de la aplicación mencionada?
-Un 'Intent explícito' es una forma de iniciar una actividad o componente en Android proporcionando su nombre de clase específico. En el contexto de la aplicación mencionada, se utiliza para iniciar una segunda actividad que muestra todas las fotos guardadas.
¿Cómo se implementa la funcionalidad para mostrar todas las fotos guardadas en la memoria interna de un dispositivo Android?
-Para mostrar todas las fotos, se crea una segunda actividad que utiliza un adaptador personalizado para rellenar un GridView con las miniaturas de las imágenes. Se obtiene una lista de todos los archivos de imagen guardados en la memoria interna y se pasan al adaptador para su presentación.
¿Qué es un 'ViewHolder' en Android y cómo se utiliza en el adaptador de fotos?
-Un 'ViewHolder' es un patrón utilizado en Android para optimizar la representación de elementos en vistas como GridView o ListView. En el adaptador de fotos, se utiliza para almacenar y reutilizar las vistas de cada elemento de la cuadrícula, mejorando el rendimiento al mostrar las miniaturas.
¿Cómo se sincroniza la lista de imágenes guardadas con la vista en la segunda actividad?
-La sincronización se logra al obtener una lista actualizada de los archivos de imagen en la memoria interna y pasarla al adaptador personalizado que se utiliza para rellenar el GridView. Esto garantiza que la vista muestre todas las imágenes actualmente almacenadas.
¿Cómo se puede verificar si las imágenes se han guardado correctamente en la memoria interna?
-Para verificar si las imágenes se han guardado correctamente, se puede utilizar un Device Explorer o examinar directamente el almacenamiento interno de la aplicación a través de herramientas de desarrollo para confirmar la presencia y el contenido de los archivos de imagen.
Outlines
📸 Toma y almacenamiento de fotos en miniatura
El primer párrafo trata sobre cómo tomar una foto con la cámara del dispositivo y guardarla en la memoria interna, pero en forma de miniatura en lugar de la imagen original. Se menciona la implementación de una segunda actividad para mostrar las fotos y se plantea la idea de utilizar miniaturas para ahorrar espacio de almacenamiento, lo cual es útil en aplicaciones donde el usuario toma fotografías de medicamentos, por ejemplo. Se describe el proceso de lanzar la cámara y recibir el resultado de la captura de forma que se guarde solo la miniatura.
🖼️ Proceso de captura y visualización de la imagen
El segundo párrafo se enfoca en los detalles del proceso de captura de la imagen y cómo se maneja el resultado. Se describe cómo se utiliza el 'Intent' para recibir los datos de la imagen capturada y cómo se extrae esta imagen del 'Intent' utilizando métodos de 'Intent.getExtras'. Luego, se detalla cómo se crea un archivo de imagen con un nombre único basado en la fecha y hora actuales y cómo se guarda en la memoria interna del dispositivo, asegurando que los nombres de archivo sean distintos y evitar conflictos.
🗂️ Organización y visualización de múltiples fotos
Este párrafo explica cómo se organiza y visualiza una colección de fotos en la aplicación. Se menciona la creación de una segunda actividad dedicada a mostrar todas las fotos almacenadas. Se describe el uso de un 'RecyclerView' con un adaptador personalizado para mostrar cada foto en un 'GridLayout'. Se detalla cómo se implementa el adaptador para manejar la lista de archivos de imagen y cómo se configura el 'RecyclerView' para mostrar cada foto junto con su nombre de archivo correspondiente.
🔍 Verificación y acceso a las fotos almacenadas
El cuarto párrafo se centra en cómo verificar que las fotos se han almacenado correctamente en la memoria interna y cómo acceder a ellas. Se sugiere el uso del 'Device Explorer' para verificar la presencia de los archivos de imagen en la carpeta 'files' del proyecto. Se describe cómo se puede sincronizar y verificar que los nombres de los archivos son únicos y corresponden a las fechas y horas de captura. Se menciona la importancia de tener en cuenta la gestión de la memoria interna para evitar que el dispositivo se quede sin espacio de almacenamiento.
👁️ Visualización final de las fotos en la aplicación
El último párrafo concluye el proceso mostrando cómo se visualizan las fotos en la aplicación. Se menciona que se pueden tomar más fotos y verificar su almacenamiento en la memoria interna. Se destaca que se ha implementado una vista previa de las fotos con un botón para tomar más fotos y cómo se muestran las imágenes en un 'RecyclerView'. Se confirma que el proceso de captura, almacenamiento y visualización de las fotos funciona correctamente, mostrando un ejemplo de tres fotos almacenadas.
Mindmap
Keywords
💡Intent implícito
💡Miniatura
💡Memoria interna
💡Activity
💡Botón
💡ImageView
💡Cámara
💡Archivo
💡Fecha y hora
💡Adapter
Highlights
El tema principal es la implementación de intents implícitos para tomar una foto y guardarla como miniatura en la memoria interna del dispositivo.
Se discute cómo evitar llenar la memoria del dispositivo al almacenar imágenes en alta definición, sugiriendo el uso de miniaturas.
Se plantea una aplicación donde el usuario toma una foto de cada medicamento que toma, destacando la conveniencia de utilizar miniaturas para ahorrar espacio.
Se describe la creación de una actividad para tomar la foto y otra para mostrar todas las fotos almacenadas en la memoria interna.
Se menciona la necesidad de un botón para tomar la foto y otro para ver todas las fotos en la aplicación.
Se detalla cómo se implementa el botón para lanzar la actividad de la cámara y el uso del intent para capturar la foto.
Se explica cómo se utiliza el intent para recibir la imagen de la cámara y almacenarla en forma de miniatura.
Se discute la implementación del método onActivityResult para manejar la confirmación de la foto tomada.
Se menciona la creación de un nombre de archivo único basado en la fecha y hora para almacenar las fotos.
Se describe cómo se utiliza la clase FileOutputStream para guardar la imagen en la memoria interna del dispositivo.
Se destaca la importancia de comprobar si la foto se ha guardado correctamente en la memoria interna.
Se detalla cómo se crea un segundo activity para mostrar todas las fotos almacenadas en la memoria interna.
Se describe el uso de un RecyclerView para mostrar cada foto tomada, con un adaptador personalizado.
Se menciona la creación de un adaptador para trabajar con los datos de las fotos y su presentación en la interfaz de usuario.
Se explica cómo se implementa el método onBindViewHolder del adaptador para mostrar cada foto en el RecyclerView.
Se concluye con la demostración de cómo se pueden ver todas las fotos almacenadas en la memoria interna a través de la segunda actividad.
Transcripts
bueno continuamos con el tema d
intent implícitos y vamos a ver cómo se
toma una foto mediante un intel y
guardarla en la memoria interna su
miniatura no la foto original si nueva
miniatura podemos otra actividad
bastante común comentamos la foto mente
un intento normalmente se abrirá la
aplicación escama del dispositivo y
luego guardar sólo su miniatura la
memoria interna aplicación las ventas de
guarda en la miniatura es que visitamos
que el dispositivo quede sin memoria es
muy común que no necesitemos almacenar
en muchas situaciones fotos en alta
definición imaginemos una aplicación
donde el usuario tiene que tomar una
foto de cada medicamento que toma lo más
conveniente utilizar una miniatura y
consumir poco espacio almacenamiento
nuestra aplicación tiene que tener tu
activity con cáncer en uno vamos a tomar
la foto y en el segundo activista y
mostraremos mediante un 6 a creer view
todas las fotos almacenan el dispositivo
pasemos a implementar la aplicación
proyecto
045 activity
para 50
pues vamos a hacer
y principal main activity y dijimos que
íbamos a disponer un botón para
tomar la foto un botón para ver todas
las fotos
y vamos a poner una y más view para
poder ver
la imagen que hemos tomado
enlazar
tomo el máximo
y lo vamos a hacer
con este botón
lo vamos a expandir al final
tocamos mostrar la imagen si tomas
este vamos a disponer el botón de tomar
fotos
y este es el que va a lanzar el otro
activity
para
puerto las fotos
veamos cómo hacer parar
tomar la foto como lanzar el arte y viti
de la cámara
luego más poco
llegamos
y por tener que ser vivo y vamos a tomar
fotos donde vamos a crear nuestro
intento
los demás directamente
y
tenemos que pasarle el constructor
director
junto a acción y más captura la acción
arte y más captura
y llamamos a activity por jesús o sea
y por eso tenemos que pasar 20 y un
número que nos va a devolver cuando se
cierre el otro artículo vamos a poner
captura
y más en convención importante
y le damos cualquier valor entero
esto es lo que vimos en su momento
cuando implementamos intenté de vuelo en
datos y este justamente nos va a
devolver la imagen que si toma
bueno ahí debería estar que si lance
para ver realmente si lanza la cámara si
yo voy a tomar fotos fíjense que si
lance a la cámara
ahora tenemos que cuando confirmemos
porque no va a sacar la foto y va a
confirmar va a ejecutarse y recordamos
el método
el anc activities 61 lola activity se
suele meter en algo más fácil de
describirlo
que no le escriba
con tíbet y azul
o seleccionamos y bueno este se dispara
cuando se hiciese la cámara que vamos a
hacer acá
después kobe y no estoy volviendo
capturar fotos capturas imagen perdón
captura y martín y además el resultado
ha salido por el resulto key
quiere decir que ha confirmado la foto
pero fallando después code
es un poder es igual igual su poder
quiere decir que ahora sí vamos a sacar
los datos los datos como vienen bien
intent
nosotros podemos
adapta el parámetro que el inten este
que llega a llamar a los extras y a
partir de ahí vamos
definió un big man
y
1
y hacemos mediante el extras
sí
gates jane parámetros de boletas que son
prácticamente en forma binaria el
archivo de imagen nosotros lo vamos a
mostrar en un y más vio dijimos nuestro
y más bio y vamos a armar
y más bien uno
y para poder mostrar lo definimos
y más vivo y barrio 1 no tenemos
referencia
1
y de más y 1 y lo mostramos acá
las primas
bismarck
y pasamos el bid 1 injustamente tiene lo
que hemos extraído hemos visto extras
hemos extraído
la imagen propiamente dicha o el archivo
de imagen podemos controlar que
realmente podría tomar fotos
confirmo y ya tenemos en el imax bio 1
la imagen x trail ahora está le tenemos
que grabar en la memoria interna para
grabar en la memoria interna
digamos un objeto de clase fire output
trim
y dijimos que era un objeto de este tipo
de high output
y vamos a crear un nombre de archivo
siempre distinto
y vamos a llamar y le vamos a decir a la
imagen de modo privado
porque tengo varias cosas primero
implementar este método
vamos a crear métodos
y básicamente como creamos un nombre de
archivo vamos a utilizar la fecha y la
hora para que siempre los nombre
archivos sean distintos
simple de hay formas y le tenemos que
pasar el formato las fichas en iguales
año
m
día
ahora minuto segundo
y en formato normal
a la fecha como importarla plastificar
mirar a batir y recordamos
que la fecha contrate nada con extensión
de nuestro archivo que hace más difícil
bueno todavía existen nos da un error
porque capturas tensiones de tipo y
excepción
bueno ahí se va a crear un archivo
cuando ya no esté de buen un stream que
va a su nombre archivo puede coincidir
con la fecha y hora actual con extensión
jpg vamos a guardar este archivo film a
1
punto ya vamos a compres
primer punto compres formas
otra piqué
calidad el 100% y disponemos el file
system que hemos leído los datos pero
archivos
llamamos a flows en principio esto
debería
vamos a controlar si se graba la foto
cuando estoy usando el morador siempre
parece la misma foto por supuesto
bueno para saber si realmente se ha
grabado en la memoria interna recordemos
que nosotros vamos a view por windows y
by fire explorer y a la cartita adapta
carta este es el proyecto
45
y en la carpeta file tenemos fíjense que
era sábado crisis acá nada más ocupar
este caso
y ahí tenemos las fotos la foto que
hagamos si lo hay guardando en esa
carpeta ponemos otra foto
confirmo
acá debería haber las fotos tenemos que
ya express card sincronizar tenemos el
siguiente partido fíjense siempre estos
nombres distintos porque usamos la fecha
y la hora bueno ahora vamos a la segunda
parte del problema ya hemos visto lo
fundamental de tenemos visto la parte
fundamental cierto de los activities
como llamaron intencionalmente el fin
activity
bueno entonces ahora vamos a hacer el de
dar todas las fotos del everton de las
fotos administramos otro activity
entonces vamos a crear otro activity
dijimos yo
activity otro ente activity que vamos a
llamar actividad 2
la actividad 2 ya tenemos también quiere
decir nuestro con esto abrimos tenemos
la actividad 21 resta escribió vamos a
ubicar los vamos a enlazar le vamos a
llamar ese activo 2
recibió unos 62 61 y ahora vamos a que
lo que vamos a mostrar cada ítem una
foto entonces con crea un ley ahora
diamante está con trabajar y recordar
cuando vimos que saque el vivo botón
derecho y o xml
la haya foto creamos la foto que es lo
que vamos a mostrar un tec vio este
horizontal o vertical este texto va a
mostrar
la foto puesto un nombre de archivo de
foto nombre
vamos a hacer triste
línea 2 se adapte al contenido wrap
content y además vamos a disponer
portante útil y más yo
disponemos un y más frío total estiba y
cambian como disponen cualquiera
como es un poco más grande
entonces basta el imas vio este va a
hacer y más bien esto le vamos a llamar
y más view fotos
y este es el
y más bien poco
correcto lo vamos a utilizar en el face
escribió no hay uno que se llama igual
vamos a
y qué
descriptivo
cuando estos son los dos objetos que van
a tener nuestro escribió que se va a
repetir y ahora si llamamos primero
vamos a enlazar del principal para
disponerlas el otro activity dijimos en
el main activity hay un botón
dijimos ver todas las fotos en el ground
click y vamos a llamar
y ver todo
portos y el ver todos los costos
simplemente lancemos el otro aquí
para ver todas las fotos tenemos que aún
intent
y explícito porque vamos a abrir la
actividad 2
le indicamos el nombre del archivo crash
que llamamos estar activity
y pasamos el inter
cuando se va a lanzar la actividad 2
donde vamos a implementar la lógica en
la actividad 2
acabamos de que recordar bien necesitar
la lista de todos los archivos
y hay que la memoria interna es muy
fácil pero la lista con los archivos
llamando al
bayly país
gris
una vez que tengo la lista de archivos a
cabo
tengo la referencia
con el público y de puntos
1
que creamos con eliminar la llama anaya
y el conducto de línea la ya humana
le enviamos el dijo el jefe que vio unos
llamamos 'la playa' un manager y
trazamos línea al mar
layún manager que acabamos de crear y es
ésta ha querido uno del adapter ya que
es donde miramos la clase le vamos a
llamar adaptador fotos
el adoptado los costos por supuesto que
hay que crearlo y acá viene esta
mecánica que hemos dicho que podemos
usar el androide estudio para que eran
las clases adaptador fotos que debe
trabajar con tipo atos genéricos
adaptador fotos puntos
adaptador fotos solberg planteamos la
espera se haga
pero pudo convertir y damos de la clase
holder hicimos que acá
implementamos el constructor definimos
nuestro sistema nacer
y más vivo y más vivo se llama con
del tío
uno en el constructor tenemos la
referencia y más de uno
con el incendio
el tercer punto y de él
es más view hot dijimos que se llamaba
en el callao fotos y tenemos llamado el
ide
y que este va a ser
no hay más vamos a llamar este texto
otro
tengo fotos y este y más bien fotos y
más fotos y también puesto los nombres o
lo más conveniente
y este desvío foto
este frío 1 y el más
1
efe
y más view foto
y que no está faltando dijimos que la
clase de adaptador fotos generamos los
tres métodos donde uno devuelve la
cantidad de elementos que dijimos que lo
tenemos acá el vector archivos archivos
punto line
viene que tengo crear un objeto de la
clase esta interna adaptador fotos
holder y pasado de con el grid layout in
water llamando implante y acá el archivo
recursos
layout layout foto que elegimos creado
pasarle el padre
ahora me toque y llega falso
no queda nada más que imprimir
del all there llamar a un método en
línea de la posición de élite de
imprimir todo y no está hecho en la
clase adaptador photo holder lo creamos
e imprimimos como hacemos pero en línea
para no perder más tiempo
se está haciendo largo vamos dar copiar
y pegar acá y básicamente que toque
hacer acá tengo uno que esté acá
mostramos el nombre de archivo y luego
tengo que leer del archivo con la clase
file input stream es para leer y tenemos
qué
abrir indicamos nombre archivo estar en
la memoria interna y en
y no mostramos la imagen
veamos citarla tendríamos que tener
funcionando
nuestro segundo activity
tomemos otra foto más que esto ya
funcionaba seguro pero ahora a ver todas
las fotos y está perfectamente ya
tenemos nuestro 666 preview con todas
las fotos almacenadas la memoria interna
sin fijamos 123 fotos son las pies
podemos controlar y ver que se
encuentran en la memoria interna yendo
device explorer acá debería de 35
sincronizamos están los tres archivos de
imágenes bueno con esto hemos visto cómo
tomar una foto guardar la miniatura y la
memoria interna y luego como
recuperarlas y mostrar la empresa que
vio gracias
浏览更多相关视频
1. SWIFT - iOS 10 Español: Acceso a la cámara y al álbum
Curso de Android con Java: Recuperar datos cuando se cierra un Activity
Curso de Android con Java: Control Spinner con items compuestos por una imagen y un TextView
[MOOC] - Apps para dispositivos móviles (ed. 2016) - iOS. Desarrollo de una App
Capítulo 2 - Curso de PowerPoint, Álbum de Fotos e Hipervínculos
Extensiones eléctricas, medición de Fase y Neutro
5.0 / 5 (0 votes)