1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Bild nach dem Speichern nicht ladbar

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von BiGfReAk, 17.06.2011.

  1. BiGfReAk, 17.06.2011 #1
    BiGfReAk

    BiGfReAk Threadstarter Erfahrener Benutzer

    Beiträge:
    156
    Erhaltene Danke:
    26
    Registriert seit:
    13.03.2010
    Hi
    ich hoffe einer kann mir helfen.
    Ich mache ein Bild mit der Kamera und speicher es ab.
    Eine andere Klasse öffnet diese und analysiert es.
    Soweit die Theorie. In der Praxis hab ich ein komisches Problem.
    Wenn ich einfach nur ein Bild mache und es speicher funktioniert es fehlerfrei.
    Aber wenn ich es nach dem speichern öffnen will kommt ein FC (FileNotFoundException) und die App schließt sich. Die Datei ist dann auch nicht auf der Karte gespeichert.
    Woran liegt das? Warum kann ich es nicht öffnen? Irgendwie habe ich das Gefühl das Bild wird erst "richtig" gespeichert wenn ich die App verlasse, daher kann ich es nicht laden und es landet auch nicht auf der Karte nach dem FC.
    Wie kann ich das Problem lösen?
    Ich speicher das ganze so:

    Code:
    
    public static boolean saveByte(byte[] bild, String Name){
    		String file = "sdcard/DCIM/" + Name;
    		FileOutputStream outStream = null; 
    		try{
    			Log.i("Speichern", "Bild wird gespeichert: " + file);
    			outStream = new FileOutputStream(file);
    			outStream.write(bild);
    			outStream.close();
                return true;
    		}catch(Exception e){
    			return false;
    		}
    	}
    
    
    Laden will ich das ganze so:
    Code:
    Bitmap Pic = BitmapFactory.decodeFile(Datei);
    
    Ich hab auch schon sleeps eingebaut mit großzügigen 10 Sekunden, dachte vielleicht arbeitet es einfach nur langsam, aber das half nicht.

    Ich bin noch ziemlicher Anfänger, kann sein das es ein ziemlich banales Problem ist. :o
     
  2. computer_freak, 17.06.2011 #2
    computer_freak

    computer_freak Gewerbliches Mitglied

    Beiträge:
    156
    Erhaltene Danke:
    7
    Registriert seit:
    14.12.2010
    Du solltest nach exceptions pruefen in saveByte!

    Machst du das Bild selbst, sprich intern in deiner app oder rufst du dazu einen fremden intent zur Hilfe?
     
  3. BiGfReAk, 17.06.2011 #3
    BiGfReAk

    BiGfReAk Threadstarter Erfahrener Benutzer

    Beiträge:
    156
    Erhaltene Danke:
    26
    Registriert seit:
    13.03.2010
    Ich hab ne eigene Klasse geschrieben die Fotos macht.
    Welche Exception vermutest du beim Speichern? Wenn ich das Bild einfach nur speichern will funktioniert das ja. Aber wenn ich vorhabe es danach zu öffnen findet es das Bild nicht. Eine Exception tritt beim Speichern nie auf. Nur beim einlesen des Bildes (NotFound).
    Kanns sein, dass das Bild erst nach dem Beenden wirklich auf die Karte geschrieben wird und vorher nur in ne Art Cache? Ich kenne mich da mit dem Android System nicht so sehr aus.
     
  4. computer_freak, 17.06.2011 #4
    computer_freak

    computer_freak Gewerbliches Mitglied

    Beiträge:
    156
    Erhaltene Danke:
    7
    Registriert seit:
    14.12.2010
    Exceptions darf man auf keinen Fall JE ins Lehre laufen lassen, denn so uebersieht man leicht Fehler!
    Dass das Bild noch in einem Cache vorliegt, darf nicht sein, denn die Methode "close()" garantiert dir, dass alles geflasht wurde.

    Aus diesem Grund checke bitte nach Exceptions in saveByte, das ist die einfachste logische Schlussfolgerung.
    Bist du auch absolut sicher, dass bei BitmapFactory.decodeFile der korrekte Pfad uebergeben wird?
     
  5. BiGfReAk, 18.06.2011 #5
    BiGfReAk

    BiGfReAk Threadstarter Erfahrener Benutzer

    Beiträge:
    156
    Erhaltene Danke:
    26
    Registriert seit:
    13.03.2010
    In der saveByte kommt keine Exception weil der nicht mal das PictureCallback aufrufen kann und folglich nie das saveByte aufgerufen wird.
    Ich habe das Gefühl da kommt was in der Reihenfolge durcheinander. Ich rufe zwar erst das Foto schießen auf und dann das speichern und am ende das einlesen, aber scheinbar macht es das Foto und versucht es sofort einzulesen obwohl es nicht mal gespeichert wird.
    Ich versteh das alles nicht mehr, ich hab schon alles durchprobiert.
     

Diese Seite empfehlen