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
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:
Boton que ejecuta acción que llama al formulario que ejecuta la camara
Boton que dispara señal y que a su vez llama a manejador de evento que con un manejador objeto abre el formulario.
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??
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
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
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
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?
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.
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:
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.
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;
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
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.