# Tomar Fotos en Android VClient

**URL:** <https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135>\
**Category:** Velneo\
**Created:** [9 Abril, 2019 22:07 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135 "2019-04-09T22:07:34Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![luis\_david\_gamez\_cam](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@luis\_david\_gamez\_cam](https://foros.velneo.com/u/luis_david_gamez_cam)\
**Post date:** [9 Abril, 2019 22:07 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/1 "2019-04-09T22:07:34Z")

</div>

Buenas vi en un foro antiguo que alguien consultaba por la posibilidad de tomar fotos en android por medio de velneo, mas no vi respuesta concisa de como hacerlo, alguien sabe por que medio podría hacerlo?  
Que vi en el foro una respuesta con un link mas no apuntaba a ningún sitio, imagino expiro la dirección a la cual apuntaba.

---

<div class="post-metadata">

**Author:** ![icenter](https://avatars.discourse-cdn.com/v4/letter/i/3d9bf3/32.png) [@icenter](https://foros.velneo.com/u/icenter)\
**Post date:** [11 Abril, 2019 06:25 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/2 "2019-04-11T06:25:12Z")

</div>

Buenas!  
Te paso una captura de cómo puede hacerse. Es válido tanto para Android como para iOS.  
Sólo tienes que tener un formulario QML con el código que aquí te copio.  
Todo el mérito, de Paco Satué, que compartió este código en uno de sus ejemplos.  
Saludos,  
César

![30](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/5/5c008733886fbcae4537aa0f7af789c3c11bf678.png)

import QtQuick 2.6  
import QtQuick.Layouts 1.3  
import QtQuick.Controls 1.4  
import QtMultimedia 5.7

Item {  
width: parent.width;  
height: parent.height;

```
property string cPath_Foto: theApp.clientCachePath() + "_camara_foto.jpg";
property int nNumFoto: 0

Timer {
	// Este Timer fuerza un start() para que la cámara arranque correctamente
	// Si se queda colgado el vClient desconectar el cable USB
	id: tIniciar
	interval: 100
	running: true
	onTriggered: {
	camera.start()
	}
}
Camera {
    id: camera
	captureMode: Camera.CaptureStillImage

    imageCapture {
		id: cameracapture;
        onImageCaptured: {
            // Show the preview in an Image
            foto.source = preview
        }
		onImageSaved: {
			// Muestra la imagen capturada
			nNumFoto++
			theRoot.setVar("FOTO_HECHA", 1 )

		}
    }
}

VideoOutput {
	id: visor
	anchors.fill: parent;
	// anchors.horizontalCenter: parent.horizontalCenter
	source: camera;
	// Para recibir los eventos
	focus: visible;
	// Para que la orientación coincida con la orientación de la pantalla;
	autoOrientation: true;
	// La orientación fijada manualmente no se refleja en la captura;
	// orientation: nOrientacion;
	// Modo de relleno. Deformar o Encajar con o sin recorte;
	fillMode: VideoOutput.PreserveAspectCrop // Stretch, PreserveAspectFit y PreserveAspectCrop;
    MouseArea {
        anchors.fill: parent;

```

// onClicked: camera.imageCapture.capture();  
onClicked: cameracapture.captureToLocation(cPath\_Foto)

```
    }
}

Image {
	// FOTO. La foto capturada se muestra en un cuadro en la parte inferior izquierda
	// FOTO. Ahora aparece capturada a pantalla completa para que la guarden o la desechen.
	id: foto

```

// width: 100;  
// height: 100;  
anchors.fill: parent;  
autoTransform: true;  
anchors.bottom: parent.bottom  
// anchors.margins: 10;  
visible: nNumFoto \> 0  
fillMode: Image.PreserveAspectCrop;  
source: null

```
	MouseArea {
		anchors.fill: parent
		onClicked: {
		}
	}
}

```

}

---

<div class="post-metadata">

**Author:** ![luis\_david\_gamez\_cam](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@luis\_david\_gamez\_cam](https://foros.velneo.com/u/luis_david_gamez_cam)\
**Post date:** [11 Abril, 2019 13:30 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/3 "2019-04-11T13:30:26Z")

</div>

Gracias por el código voy a insertarlo en mi aplicación y cualquier duda la hago saber.  
Gracias

---

<div class="post-metadata">

**Author:** ![luis\_david\_gamez\_cam](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@luis\_david\_gamez\_cam](https://foros.velneo.com/u/luis_david_gamez_cam)\
**Post date:** [11 Abril, 2019 14:15 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/4 "2019-04-11T14:15:27Z")

</div>

Buenas ya con el código tengo un avance mas estoy teniendo un inconveniente, a lo que me parece con la poca experiencia de QML que manejo la cámara no se esta inicializando puesto que el cuadro directamente aparece en negro, el código lo copie tal cual lo pasaste :  
import QtQuick 2.6  
import QtQuick.Layouts 1.3  
import QtQuick.Controls 1.4  
import QtMultimedia 5.7

```
Item {
width: parent.width;
height: parent.height;
	
property string cPath_Foto: theApp.clientCachePath() + "_camara_foto.jpg";
property int nNumFoto: 0

Timer {
	// Este Timer fuerza un start() para que la cámara arranque correctamente
	// Si se queda colgado el vClient desconectar el cable USB
	id: tIniciar
	interval: 100
	running: true
	onTriggered: {
	camera.start()
	}
}
Camera {
    id: camera
	captureMode: Camera.CaptureStillImage

    imageCapture {
		id: cameracapture;
        onImageCaptured: {
            // Show the preview in an Image
            foto.source = preview
        }
		onImageSaved: {
			// Muestra la imagen capturada
			nNumFoto++
			theRoot.setVar("FOTO_HECHA", 1 )

		}
    }
}

VideoOutput {
	id: visor
	anchors.fill: parent;
	// anchors.horizontalCenter: parent.horizontalCenter
	source: camera;
	// Para recibir los eventos
	focus: visible;
	// Para que la orientación coincida con la orientación de la pantalla;
	autoOrientation: true;
	// La orientación fijada manualmente no se refleja en la captura;
	// orientation: nOrientacion;
	// Modo de relleno. Deformar o Encajar con o sin recorte;
	fillMode: VideoOutput.PreserveAspectCrop // Stretch, PreserveAspectFit y PreserveAspectCrop;
    MouseArea {
        anchors.fill: parent;
		
// onClicked: camera.imageCapture.capture();
onClicked: cameracapture.captureToLocation(cPath_Foto)
   }
}

Image {
	//FOTO. La foto capturada se muestra en un cuadro en la parte inferior izquierda
	//FOTO. Ahora aparece capturada a pantalla completa para que la guarden o la desechen.
	id: foto
//	width: 100;
//	height: 100;
anchors.fill: parent;
autoTransform: true;
anchors.bottom: parent.bottom
//	anchors.margins: 10;
visible: nNumFoto > 0
fillMode: Image.PreserveAspectCrop;
source: null

	MouseArea {
		anchors.fill: parent
		onClicked: {
		}
	}
}
}

```

mas a la hora de la visualización en la app desde el movil se ve de la siguiente forma:  
 ![1](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/9/96f0fce698c667942601ccebfa9d5da623018d63.png) ![2](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/3/3b2e67cf548d06a0438bde9fb2a1a084311e591c.png)

Alguna idea de que error cometí?  
Igualmente lo estaré trabajando para ver si consigo encontrar el error que cometí por mi parte

Gracias

---

<div class="post-metadata">

**Author:** ![luis\_david\_gamez\_cam](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@luis\_david\_gamez\_cam](https://foros.velneo.com/u/luis_david_gamez_cam)\
**Post date:** [11 Abril, 2019 14:28 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/5 "2019-04-11T14:28:37Z")

</div>

Ya no, ya encontre mi error, inserte el script del botón en el QML.

---

<div class="post-metadata">

**Author:** ![luis\_david\_gamez\_cam](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@luis\_david\_gamez\_cam](https://foros.velneo.com/u/luis_david_gamez_cam)\
**Post date:** [11 Abril, 2019 15:05 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/6 "2019-04-11T15:05:26Z")

</div>

Una Duda en base a que la foto se almacene en el cuadro de la parte inferior de la pantalla que configuración tendria que ponerle para que reciba la foto?

---

<div class="post-metadata">

**Author:** ![icenter](https://avatars.discourse-cdn.com/v4/letter/i/3d9bf3/32.png) [@icenter](https://foros.velneo.com/u/icenter)\
**Post date:** [12 Abril, 2019 07:22 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/7 "2019-04-12T07:22:28Z")

</div>

Sólo tienes que comentar alguna línea tocando el width, heigh y anchors de las 3 líneas que están seguidas en la definición de Image…  
Pasa de esto ![47](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/5/55e52825f0af200c35738e6678bcfcab705f23e9.png)  
a esto  
 ![38](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/c/c5483217979debaf261444d04321b82e2b1712a5.png)

---

<div class="post-metadata">

**Author:** ![claguna](https://avatars.discourse-cdn.com/v4/letter/c/3ab097/32.png) [@claguna](https://foros.velneo.com/u/claguna)\
**Post date:** [15 Abril, 2019 06:58 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/8 "2019-04-15T06:58:21Z")

</div>

Buenos días!

Primero de todo, gran aporte! muchisimas gracias!!

Por otro lado, estoy intentado adaptarlo a mi APP, y justo después de que pida permisos para utilizar la camara, en Android se queda colgado y no muestra la camara y en IOS no realiza nada pero no queda colgado.

¿Que puedo estar haciendo mal??

Gracias por adelantado!

---

<div class="post-metadata">

**Author:** ![desarrolladorxdss](https://avatars.discourse-cdn.com/v4/letter/d/ecb155/32.png) [@desarrolladorxdss](https://foros.velneo.com/u/desarrolladorxdss)\
**Post date:** [15 Abril, 2019 18:38 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/9 "2019-04-15T18:38:25Z")

</div>

Me sucede lo mismo que a claguna, ¿Alguna solucion?

---

<div class="post-metadata">

**Author:** ![luis\_david\_gamez\_cam](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@luis\_david\_gamez\_cam](https://foros.velneo.com/u/luis_david_gamez_cam)\
**Post date:** [15 Abril, 2019 19:53 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/10 "2019-04-15T19:53:55Z")

</div>

Personalmente a mi no me esta quedando congelada la aplicación y no he probado en IOS mas en android me está funcionando, como agregaron los scripts UML? talvez ahi este el problema.

---

<div class="post-metadata">

**Author:** ![claguna](https://avatars.discourse-cdn.com/v4/letter/c/3ab097/32.png) [@claguna](https://foros.velneo.com/u/claguna)\
**Post date:** [16 Abril, 2019 09:57 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/11 "2019-04-16T09:57:21Z")

</div>

Hola Luis David,

Tengo dos objetos, un formulario con una vista incluida del formulario QML.

Y por otro lado tengo el formulario QML con el fichero QML que lo tengo importado en el proyecto,

Es así?? o realmente me confundí??

---

<div class="post-metadata">

**Author:** ![icenter](https://avatars.discourse-cdn.com/v4/letter/i/3d9bf3/32.png) [@icenter](https://foros.velneo.com/u/icenter)\
**Post date:** [16 Abril, 2019 10:52 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/12 "2019-04-16T10:52:08Z")

</div>

Está perfectamente montado así.  
Quizá la declaración de la variable FOTO\_HECHA que recoge si se ha hecho click?  
Si la utilizas, tiene que estar en los 2 formularios: en el QML, que es donde se le asigna el valor en el disparo y el en que contiene el QML para poder preguntar por ella…  
 ![13](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/8/838397bafa4c473c6119f5d543a049d3e5b0236c.png)  
 ![27](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/1/1ab6fd8c99fef602a1b5c7614ccf6e1e769349b2.png)

---

<div class="post-metadata">

**Author:** ![luis\_david\_gamez\_cam](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@luis\_david\_gamez\_cam](https://foros.velneo.com/u/luis_david_gamez_cam)\
**Post date:** [16 Abril, 2019 14:00 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/13 "2019-04-16T14:00:59Z")

</div>

lo monte por el mismo metodo que indica icenter, si no te funciona sube una foto con el código de como lo tienes montado a ver si es algún error montado por algún lugar.

---

<div class="post-metadata">

**Author:** ![claguna](https://avatars.discourse-cdn.com/v4/letter/c/3ab097/32.png) [@claguna](https://foros.velneo.com/u/claguna)\
**Post date:** [16 Abril, 2019 14:41 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/14 "2019-04-16T14:41:07Z")

</div>

Hola!

Acabo de verlo, y realmente me quedaba de poner una variable FOTO\_HECHA en el formulario ( solo lo puse en uno de ellos ). Mil gracias!!

Ahora en iOS me funciona sin problema, pero en Android no se me llega a cargar la camara y me “expulsa” de dicho formulario y se queda colgada la APP.

Saludos,  
Carlos

---

<div class="post-metadata">

**Author:** ![tempsmollet](https://avatars.discourse-cdn.com/v4/letter/t/977dab/32.png) [@tempsmollet](https://foros.velneo.com/u/tempsmollet)\
**Post date:** [24 Abril, 2019 11:33 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/15 "2019-04-24T11:33:25Z")

</div>

Hola Foro

Estoy intentando adaptar la posibilidad de poder realizar fotografia a traves de un móvil con Android.

Siguiendo todas las indicaciones de esta entrada, no consigo que funciona correctamente.

Me intento explicar: Tal y como lo tengo montado, al pulsar el botón que llama a un Evento, que crea un manejador de objeto para poder abrir otro formulario donde esta montado la vista de datos con el formulario QML, este formulario se me va atrás y no lo puedo manipular por que se queda el formulario que lo llama delante de este.

No se si es la mejor forma para montar la abertura de la cámara para realizar la fotografia.

Os adjunto imágenes de como lo tengo montado.

![Capturar%20Foto%201](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/b/be2e5dd485c9590af23acfa5da230c229093abfa.jpeg)

![Capturar%20Foto%202%20-%20Manejador](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/4/4ed67a4885c9bf0bc088e57cae082136c947c0f9.jpeg)

![Capturar%20Foto%203%20-%20Formulario%20con%20Vista%20de%20Datos%20y%20QML](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/1/1de41056392f7f2676636f328a7b48dfad818bc2.jpeg)

![Capturar%20Foto%204%20-%20Archivo%20QML](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/3/34f6d8e5c91b4f12136160dad4e84d9103344d9d.jpeg)

---

<div class="post-metadata">

**Author:** ![luis\_david\_gamez\_cam](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@luis\_david\_gamez\_cam](https://foros.velneo.com/u/luis_david_gamez_cam)\
**Post date:** [24 Abril, 2019 13:58 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/16 "2019-04-24T13:58:20Z")

</div>

Buenas Ramón  
Una consulta, tal vez fallo mio mas no puedes hacer un establecer foco hacia el formulario que se te va atrás para que este gane la pantalla?  
Sino para revisar un poco mas a fondo.

---

<div class="post-metadata">

**Author:** ![tempsmollet](https://avatars.discourse-cdn.com/v4/letter/t/977dab/32.png) [@tempsmollet](https://foros.velneo.com/u/tempsmollet)\
**Post date:** [24 Abril, 2019 19:13 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/17 "2019-04-24T19:13:37Z")

</div>

Hola,

Lo que si tengo comprobado es que el programa corriendo en IOS, funciona perfectamente todo lo planteado.

El tema esta cuando esta corriendo en Android.

Os pasa a todos ?

Saludos

---

<div class="post-metadata">

**Author:** ![luis\_david\_gamez\_cam](https://avatars.discourse-cdn.com/v4/letter/l/50afbb/32.png) [@luis\_david\_gamez\_cam](https://foros.velneo.com/u/luis_david_gamez_cam)\
**Post date:** [24 Abril, 2019 19:16 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/18 "2019-04-24T19:16:31Z")

</div>

Mismo caso mas no se si el mismo fallo, en mi caso el fallo que topo es con la pre visualización de la foto tomada, de ahí en mas no me da ningún problema. No he podido probarlo en IOS.

---

<div class="post-metadata">

**Author:** ![icenter](https://avatars.discourse-cdn.com/v4/letter/i/3d9bf3/32.png) [@icenter](https://foros.velneo.com/u/icenter)\
**Post date:** [25 Abril, 2019 06:38 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/19 "2019-04-25T06:38:56Z")

</div>

Buenas!  
A mí me pasó igual. Se ve que no se comporta igual bajo iOS que bajo Android…  
Tuve que hacerlo llamando a acciones, que disparan los formularios. Así sí funciona bien en ambos entornos.

---

<div class="post-metadata">

**Author:** ![tempsmollet](https://avatars.discourse-cdn.com/v4/letter/t/977dab/32.png) [@tempsmollet](https://foros.velneo.com/u/tempsmollet)\
**Post date:** [25 Abril, 2019 14:05 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/20 "2019-04-25T14:05:02Z")

</div>

Hola

Efectivamente, llamando el formulario a traves de una acción, se puede utilizar tanto en Android como en IOS.

Aunque de esta forma podemos tener una captura para nuestras app’s de movil, es bastante basica, como no poder realizar un enfoque como se puede hacer con la camara del movil.

Con esta opción, al presionar encima de la imagen que queremos captar, no realiza un auto-enfoque, lo que hace es, tomar la foto en ese preciso momento.

Pero para salir del escollo, y mientras esperamos que un dia Velneo tenga en Nativo las opciones para poder manipular y hacer fotos, esta opción es buena.

![Foto%20movil](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/a/a361a957b8b8b06a3c0431d0bb4ab91d32f78df0.jpeg)

Muchas gracias  
Saludos

[Página siguiente](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135.md?page=2)
