Beiträge von halfbrain

    Bei Apps wie FB und Whatsapp ist eine Registrierung auch zwingend erforderlich und anscheinend scheinen genügend Leute bereit dazu und noch wesentlich mehr Daten von sich preis zu geben als sie es mit meiner App jemals könnten ;)


    Aber ich stimme dir grundsätzlich schon zu das eine Cloud immer auch gewisse Riskien bzgl. Privatsphäre mit sich bringt. Andererseits kann ja mit Diensten wie Google Analytics indirekt auch sehr viel an Nutzer Information abgezapft werden, ohne dass dieser davon Kenntnis hat.


    Bezüglich Cloud Lösungen die der User selber wählt frage ich mich dann ob der 08/15 User dieses Bedürfnis auch wirklich hat und Umsetzen kann.


    Eine Online/Offline Variante fände ich persönlich auch interessant nur erhöht das die komplexität der ganzen Datenverwaltung und Synchronisierung soweit ich das beurteilen kann nicht unwesentlich. Da ich diese App alleine entwickle und auch nebenbei Verpflichtungen habe liegt diese Umsetzung momentan nicht drin.


    Andererseits ist die App für mich auch eher eine als eine Art Proof of Concept und Referenzprojekt in Android gedacht. Ich mache mir daher auch keine Illusion dass diese App einen riesen Anklang finden wird. Hierzu hat es meiner Meinung nach einige Dinge die ich vor dieser ganzen Cloud geschichte ausbauen bzw. verbessern würde die beim normalen interessierten Nutzer sicherlich ein wesentlich grösseres Echo auslösen würden.

    Damit du zugriff zu deinem online kühlschrank erhälst. So kannst du auf mehreren Geräten mit deinem login auf deine Daten zugreifen oder du kannst dein login auch weitergeben an personen denen du ebenfalls zugriff auf deine daten gewährst. Gerade in Haushalten, die aus mehr als nur einer Person bestehen, wie WGs oder Familien, eine praktische sache. So kann z.b. jeder unterwegs schauen was zuhause noch im Kühlschrank ist bzw. auf der Einkaufsliste und fürs Abendessen etc. einkaufen.


    Anfangs hab ich die App als lokale Version mit einer SQLite Datenbank implementiert aber so sind die Daten halt nur lokal was meiner Meinung nach nicht so praktisch ist wie wenn sie Online gespeichert sind.


    Aber keine Angst wegen Passwörtern die seh nicht mal ich als Entwickler.Und Werbemails wirds sicher auch nie geben von mir ;-). Ich hätte auch FB logins verwenden können aber mir persönlich ist das immer unsympatischer wenn mein FB login mit noch mehr Daten verknüpft wird und ich meinen login einem Drittanbieter weitergebe.

    Der Drawer wird auch Navigation Drawer genannt soweit ich weiss und ist auf dem zweitletzten Bild von links her eingeschoben. Das ist jenes Element, dass du meinst, welches hineinfährt wenn man auf das Icon im Toolbar klickt oder eben von links ausserhalb des Bildschirms in den Bildschirm hinein wischt.


    Das was auf dem grünen Bild unterhalb der Kartoffel steht ist ein ItemOverflow Menu das beim klicken auf das Item erscheint.


    Styling:


    Zu 1: Ja das wär ne gute Idee werde mir das sichermal anschauen obs ähnliche Farben hat.
    Zu 2: Mal schauen ob ich die Fonts noch weiter anpassen werde...evtl ;)
    Zu 3: Wollte bewusst von der Hauptseite aus möglichst viel Funktionalität und Information, damit der User von den jeweiligen Aktionen möglichst wenige Klicks entfernt ist. Ich persönlich bevorzuge Software wo ich mit wenigen Klicks ans Ziel komme und wo ich auch von mehreren Orten mit wenigen Klicks ans Ziel komme. Deswegen bietet der Navigation Drawer auch von jeder Activity aus möglichst viel Funktionalität mit wenigen Klicks.
    Zu 4: Hätte ich auch am liebsten aber es ist schwierig solche Iconsets zu finden die alle diese Icons beinhalten. Oder hast du eine Adresse?

    Toolbar:
    Im Startbildschirm wurde aus Platzgründen darauf verzichtet ;)


    Buttons:
    Im letzten Bild siehst du den aktivieren Drawer. Von dort aus hast du wiederum wie auch vom Starbildschirm aus die Möglichkeit die 6 "Grundactivities" aufzurufen.Eine davon wäre Neues Produkt wo du im Produkt Editor landest. Nach dem erstellen eines Produktes im Produkt Editor landet es direkt in der Produkt Liste. Deine Idee des Buttons in der Toolbar würde ja wiederum auch den Produkteditor aufrufen. Wäre sicherlich auch eine Idee ich habe aber bewusst nicht mehr in die Toolbar packen wollen, da schon ein Button für den Barcode Scan verwendet werden musste.


    Styling:
    Danke für den Vergleich mit der Website :P ganz so schlimm hab ich mein grafisches Design jetzt nicht empfunden, aber vielleicht sieht mein Design für dich so aus wie die Website für mich :-). Aber danke für deine Info bzgl. Material Design. Wie schon gesagt wollte ich das ganze bewusst flippiger und weniger steril als die klassischen Apps im Materialdesign machen. Meiner Meinung nach hat Essen und Lebensmittel auch etwas verspieltes und rohes mit Ecken und Kanten.
    Die Farben wurden nicht ohne Hintergedanken unterschiedlich gewählt. Sie sollen dem Benutzer bei der Orientierung in der App helfen. Bei Rot weiss er das er im Bereich des Kühlschranks ist, bei Grün ist er im Bereich der Produkte die er definiert hat, gelb für alles was mit der Einkausliste zu tun hat und Blau für alles was mit den Rezepten zu tun hat.


    Aber falls ich noch mehr negative Rückmeldungen bezüglich des Designs bekommen sollte bin ich auch nicht abgeneigt das ganze zu "sterilisieren" ;) Also falls andere das Design auch so schlecht finden wie ChampS dürft Ihr euch gerne melden.

    Barcode Scanner:
    Barcodescanner ist integriert allerdings musst du beim ersten Mal dein Produkt zuerst selber definieren, was dir aber auch Freiheiten lässt.


    Toolbar:
    Eigentlich besitzen alle eine Toolbar in der Einkaufsliste ist einfach das Menu noch nicht aktiv.


    Button fürs hinzufügen:
    Wäre eine Möglichkeit. Allerdings habe ich in jeder Activity den Drawer auf der Seite zur Verfügung wo du mit höchsten zwei Klicks bzw Wischen und Klicken auch schon die gewählte Aktion ausführen kannst


    Zum Styling:
    Material Design wäre sicherlich was tolles nur wollte ich zum einen eine möglichst grosse Abwärtskompatibilität bis Android 4.1 was meines Wissens nach mit Materialdesign nicht möglich gewesen wäre. Zum anderen wollte ich auch was flippiges, aber ich kann durchaus verstehen wenn das Styling nicht allen gefällt ;) Was genau gefällt dir denn am wenigsten daran ?


    Technologien:
    Für den Barcode hab ich die API von Zxing verwendet Link
    Die Daten habe ich alle in einer ersten Offline Version in eine SQLite Datenbank verpackt, mich dann aber trotzdem entschieden das ganze noch als Online Version umzubauen. Als Server Lösung hab ich mich für Parse entschieden aufgrund des günstigeren Preises. Ansonsten wäre Firebase meine Wahl gewesen.

    Ich arbeite schon seit längerer Zeit an meiner eigenen App (Foodmanager) und habe dazu auch schon einige Fragen im Forum gestellt und beantwortet bekommen wofür ich mich nochmals bei allen beteiligten bedanken möchte.


    Nun ist es bald soweit und ich möchte die App im Playstore veröffentlichen. Bevor ich dies aber tue möchte ich interessierte hier im Forum dazu einladen am Betatest teilzunehmen. Unter folgendem Link könnt ihr euch für den Test eintragen und erhaltet die Möglichkeit die APK der App herunter zu laden. Es wäre von Vorteil wenn ihr automatische Updates zulassen würdet, da ich die APK laufend anpassen werde.


    Es würde mich sehr freuen wenn der eine oder andere hier im Forum daran teilnehmen würde. Allfällige Fehler, Kritik, oder Anregungen könnten gerne hier im Thread erwähnt werden oder per Mail an [email protected] gesendet werden.



    [Blockierte Grafik: http://i.imgur.com/sp4q7bvh.png][Blockierte Grafik: http://i.imgur.com/25BbHhlh.png]
    [Blockierte Grafik: http://i.imgur.com/XbXyxWQh.png][Blockierte Grafik: http://i.imgur.com/K8uCGXqh.png][Blockierte Grafik: http://i.imgur.com/QRVuMtRh.png][Blockierte Grafik: http://i.imgur.com/6BjMX8Jh.png][Blockierte Grafik: http://i.imgur.com/vwNBFGsh.png][Blockierte Grafik: http://i.imgur.com/BdAULBih.png]


    Kurze Beschreibung zur APP:


    Foodmanager hilft Dir den Inhalt deines Kühlschranks jederzeit optimal im Überblick zu haben und das auf mehreren Geräten gleichzeitig. Du kannst selber eigene neue Produkte erstellen und diese in deinem persönlichen Kühlschrank einlagern. Foodmanager informiert dich rechtzeitig darüber wann Produkte im Kühlschrank ablaufen. Sollten dir Produkte fehlen im Kühlschrank so kannst du jederzeit eigene Einkaufslisten erstellen. Foodmanager bietet auch die Möglichkeit eigene Rezepte aus deinen eigenen Produkten zu kreieren. Solltest du alle Zutaten für ein Rezept im Kühlschrank haben so informiert dich Foodmanager darüber. Für alle Weightwatchers-Fans berechnet Foodmanager zu jedem Produkt und zu jedem Rezept die Weightwatchers Punkte automatisch. Veganer und Vegetarier können ihre Produkte entsprechend kennzeichnen und Foodmanager erkennt anhand der Zutaten eines Rezepts automatisch ob ein Gericht vegan oder vegetarisch ist.


    Technologien:


    Für den Barcode hab ich die API von Zxing verwendet Link
    Online Datenbanken mittels Parse.com


    PS: Das Design ist teilweise noch nicht final und die Bilder werden selbstverständlich noch durch lizensierte Versionen ersetzt ;)

    Was ist der einfachste Weg um Daten einer Android App zwischen mehreren Geräten bzw. Nutzern (ca. 1-5) ohne eigenen Server untereinander zu Synchronisieren?


    Die Daten bestehen aus einer SQLite Datenbank und Fotos die ca. 200kb gross sind.


    Ich hab im Netz mal was gelesen, dass es früher eine Möglichkeit gab dies über die Dropbox API zu machen. Mittlerweile soll diese Möglichkeit aber nicht mehr weiter von Google unterstützt werden.

    Ja ich glaube das mit den Wiederholungen könnte daran liegen das der ArrayAdapter nicht weiss welche View innerhalb deiner ListView bereits gebildet wurde.


    Ich meinte mich zu erinnern das die Holder des BaseAdapters dieses Problem lösen. Ich glaube das entscheidende passiert in diesem Teil des Baseadapters.

    Java
    if (convertView == null) {
                convertView = inflater.inflate(R.layout.layout_list_item, parent, false);
                mViewHolder = new MyViewHolder(convertView);
                convertView.setTag(mViewHolder);
            } else {
                mViewHolder = (MyViewHolder) convertView.getTag();
            }
    }


    Vielleicht würde es sich auch lohnen eine DatabaseHandler Klasse zu implementieren mit der du auf deine Datenbank zugreifst. Vor allem wenn deine App noch an Umfang zunehmen soll und du noch andere Dinge mit deinen Daten anstellen möchtest. Ein solcher Database Handler würde dann quasi alle wichtigen Methoden zur Manipulation(Hinzufügen, Löschen, Sortieren, Filtern etc..) beinhalten. Die einzelnen Methoden geben dir dann einen Cursor als Rückgabewert mit dem du Zugriff zu deiner Datenbank bekommst. Mit dem jeweiligen Cursor gehst du dann quasi durch deine Tabellen durch und pickst dir die gewünschten Werte heraus. Die gleichen Cursor kannst du dann auch im BaseAdapter für den Zugriff auf die Daten bzw. den Aufbau der Liste verwenden. Falls dich das interessiert solltest du im Netz genügend Beispiele und Anleitungen finden wenn du nach SQLite und Databasehandler suchst.


    z.b. hier http://www.androidhive.info/20…sqlite-database-tutorial/

    Hatte mal ein ähnliches Problem...


    Wieso speicherst du mit dem OnClickListener der jeweiligen RadioCheckBox nicht gleich den Status in deine Datenbank? Dann könntest du innerhalb deines Adapters beim Aufbau der ListView die jeweiligen Daten bzgl. Status direkt aus deiner Datenbank ziehen wenn du den entsprechenden Eintrag aufbaust. Du müsstest dann nur beim Ausführen des OnClickListeners die Liste nochmals refreshen damit sie auch den jeweils aktuellsten Stand anzeigt.


    Falls du Zeit hast würde ich mir evtl. auch überlegen einen BaseAdapter anstelle des ArrayAdapters zu verwenden.


    http://www.pcsalt.com/android/…sing-baseadapter-android/


    Ich hatte auch ein paar grafische Probleme bei ListViews wie Views die wiederholt angezeigt wurden. Mit der Verwendung eines BaseAdapters konnte ich viele Probleme beseitigen. Kann dir jetzt ehrlich gesagt so spontan nicht sagen wieso der BaseAdapter diese Probleme gelöst hat oder ob es nur Zufall war. Eventuell lohnt es sich ja für dich dir das ganze mal anzuschauen.

    Situation:


    Eigene Camera-Activity, die gemäss einer Vorlage aus einem Buch zusammen gebaut wurde (siehe Code im Anhang). Zur Activity hab ich ein UI gemacht, welches aus einem SurfaceView und drei Buttons (Ok,Retry,Capture) besteht.


    Ziel:


    Kamera soll auf dem Surface View angezeigt werden und so lange fokussieren bis das Bild scharf ist. Mit dem Button "Capture" soll dann ein scharfgestelltes Bild aufgenommen und gespeichert werden.


    Problem:


    Kamera fokussiert ständig und stoppt nicht nach dem das Bild scharf gestellt ist.


    Weiss jemand wie ich dieses Problem lösen kann? Hab schon gegoogelt aber nichts schlaues gefunden. Meistens wird bei den Einträgen in Foren das alte Camera API benutzt wo noch die Methode onAutoFocused() vorhanden ist. Kann man irgendwie Abfragen ob die Kamera fokussiert hat und das Bild scharf gestellt wurde und die Fokussierung stoppen?


    Der Rest also die Aufnahme bzw. Anzeige der Kamera sowie die Speicherung des Bilds funktioniert einwandfrei nur leider sind die Bilder nicht scharf. ||

    Ich hab das Problem gefunden und eine Lösung!


    Anscheinend ist der Cursor welcher der bindView()-Methode übergeben wird nicht in der Lage auf die Foreign-Key Spalten zu zugreifen.
    Ich habe jetzt einen zweiten internen Cursor innerhalb der Methode erzeugt, mit welchem ich durch Benutzung der selbsterstellten getIngredientNeededItem()-Methode an alle Einträge gelange.


    Wieso der Cursor dazu nicht in der Lage ist weiss ich nicht. Vielleicht kann jemand der erfahreneren Programmierer unter euch genauer erklären wieso das so ist. Würde mich noch interessieren.





    Erstellen der Datenbank die den Foreign Key beinhaltet


    Erstellen der Datenbank auf dessen ID referenziert wird


    Zugriff im bindView eines ItemAdapters der von CursorAdapter erbt mit welchem ich die Daten extrahiere um sich nachher in einer ListView darzustellen. Die Exception tritt bei Zeile 15 auf. Wie gesagt kann ich mit keinem einzigen getXXX() Befehl auf die Spalte zugreifen. Ich hoffe der Ausschnitt reicht. Der Rest des Codes ist meiner Meinung nach nicht relevant. Ansonsten sagt mir wenn ihr noch was braucht. Danke schon mal für die Durchsicht.