Hola a todos
He creado una BD SQLite con DBBrowser, para guardar varios campos (Nº de pale, cantidad, tipo, lote…) en el teléfono, hasta aquí todo bien;
Pero sería un puntazo guardar también una foto de la etiqueta de cada pale; Y manos a la obra, hago esto. (Pequeña modificación de CameraIntent de Erel).
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Pero 1.
Las fotos las pasa al ImageView en horizontal.
2.
Sería ideal poder hacer zum, ya que me veo menos que un gato de escayola.
Después paso la foto a una variable string, para guardarla en la BD.
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Y cuando intenta guardarla
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
El simpático del Logs me dice que una MIE… y esto.
detallesdescarga_botonguardar_click (java line: 482)
java.lang.OutOfMemoryError: Failed to allocate a 8372236 byte allocation with 3462688 free bytes and 3MB until OOM
at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:91)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:201)
at java.i utputStreamWriter.flushBytes(OutputStreamWriter.java:170)
utputStreamWriter.flushBytes(OutputStreamWriter.java:170)
at java.i utputStreamWriter.convert(OutputStreamWriter.java:184)
utputStreamWriter.convert(OutputStreamWriter.java:184)
at java.i utputStreamWriter.write(OutputStreamWriter.java:269)
utputStreamWriter.write(OutputStreamWriter.java:269)
at java.io.PrintWriter.doWrite(PrintWriter.java:623)
at java.io.PrintWriter.write(PrintWriter.java:601)
at java.io.PrintWriter.write(PrintWriter.java:579)
at java.io.PrintWriter.write(PrintWriter.java:660)
at java.io.PrintWriter.append(PrintWriter.java:722)
at java.io.PrintWriter.append(PrintWriter.java:691)
at java.io.PrintWriter.append(PrintWriter.java:31)
at java.lang.Throwable.printStackTrace(Throwable.java:315)
at java.lang.Throwable.printStackTrace(Throwable.java:300)
at anywheresoftware.b4a.BA.printException(BA.java:262)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:191)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:157)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:153)
at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:78)
at android.view.View.performClick(View.java:5698)
at android.widget.TextView.performClick(TextView.java:10846)
at android.view.View$PerformClick.run(View.java:22565)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7230)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Me pierdo (Que inútil soy).
			
			He creado una BD SQLite con DBBrowser, para guardar varios campos (Nº de pale, cantidad, tipo, lote…) en el teléfono, hasta aquí todo bien;
Pero sería un puntazo guardar también una foto de la etiqueta de cada pale; Y manos a la obra, hago esto. (Pequeña modificación de CameraIntent de Erel).
			
				B4X:
			
		
		
		Sub Process_Globals
    Private ion As Object
    Private const Foto As String = "EnvasesFoto.jpg"
    Private codifica As StringUtils
End Sub
Sub Globals
    Private ImageView1 As ImageView
End Sub
Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("1")
    If Main.CreaFoto Then
        Main.CreaFoto = False
        TakePicture
    Else
        ImageView1.Bitmap = Main.FotoExistente
    End If
End Sub
Sub Button1_Click
    TakePicture
End Sub
Sub TakePicture
    Dim i As Intent
    i.Initialize("android.media.action.IMAGE_CAPTURE", "")
    Dim uri As Uri
    File.Delete(Main.Ruta, Foto)
    uri.Parse("file://" & File.Combine(Main.Ruta, Foto))
    i.PutExtra("output", uri) 'La imagen se guardará en esta ruta
    Try
        StartActivityForResult(i)
    Catch
        ToastMessageShow("La cámara no está disponible.", True)
    End Try
End Sub
'El resultado llega aquí
Sub ion_Event (MethodName As String, Args() As Object) As Object
    If Args(0) = -1 Then
        Try
            Dim in As Intent = Args(1)
            If File.Exists(Main.Ruta, Foto) Then
                Main.FotoNueva = LoadBitmapSample(Main.Ruta, Foto, ImageView1.Width, ImageView1.Height)
                ImageView1.Bitmap = Main.FotoNueva
            Else If in.HasExtra("data") Then 'Tratar de obtener miniatura en su lugar
                Dim jo As JavaObject = in
                Main.FotoNueva = jo.RunMethodJO("getExtras", Null).RunMethod("get", Array("data"))
            End If
        Catch
            Log(LastException)
        End Try
    End If
    If Main.FotoNueva.IsInitialized Then ImageView1.Bitmap = Main.FotoNueva
    'Convertir el archivo de imagen en un array de bytes
        Dim InputStream1 As InputStream
    InputStream1 = File.OpenInput(Main.Ruta, Foto)
    Dim OutputStream1 As OutputStream
        OutputStream1.InitializeToBytesArray(1000)
        File.Copy2(InputStream1, OutputStream1)
        Dim Buffer()  As Byte
        Buffer = OutputStream1.ToBytesArray
    Main.CadenaFotoNueva = codifica.EncodeBase64(Buffer) ' Convierte la imagen a String (cadena de caracteres.
    Main.CreaFoto = True
    Return Null
   
   
End Sub
Sub StartActivityForResult(i As Intent)
   Dim jo As JavaObject = GetBA
   ion = jo.CreateEvent("anywheresoftware.b4a.IOnActivityResult", "ion", Null)
   jo.RunMethod("startActivityForResult", Array As Object(ion, i))
End Sub
Sub GetBA As Object
   Dim jo As JavaObject
   Dim cls As String = Me
   cls = cls.SubString("class ".Length)
   jo.InitializeStatic(cls)
   Return jo.GetField("processBA")
End SubPero 1.
Las fotos las pasa al ImageView en horizontal.
2.
Sería ideal poder hacer zum, ya que me veo menos que un gato de escayola.
Después paso la foto a una variable string, para guardarla en la BD.
			
				B4X:
			
		
		
		    Main.CadenaFotoNueva = codifica.EncodeBase64(Buffer) ' Convierte la imagen a String (cadena de caracteres.Y cuando intenta guardarla
			
				B4X:
			
		
		
		Sub BotonGuardar_Click
    Dim Resultado As Int
    If Nuevo Then
        Resultado = Msgbox2("¿Guardamos los detalles del nuevo Palet_Envase?", "Guardar", "Si","No","",Main.Imagen(3))
        If Resultado = DialogResponse.POSITIVE Then
'Guarda los nuevos detalles de la descarga
            MySQLDetallesDescarga.ExecNonQuery("INSERT INTO DetallesDescarga  VALUES(?,'" & Descargas.MyCursorDescargas.GetString("BDClave_Descargas") & "','" & Clave_Producto & "','" & Edit12.Text & "','" & Edit13.Text & "','" & Edit14.text & "','" & Edit15.text & "','" & Edit13.Text  & "',0,'" & Main.CadenaFotoNueva & "')"  )
        End If
        Pnl02.Visible=False
        If Pnl01.IsInitialized Then Pnl01.Visible=True
        Rellena_Cursor
    Else
        Resultado = Msgbox2("¿Guardamos los cambios?", "Guardar", "Si","No","",Main.Imagen(3))
        If Resultado = DialogResponse.POSITIVE Then
'Guarda los cambios de los detalles de la descarga
            MySQLDetallesDescarga.ExecNonQuery("UPDATE DetallesDescarga SET BDClave_Producto = '" & Clave_Producto & "', BDNPalet_Envase = '" & Edit12.Text & "', BDCantidad = '" & Edit13.Text & "', BDLote = '" & Edit14.Text & "', BDObservaciones = '" & Edit15.Text & "', BDFoto = '" & Main.CadenaFotoNueva & "' WHERE BDClave_DetallesDescarga ='" & MyCursorDetallesDescarga.GetString("BDClave_DetallesDescarga") & "'")
        End If
        Pnl02.Visible=False
        If Pnl01.IsInitialized Then Pnl01.Visible=True
        Rellena_Cursor
    End If
End SubEl simpático del Logs me dice que una MIE… y esto.
detallesdescarga_botonguardar_click (java line: 482)
java.lang.OutOfMemoryError: Failed to allocate a 8372236 byte allocation with 3462688 free bytes and 3MB until OOM
at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:91)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:201)
at java.i
at java.i
at java.i
at java.io.PrintWriter.doWrite(PrintWriter.java:623)
at java.io.PrintWriter.write(PrintWriter.java:601)
at java.io.PrintWriter.write(PrintWriter.java:579)
at java.io.PrintWriter.write(PrintWriter.java:660)
at java.io.PrintWriter.append(PrintWriter.java:722)
at java.io.PrintWriter.append(PrintWriter.java:691)
at java.io.PrintWriter.append(PrintWriter.java:31)
at java.lang.Throwable.printStackTrace(Throwable.java:315)
at java.lang.Throwable.printStackTrace(Throwable.java:300)
at anywheresoftware.b4a.BA.printException(BA.java:262)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:191)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:157)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:153)
at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:78)
at android.view.View.performClick(View.java:5698)
at android.widget.TextView.performClick(TextView.java:10846)
at android.view.View$PerformClick.run(View.java:22565)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7230)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Me pierdo (Que inútil soy).
 
				 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		