# 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:** 2

<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:** [26 Abril, 2019 07:49 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/21 "2019-04-26T07:49:32Z")

</div>

Buenos días a todos,

He replicado la llamada al formulario disparando una acción y en Android me sigue bloqueando la aplicación.

En el formulario de ficha que tengo que capturar la fotografía, tengo un botón que dispara una acción.

Dicha acción, ejecuta un manejador de evento en el que mediante un manejador de objeto, dispara el formulario para ver la camará y realizar la fotografía.

También he probado directamente ejecutando una acción desde el botón y que esta acción dispare el formulario de la fotografía y tampoco me funciona.

Todo esto en IOS funciona correctamente, pero en Android se me queda colgado ( o se me queda en segundo plano el objeto disparado, no lo sé )

No entiendo dónde podría estar la diferencia en este ultimo escollo

Os sigue pasando? Cómo lo resolvisteis?

Saludos!

---

<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:** [30 Abril, 2019 12:18 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/22 "2019-04-30T12:18:24Z")

</div>

Hola @tempsmollet / @icenter ,

Según veo me pasa exactamente lo mismo que a vosotros y parece que el formulario de la cámara se queda “detrás” bloqueando la app.

He probado lo siguiente:

1. Boton que ejecuta acción que llama al formulario que ejecuta la camara

2. Boton que dispara señal y que a su vez llama a manejador de evento que con un manejador objeto abre el formulario.

3. Ambas soluciones desde el formulario principal de la app para comprobar que no era por los distintos formularios que voy abriendo.

Sigue con el mismo comportamiento, ¿podeis ayudarme?

Y otra consulta, abriendo un formulario mediante un manejador de objeto, porque en ios lo redimensiona al tamaño de la pantalla y con Android no lo realiza??

Un saludo!!

---

<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:** [30 Abril, 2019 21:23 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/23 "2019-04-30T21:23:44Z")

</div>

Hola [claguna](https://foros.velneo.com/u/claguna)

Yo te adjunto cinco imagenes que te pueden ayudar a tener una idea de como yo lo he montado.

Funciona bien, tanto en IOS como en Android.

He creado un botón para activar el objeto Acción -\>

![Imagen%201%20Captura](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/8/8235ac9acd9d4b4068f67173ca6397c55965b197.jpeg)

en la siguiente imagen tienes como queda la acción

![Imagen%202%20Captura](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/b/b1cd3050e6b9bf6b88820d04bede0b6cdc61feca.jpeg)

En la siguiente imagen tienes la Vista de Datos con el formulario QML

![Imagen%203%20Captura](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/8/8a70d6f281f34cc7b2716b75ea0915591c7e64fc.jpeg)

En la siguiente imagen tienes el código del archivo .qml

![Imagen%204%20Captura](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/2/2ccfa5a68260bd7715b5af0bf9df86e93bb904c8.jpeg)

Y finalmente tienes el formulario funcionando, en este caso en Android.

![Imagen%205%20Captura](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex035/uploads/velneo/original/2X/3/31f51c70ca8225a8d6b6d95199e43768f51415d1.jpeg)

Saludos  
Ramon denuc

---

<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:** [2 Mayo, 2019 09:59 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/24 "2019-05-02T09:59:35Z")

</div>

Hola @tempsmollet,

Primero de todo, muchas gracias por tu ayuda!!

Realmente, comprobando paso por paso, hacia exactamente las indicaciones que pusiste.

Y por probar y simplificar, puse dicho botón en el formulario inicial de la APP y desde ahí funciona sin problemas.

El problema por tanto lo tengo a la hora de llamar a formularios creando manejadores de objeto ya que es la “unica diferencia”.

Intentaré plantear la navegación y validaciones entre formularios de otra manera para comprobar el funcionamiento.

Un saludo!

---

<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:** [2 Mayo, 2019 10:16 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/25 "2019-05-02T10:16:49Z")

</div>

Hola,

Una cosa, ese formulario ¿tiene una tabla asociada?

Si es que si, quilate un momento la tabla asociada y prueba.

Saludos

---

<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:** [2 Mayo, 2019 10:55 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/26 "2019-05-02T10:55:25Z")

</div>

Hola,

Me seguía pasando al quitarle la tabla asociada, pero revisando el hilo recordé que realizando llamadas a acciones, de manera que asi sustituyo los manejadores objeto de formularios, continua funcionando sin problema cambiando el metodo de navegación entre formularios.Saludos

---

<div class="post-metadata">

**Author:** ![carlos](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/carlos/32/5261_2.png) [@carlos](https://foros.velneo.com/u/carlos)\
**Post date:** [20 Junio, 2019 17:31 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/27 "2019-06-20T17:31:16Z")

</div>

Buenas a todos.  
he repasado todos los pasos unas cuantas veces, pero algo me dejo.  
Me sale el formulario sin dibujarme el qml, por tanto, ni siquiera accedo a la cámara.  
Abro el formulario con la vista de datos de qml, pero no veo la cámara. algo me dejo.  
el código del formulario qml me ocupa 84 líneas y ya he revisado que todas las llaves estén correctas.  
a ver si alguien me puede arrojar un poco de luz… gracias

---

<div class="post-metadata">

**Author:** ![carlos](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/carlos/32/5261_2.png) [@carlos](https://foros.velneo.com/u/carlos)\
**Post date:** [26 Junio, 2019 18:27 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/28 "2019-06-26T18:27:13Z")

</div>

> [@carlos](#):
>
> uenas a todos.  
> he repasado todos los pasos unas cuantas veces, pero algo me dejo.  
> Me sale el formulario sin dibujarme el qml, por tanto, ni siquiera accedo a la cámara.  
> Abro el formulario con la vista de datos de qml, pero no veo la cámara. algo me dejo.  
> el código del formulario qml me ocupa 84 líneas y ya he revisado que todas las llaves estén correctas.  
> a ver si alguien me puede arrojar un poco de luz… gracias

Buenas  
¿no hay nadie que controle este tema?

---

<div class="post-metadata">

**Author:** ![carlos](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/carlos/32/5261_2.png) [@carlos](https://foros.velneo.com/u/carlos)\
**Post date:** [2 Julio, 2019 19:51 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/29 "2019-07-02T19:51:29Z")

</div>

Pues después de una semana de descanso retomo el tema y, resulta que la cámara ya funciona. Bueno, tema acabado.  
No me digáis porque no funcionaba y porqué funciona ahora.  
hasta la próxima

---

<div class="post-metadata">

**Author:** ![aguevara](https://avatars.discourse-cdn.com/v4/letter/a/fbc32d/32.png) [@aguevara](https://foros.velneo.com/u/aguevara)\
**Post date:** [4 Abril, 2020 19:37 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/30 "2020-04-04T19:37:45Z")

</div>

He probado que agregando esta línea se logra el autoenfoque de la cámara:

=====================

Camera {  
id: camera  
captureMode: Camera.CaptureStillImage  
focus {  
focusMode: Camera.FocusContinuous // Para activar autoenfoque en la cámara  
}

====================  
Espero sea de utilidad.

Ahora bien, en mi aplicación no he logrado importar el archivo de imagen que la cámara guarda en el caché al respectivo campo imagen de una tabla velneo. ¿Necesito javascript o es posible lograrlo con un proceso en velneo?

Gracias por su ayuda.

---

<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:** [4 Abril, 2020 23:12 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/31 "2020-04-04T23:12:36Z")

</div>

Gracias AGuevara,

Funciona a las mil maravillas, ahora solo faltaria poder tener las opción de poder hacer zoom, ya seria el no va mas.

Saludos  
Ramon Denuc

---

<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:** [7 Abril, 2020 10:07 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/32 "2020-04-07T10:07:13Z")

</div>

Muchisimas gracias Aguevara por el aporte

Muy útil y funciona perfectamente

Con respecto a tu pregunta sobre guardar la imagen en un campo imagen, no te sabría decir puesto que yo subo mediante SDV a servidor el archivo como tal y guardo un registro en la tabla para su almacenamiento y posterior visualización.

Un saludo

---

<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:** [7 Abril, 2020 10:50 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/33 "2020-04-07T10:50:46Z")

</div>

> [@aguevara](#):
>
> Ahora bien, en mi aplicación no he logrado importar el archivo de imagen que la cámara guarda en el caché al respectivo campo imagen de una tabla velneo. ¿Necesito javascript o es posible lograrlo con un proceso en velneo?

Hola de nuevo

A mi el tema de poder importar la imagen me funciona bien, me intento explicar:

Como puedes ver en el archivo .qml hay un item donde se preparara el destino en un archivo de la imagen tomada.

 ![Form Capturar Foto](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/9/9ae328623db909c94026c5a6a2d4083d3e3a358e.jpeg)  
 ![Destino de la foto](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/6/6230a4a2f65556269370c49b73573cccc72836b4.jpeg)

Y una vez se ha tomado la imagen, el botón de Aceptar solo tengo dos lineas la de importar la imagen y la de aceptar:

![Botón Aceptar](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/0/059bd587b48d7582670d2965d5fc00e4e311e345.jpeg)

Recuerda que el campo donde guardas la imagen tiene que ser de tipo **Objeto Dibujo**.

---

<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:** [7 Abril, 2020 11:03 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/34 "2020-04-07T11:03:58Z")

</div>

Hola de nuevo,

Trasteando con QML y las funciones de cámara, he logrado que funcione el flash de forma automática.

El código sería el siguiente:

```
exposure.exposureCompensation: -1.0
flash.mode: Camera.FlashOn

```

Quedaría así:

 ![imagen](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/1/1b7510cf01d74450bbd099c3e451c0152ccc7ba5.png)

Un saludo

---

<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:** [8 Abril, 2020 08:00 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/35 "2020-04-08T08:00:50Z")

</div>

Buenos días Ramón,

Siguiendo probando y realizando mas funciones como la de zoom, te comento que lo acabo de conseguir hacer funcionar incorporando en el qml lo siguiente:

![imagen](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/8/830344cae91c98c65f72dc326de45212560240be.png)

Y por otro lado, incorporar el slider:

![imagen](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/3/3005cea7df54dd569c90383e0d948c339ec3a5b9.png)

Probado y funcionando sin problemas

Espero que sea de ayuda,

Un saludo

---

<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:** [8 Abril, 2020 10:01 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/36 "2020-04-08T10:01:43Z")

</div>

Hola, buenos días,

Aparentamente todo bien si no fuera porque la barra de zoom se me queda por detrás de la imagen, es decir, aparece pero inmediatamente la imagen de la camera se superpone a la barra del zoom.

Os dejo todo el código qml, por si veis algún inconveniente que haga que la barra zoom se quede detrás.

> import QtQuick 2.9  
> import QtQuick.Layouts 1.3  
> import QtQuick.Controls 1.5  
> import QtMultimedia 5.9
> 
> 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 camara arranque correctamente  
> // Si se queda colgado el vClient desconectar el cable USB  
> id: tIniciar  
> interval: 100  
> running: true  
> onTriggered: {  
> camera.start()  
> }  
> }
> 
> Camera {  
> id: camera  
> digitalZoom:zoomSlider.value // Para activar el Zoom en la cámara.  
> captureMode: Camera.CaptureStillImage  
> focus {  
> focusMode: Camera.FocusContinuous // Para activar autoenfoque en la cámara.  
> }
> 
> ```
> imageCapture {
> id: cameracapture;
> onImageCaptured: {
> // Mostrar la vista previa en una imagen
> foto.source = preview
> }
> onImageSaved: {
> // Muestra la imagen capturada
> nNumFoto++
> theRoot.setVar("FOTO_HECHA", 1 )
> 
> }
> }
> 
> ```
> 
> }
> 
> Slider {  
> id:zoomSlider  
> width: 100  
> height: 350  
> orientation: Qt.Vertical  
> minimumValue: 0  
> maximumValue: camera.maximumDigitalZoom // Otro zoom seria: camera.maximumOpticalZoom  
> stepSize:camera.maximumDigitalZoom/100 // Pasando por 10 pasos.  
> value:1.0 // Nivel de zoom inicial.  
> anchors{  
> left:parent.left  
> leftMargin: 5  
> verticalCenter:parent.verticalCenter  
> }  
> }
> 
> 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: 20;  
> visible: nNumFoto \> 0  
> fillMode: Image.PreserveAspectCrop;  
> source: null
> 
> MouseArea {  
> anchors.fill: parent  
> onClicked: {  
> }  
> }  
> }
> 
> }

Os dejo la imagen del movil, donde se puede ver que no esta la barra de zoom.

 ![Imagen de la camera](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/3/30a14b0797e0473608ffd3e0d9e60d1a7d3c8bc4.jpeg)

Saludos  
Ramon Denuc

---

<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:** [8 Abril, 2020 10:19 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/37 "2020-04-08T10:19:29Z")

</div>

Hola de nuevo,

He reproducido tu error y es debido a que se declara el Slide antes que el VideoOutput y tiene que ser al revés.

Yo lo tengo actualmente así:

 ![imagen](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/0/07899b644aa7880cfd4dce75ad6a321997b000da.png)

Ya nos dirás

Un saludo

---

<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:** [8 Abril, 2020 10:36 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/38 "2020-04-08T10:36:57Z")

</div>

Hola y gracias Carlos,

Efectivamente el error era ese, le he cambiado el orden y funciona correctamente.

Te adjunto imagen de como queda la imagen con la barra del zoom

 ![Imagen de la camera](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/7/7eb09ec024d32be5cee08551971e4655105b54d3.jpeg)

Un Saludo  
Ramon Denuc

---

<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:** [8 Abril, 2020 14:48 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/39 "2020-04-08T14:48:23Z")

</div>

Buenas,

Despues de haber estado un buen rato repasando y ajustando todo el proceso, ahora para subir el liston y para rizar el rizo, ya seria la ostia que se pudiera configurar en el .qml la resolución de salida del archivo .JPG que se genera al hacer la captura de la imagen, simplemente porque creo que en muchas ocasiones un usuario no necesite hacer fotos de 3200 mg píxeles que generan archivos grandes y que con una resolución de 800x600 pasaría de sobras y generando un archivo final de apenas un par de megas.

Ahí lo dejo, un fuerte abrazo y cuidaros mucho, vosotros y la familia.

Saludos  
Ramon Denuc

---

<div class="post-metadata">

**Author:** ![bitcodesoft](https://avatars.discourse-cdn.com/v4/letter/b/2acd7d/32.png) [@bitcodesoft](https://foros.velneo.com/u/bitcodesoft)\
**Post date:** [8 Abril, 2020 20:06 UTC](https://foros.velneo.com/t/tomar-fotos-en-android-vclient/10135/40 "2020-04-08T20:06:45Z")

</div>

Camera plugin:  
Control flash, captura cámara frontal, trasera, zoom, guarda imágenes en campo imagen Velneo, etc.

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

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