# Foto-app hält galerie nicht aktuell



## SuchANewbie (17. Jul 2014)

Hallo, ich habe eine Foto-App gebaut, die meine geschossenen Bilder in einem anderem ordner abspeichert. Die Bilder lass ich mit der android galerie anzeigen, was auch super funktioniert, ausser dass es mir die neuesten Bilder erst nach einiger Zeit angezeigt wird..
Ich konnte bisher nicht rausfinden warum dies so ist.

Ich habe diesen Code, direkt nachdem das Foto geschossen und gespeichert wird sowie wenn die Galerie geöffnet wird

```
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://gallerie_app/")));
```

scheint aber nicht zu funktionieren.

Jemand eine Idee, wie ich die Galerie immer aktuell halten kann?

Gruß
Newbie


----------



## SuchANewbie (21. Jul 2014)

Weiß keiner etwas? :shock:


----------



## dzim (21. Jul 2014)

Ich hätte ja gedacht, dass du dir nur das Medienverzeichnis holen musst und gut ist. Aber damit hatte ich noch nichts zu tun, also tendiert mein Einfallsreichtum hier tatsächlich gegen 0.


----------



## SuchANewbie (21. Jul 2014)

Ja das dachte ich auch, aber die Galerie wird nur aktualisiert wenn ich mein handy an/aus-schalte, das Handy USB-gekoppelt hatte o.ä. 
Durch Broadcast wird aktualisierung erzwungen, aber dies dauert zwischen 20 und 60 sekunden

Hat sich aber leider schon wieder erledigt, da ich die Galerie so nicht verwenden kann/darf/soll^^

Noch eine Abschlussfrage:

```
String [] IMAGES = getFilePaths().toArray(new String[getFilePaths().size()]);
```

In getFilePaths (ArrayList) sind meine Pfade zu Bildern gespeichert. Kann ich mit dem oben geschriebenen Code den Inhalt in ein String Array umwandeln?


----------



## dzim (21. Jul 2014)

ich glaub du musst noch das leere "{}" anhängen, aber sonst: ja. Wieso nicht.
Nur eine Frage: Wozu? Du hast doch schon die ArrayList, warum dann noch mal extra Speicher mit dem Array belegen?


----------



## SuchANewbie (21. Jul 2014)

Habe mir mal den Universal image loader angesehen, in seinem Sample möchte er einen befüllten Stringarray, da dachte ich mir: "Hey wieso wandelst du deine ArrayList, wo alle deine Pfade gespeichert sind, nicht in ein String array um"
Bin ich überhaupt auf dem richtigen Weg? Oder kann ich vielleicht mit sowas in die Richtung:

```
"file:///" + Environment.getExternalStorageDirectory() + "/gallerie_app/"
                    + File.separator
```
etwas erreichen? Aber ich glaube mit der Lösung kann ich nicht automatisch aktualisieren lassen wenn neue Bilder hinzukommen, liege ich da richtig?

Falls ich einen grundlegenden Fehler habe bitte darauf hinweisen.


----------



## dzim (21. Jul 2014)

Nur so als Frage: Warum machst du das so kompliziert mit dem File-Dingens?
Warum nicht einfach [c]File f = new File(Environment.getExternalStorageDirectory(), "gallerie_app");[/c]? Frage am Rande: "gallerie_app" ist der Name, den du gewählt hast, oder?
Falls du den URI-String brauchst bietet *File* immer noch die Methode _#toURI()_...

Darüber hinaus solltest du auch in Android (solange deine Anwendung läuft) auch einen Observer verwenden können:
FileObserver | Android Developers
Damit solltest du (wenn er richtig konfiguriert ist), das Galerie-Verzeichnis überwachen können und über neue Bilder informiert werden.


----------



## SuchANewbie (22. Jul 2014)

"gallerie_app" ist der Name meines Ordners wo die Bilder gespeichert werden. Diesen möchte ich auslesen lassen und (Universal Image Loader greift auf ein String array auf die Pfade zu, die im Sample manuell/händisch eingepflegt wurden) automatisch in ein String array einlesen lassen

Verstehst du was ich tun möchte? Habe die Pfade bisher in einer ArrayList gespeichert, kann ich diese in ein String Array umwandeln oder ist das nicht möglich?

Ist das so verständlich was ich tun möchte?


----------



## SuchANewbie (22. Jul 2014)

Auch dieses Problem habe ich lösen können..

Fehlt eigentlich nur noch, dass die Images die mal gecached sind auch da bleiben, bzw im Hintergrund schonmal geladen werden sollen und nicht erst wenn ich nach unten scrolle. Einmal gecached sollen sie auch da bleiben bis der cache gelöscht wurde. ist dies möglich?


----------



## dzim (23. Jul 2014)

Das sie Asynchron nachgeladen werden macht schon sinn. Ich denke, hier wird ein Adapter verwendet. Das spart Speicher!


----------

