Spanish ¿Cómo guardar foto en SMARTPHONE, CAMEX2?; Resuelto

JAVIERGARCIA

Member
Licensed User
Je,,, así encabezo el asunto del mensaje.: No entiendo nada
a question:

Cómo es posible que una misma app se comporte diferente en un móvil u otro.? No lo entiendo.
No me refiero a configuraciones de pantalla (que tela para configurarlo, dicho aparte), etc etc,,,, sino que sencillamente,,, los buttons definidos me llevan en uno a donde deben y en otro a donde le da la gana.

SO: 6.01 en los dos.
uno Huawei y el otro Samsung.
Ahhh, es verdad,, y en el móvil que parece que va bien; a veces funciona y otras no. No entiendo na.

Es una app que hace una foto, pilla coordenadas y envía por smtp con los datos, a una dirección de correo. Solo es eso.

Gracias
 

José J. Aguilar

Well-Known Member
Licensed User
Hola Javier:

Como comprenderás, entre el asunto que no indica nada sobre tu problema, y los datos que nos das, es difícil que te ayudemos.
Si no pones tu código, o capturas de pantalla del comportamiento de tu app, o a qué te refieres cuando dices "a veces funciona y otras no"... pues poco te podemos decir.

saludos,
 

JAVIERGARCIA

Member
Licensed User
Hola Javier:

Como comprenderás, entre el asunto que no indica nada sobre tu problema, y los datos que nos das, es difícil que te ayudemos.
Si no pones tu código, o capturas de pantalla del comportamiento de tu app, o a qué te refieres cuando dices "a veces funciona y otras no"... pues poco te podemos decir.

saludos,

Si, tienes razón José. Quizás fue más bien una reflexión en alto. (perdón); mañana documento con más datos, pues hoy anduve en otros menesteres. Gracias por tú interés.
 

bgsoft

Well-Known Member
Licensed User
Hola Javier:

Si no estas corriendo los programas en modo debug que cuando modificas muchas veces y salvas al final hace "virguerias" , lo que haria seria poner logs o grabar a un fichero de texto los saltos de esos botones.
Una de las cosas que suele pasar es que tengas algun temporizador declarado en Global en vez de Process_Globals y genere eventos multiples, y eso te puede despistar. Tambien si estas haciendo fotos y no descargas el objeto al final la memoria puede ser muy crítica y hacer cosas raras.
Como bien te ha dicho José sin mas datos es dificil saber de donde viene el problema. Yo lo que haria es grabar a fichero y luego consultarlo, es mas comodo que estar mirando los log.

Saludos
 

JAVIERGARCIA

Member
Licensed User
Hola;
Bueno, andaba delimitando el problema antes de nada.
El asunto está en la cámara, creo.

No obstante y posteriormente:
He querido implementar este código,:
https://www.b4x.com/android/forum/threads/fotos-camara.81929/
https://www.b4x.com/android/forum/t...tends-the-camera-library-functionality.23801/

El cameraex,, pero es que a secas,, osea, antes de ponerlo con más cosas, (gps, etc); y ya el mismo no me graba ninguna foto en el dispositivo, y en dos tipos diferentes de móviles. samsung-huawei; SO 6.0

con el del archivo que adjunto, por lo menos en uno de los móviles, todo el proceso es correcto: boton click para foto y envío vía smtp.
(el problema con el otro móvil, es la propia cámara-código), por eso me echa fuera del programa.

Gracias Jose, Bgsoft.
 

Attachments

Jorge M A

Well-Known Member
Licensed User
Es mejor que exportes todo el proyecto (menu File-> Export as Zip, o como diga en español) para verificar el archivo del manifest.
Es posible que se trate de los permisos que en cada marca pueden llamarse de modo diferente.
 

bgsoft

Well-Known Member
Licensed User

bgsoft

Well-Known Member
Licensed User
Es posible que se trate de los permisos que en cada marca pueden llamarse de modo diferente.
Hola Jorge, los permisos a nivel de código se llaman siempre igual independientemente de la marca, modelo, pais, etc.
Lo único que puede cambiar es que a nivel visual al entrar en la configuración de una App cuando está instalada en un dispositivo se llame diferente dependiendo del pais y de la lengua, pero eso no afecta a que por código para todos se llamen igual.

En el caso de Javier para la cámara va a necesitar poner en el manifest:

AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)
AddPermission(android.permission.CAMERA)
AddPermission(android.permission.RECORD_AUDIO) ' por si graba video

Pero si se ha bajado el wraps de Erel, en el propio proyecto ya estan incluidos los permisos

Saludos
 
Last edited:

bgsoft

Well-Known Member
Licensed User
Hola Javier, se me olvidó, si los dispositivos que estas probando el sdk es >= 24 (Android 7) tendras que hacer el código del RuntimePermission.
A nivel de pruebas, si no lo haces, una vez instalada la App, te vas a Ajustes/Aplicaciones/ y en los permisos de tu aplicación los activas, pero como te he dicho solo a nivel de pruebas.

Saludos
 

JAVIERGARCIA

Member
Licensed User
Hola; Gracias a todos por el interés.
No salgo de ningún modo. (soy novatillo, pero cabezón).
Envío el codg. Ahora me sale otro fallo.
No hagáis mucho caso del mismo,,, se que tengo cosas no declaradas, etc,,, (pero por lo menos, en el samsung me funciona)
Intenté con el cam2, pero no se por que, la fotografía no se almacena en ninguna carpeta de los móviles.
También he puesto lo del manifiest, pero sigo igual.

A ver si será todo cuestión de las versiones del sdk?; y del android?; no lo se.
Hay dos líneas:
SMTP.Initialize("smtp.gmail.com", 587, "xxxxx@gmail.com", "xxxxxxxxxxxxxx", "SMTP") '<-------------------------------------PONER DATOS PROPIOS PARA COMPROBAR FUNCIONAMIENTO

SMTP.To.Add("XXXXXXXXXXXXXXXXXX")'<-------------------------------------PONER DATOS PROPIOS PARA COMPROBAR FUNCIONAMIENTO

que si probáis con vuestros datos, veréis como va.

En fin, sigo peleando.

Muchas gracias de nuevo.
 
Last edited:

JAVIERGARCIA

Member
Licensed User

José J. Aguilar

Well-Known Member
Licensed User
Hola Javier:

Este es el código que uso yo en el módulo de cámara para guardar la foto.
Le he quitado código que yo uso para el nombre y eso que no es necesario, quizás de algún error porque no lo he probado, pero en esencia, creo que es lo que necesitas.

saludos,

B4X:
Sub TakePicture
    Dim NombreFoto As String
    Try
        SetState(openstate, True, VideoMode)
        Wait For(cam.FocusAndTakePicture(MyTaskIndex)) Complete (Data() As Byte)
        SetState(openstate, False, VideoMode)
        'Dim bmp As Bitmap = cam.DataToBitmap(Data)
        'Log("Picture taken: " & bmp)
        
        NombreFoto ="NombreQueQuieras.jpg"
        cam.DataToFile(Data, Starter.Directorio & "/", NombreFoto)
        
    Catch
        HandleError(LastException)
    End Try

    
End Sub
 

JAVIERGARCIA

Member
Licensed User
Hola Javier:

Este es el código que uso yo en el módulo de cámara para guardar la foto.
Le he quitado código que yo uso para el nombre y eso que no es necesario, quizás de algún error porque no lo he probado, pero en esencia, creo que es lo que necesitas.

saludos,

B4X:
Sub TakePicture
    Dim NombreFoto As String
    Try
        SetState(openstate, True, VideoMode)
        Wait For(cam.FocusAndTakePicture(MyTaskIndex)) Complete (Data() As Byte)
        SetState(openstate, False, VideoMode)
        'Dim bmp As Bitmap = cam.DataToBitmap(Data)
        'Log("Picture taken: " & bmp)
       
        NombreFoto ="NombreQueQuieras.jpg"
        cam.DataToFile(Data, Starter.Directorio & "/", NombreFoto)
       
    Catch
        HandleError(LastException)
    End Try

   
End Sub

Gracias José.

Algo me falla justo ahí.

Cree un datatofile, pero tampoco.

upload_2019-2-3_20-24-36.png
 

Attachments

José J. Aguilar

Well-Known Member
Licensed User
Hola Javier:

Esa variable (Starter.Directorio) es donde yo almaceno el directorio donde guardaré las fotos, debes sustituirlo por tu directorio, probablemente:
B4X:
rp.GetSafeDirDefaultExternal("")
 

José J. Aguilar

Well-Known Member
Licensed User
Hola Javier:

¿Qué problema te da si sustituyes

B4X:
cam.DataToFile(Data, Starter.Directorio & "/", NombreFoto)
por
B4X:
cam.DataToFile(Data, rp.GetSafeDirDefaultExternal(""), "foto.jpg")
?
Puedes ver si se crea en el directorio de tu aplicación un archivo llamado: "foto.jpg"?
 

JAVIERGARCIA

Member
Licensed User
Hola Javier:

¿Qué problema te da si sustituyes

B4X:
cam.DataToFile(Data, Starter.Directorio & "/", NombreFoto)
por
B4X:
cam.DataToFile(Data, rp.GetSafeDirDefaultExternal(""), "foto.jpg")
?
Puedes ver si se crea en el directorio de tu aplicación un archivo llamado: "foto.jpg"?

Muchas Gracias Jose.
Lo miro y me pongo de nuevo, mañana, hoy estoy fuera y no tengo acceso a la aplicación.
Mañana te envío todos los datos del problema.
(me daba fallos en el reconocimiento o dimensionado de las variables básicamente).
Se que es sencillo, seguramente, y ha de ser una tontería poder llevarlo adelante.
A ti te funciona bien, no?
Independientemente de si lo pones en un móvil (marca-versión), u otro, no?
 

José J. Aguilar

Well-Known Member
Licensed User
Pensé que ya lo habrías probado.

Sí, en mi caso guarda la foto en el directorio que le indiques, con el nombre que le indiques, independientemente de la marca y versión.

saludos
 

JAVIERGARCIA

Member
Licensed User
Pensé que ya lo habrías probado.

Sí, en mi caso guarda la foto en el directorio que le indiques, con el nombre que le indiques, independientemente de la marca y versión.

saludos

Si, pero me fallaba igualmente.
De haber salido adelante te hubiera escrito seguro para comunicártelo. (Cómo decía al principio, me sabe mal molestar, e intenté hasta ayer noche buscar todos los problemas en los que pudiera yo estar cometiendo)
Te voy escribiendo Jose. Pruebo todo de nuevo mañana.
Saludos
 

JAVIERGARCIA

Member
Licensed User
Hola Javier:

¿Qué problema te da si sustituyes

B4X:
cam.DataToFile(Data, Starter.Directorio & "/", NombreFoto)
por
B4X:
cam.DataToFile(Data, rp.GetSafeDirDefaultExternal(""), "foto.jpg")
?
Puedes ver si se crea en el directorio de tu aplicación un archivo llamado: "foto.jpg"?
Hola Jose
Pues que no se graba ninguna foto.
Donde estás haciendo la modificación, en el Main, o en el CamEx2; es que veo que hay dos rutinas Takepicture (una en cada uno)?
Gracias por tú paciencia.

Saludos
upload_2019-2-9_14-54-32.png
 
Top