Spanish (SOLUCIONADO) Bajar imagen sin usar JOBDONE

TheFalcon

Active Member
Licensed User
Buenas a todos y gracias por prestarme atención.
Quiero bajar una imagen de una web, que sera el logo de la aplicación, para que el usuario lo cambie a su antojo, el problema es que todos los ejemplos que encuentro son con http jobs , y ya trabajo usando base de datos mysql, y uso mucho jobdone , y no quiero meter un código para descargar 1 imagen en el mismo, para no cargarlo mas. Parece una tontería pero si hay otro modo mas factible seria de agradecer, un saludo
 

Descartex

Well-Known Member
Licensed User
Muy buenas!!!
Y por que no lo agregas a la app en el directorio Assets?
Luego que lo cambie y lo guardas en el DirInternal...
Un saludo.
 

TheFalcon

Active Member
Licensed User
Lo de meterlo en la APP no se si es factible ya que es una aplicación que te deja poner de fondo el logo que quieras tu, de ahí que sea bajada, por que en un apartado guardas la ruta de tu logo y comprueba cada vez que arranca que ya lo tienes, si no lo descarga.

Sobre FTP: Basicamente lo mismo, tendría que tener el usuario una ftp , lo que yo quiero es que el usuario guarde una url en settings tipo: www.miweb.com/milogo.png

y cuando arranca la aplicación comprueba si Existe en File.dirdefault , si no existe la descargaría de esa URL
 

Descartex

Well-Known Member
Licensed User
Muy buenas.
Como diria Jack el Destripador... vayamos por partes:
Realmente la app arranca de inicio con un logo predeterminado??
Si es asi, cargas el logo por defecto que incluyes con la app y, si el usuario lo cambia, ya cargas el suyo. Algo asi:
B4X:
If File.Exists(File.DirInternal,"logo.png") Then ' logo.png es el nombre del logo que el usuario ha seleccionado
    Logo.BitMap=LoadBitmap(File.DirInternal,"logo.png") ' Logo es el ImageView que contiene el logo (si fuese el fondo, lo cargarias en el background del contenedor
Else
    Logo.BitMap=LoadBitmap(File.DirAssets,"default_logo.png") ' default_logo.png es tu logo por defecto
End If
Si el usuario cambia el logo, simplemente lo tienes que guardar en DirInternal con el nombre de logo.png.

No le veo mayor complicacion, ni tienes que andar descargando nada ni nada... salvo que quisieses que, aunque el usuario desinstalase la app, volviese a tener su logo, no hay motivo para hacer una subida al servidor.

Un saludo.
 

TheFalcon

Active Member
Licensed User
Como siempre digo me explico como el culo jaja.
LA app no tiene logo por defecto, es una app para asociaciones, entonces el administrador de la aplicación pone el logo de su asociación y al arrancar los usuarios se descargaría el logo y se pondría de fondo, y ya se quedaría guardada en el móvil, si mañana un usuario nuevo se baja la aplicación, se la baja sin fondo, si al abrirla tiene en settings una url con un fondo, lo bajaría.


No se si me e explicado mejor ahora es que soy difícil de entender :p
 

Descartex

Well-Known Member
Licensed User
Pues me da a mi que no te libra ni cristo de usar el HttpJob...
 

TheFalcon

Active Member
Licensed User
pues nada , lo tendré que usar , espero no cargarme el resto del código xD , lo pruebo y comento que tal va.
gracias
 

TheFalcon

Active Member
Licensed User
me harías un gran favor , por que con un ejemplo del foro me falla y no se por que xD.

Me descarga la imagen pero dañada :/
 
Last edited:

TheFalcon

Active Member
Licensed User
Bueno yo lo solucione con el ejemplo de samperizal, no obstante no se cual es la librería que comentas ni su función pero seria interesante saberlo si tienes algún enlace a algún post en el que la expongan.

Pongo como lo hice yo para quien tenga la duda.

Esto lo pongo en el Activity Create
B4X:
    If IsConnected = True Then

    
    If  file.Exists(File.DirDefaultExternal,"logo.png") = True Then
        
ImageView1.Bitmap=LoadBitmap(File.DirDefaultExternal,"Logo.png")
        Else
        Dim job3 As HttpJob
        job3.Initialize("Job_logo", Me)
    
        job3.Download("http://www.mipagina.com/logoprueba.png")


        End If

y esto dentro del jobdone

B4X:
            Case "Job_logo"
                Dim out As OutputStream
                
                out = File.OpenOutput(File.DirDefaultExternal, "Logo.png", True)
                File.Copy2(Job.GetInputStream, out)
                out.Close
 
Top