Mobile App Entwicklung für die Ernteanalyse auf Basis von Computer Vision
Inarix ist ein französisches Unternehmen, das eine fortschrittliche, KI-basierte Plattform für alle Akteure der Agrarindustrie entwickelt. Ihre App Pocket Lab ermöglicht eine beispiellose multikriterielle Ernteanalyse, von überall und jederzeit.
Die Herausforderung
Die Erntesaison stand vor der Tür und Inarix wollte schnell seine App verbessern, um sie Kunden aus der Agrarindustrie rechtzeitig zur Verfügung stellen zu können. Angesichts des großen Umfangs ihrer Arbeit holten sie Lemberg Solutions an Bord, um ihnen bei der Erstellung einer neuen Version ihrer Kotlin-App für Android zu helfen.
Gelieferter Mehrwert
Lemberg Solutions half Inarix beim Rewriting der bestehenden App von React Native auf Kotlin und verbesserte die Funktion des Barcode-Scanners, die API-Fehlerbehandlung und die Reaktionsfähigkeit der App auf den Bildschirmen verschiedener Geräte. Die dynamische Hintergrundlogik der App und die Entwicklung des Offline-Modus waren die umfangreichsten Aufgaben, die den größten Aufwand erforderten. Unser Team hat eine Offline-Funktion entwickelt, die es der App ermöglicht, die benötigten Daten in eine Warteschlange zu stellen, so dass die Benutzer ihre KI-Analysen auch dann in der Cloud abrufen können, wenn sie eine unterbrochene oder keine Internetverbindung haben.
Der Prozess
Die Zusammenarbeit im Rahmen des Ernteanalyseprojekts war bereits das zweite Mal, dass wir mit Inarix kooperierten. Ursprünglich wünschte das Unternehmen einen erfahrenen DevOps-Ingenieur von LS, der MLOps-Aufgaben übernehmen sollte, da unsere Kompetenzen den Anforderungen des Unternehmens jedoch weitestgehend entsprachen, entschied sich Inarix, für die Neufassung der Pocket Lab-App auch unsere Android-Entwickler zu engagieren.
Das Projekt war ein Wettlauf gegen die Zeit, denn unser Kunde wollte es vor Beginn der Erntesaison abschließen. Wir erhielten Projektspezifikationen, UI/UX-Designs, Legacy-Code und Anforderungen für neue Funktionen und User Flows. Im Folgenden einigten wir uns auf eine Kollaboration zum Festpreis für das Projekt.
Die App funktioniert folgendermaßen: Die Nutzer nehmen Fotos ihrer Erntepflanzen über die App auf, die diese dann an den Server zur Analyse in der Cloud sendet und anschließend die Ergebnisse der Pflanzenqualifizierung anzeigt. Um benutzerspezifische Anwendungsfälle und Prozesse abzubilden, verwendet Pocket Lab Szenarien, die vom Server heruntergeladen werden müssen. Diese enthalten die von der App auszuführenden Schritte. Dynamische Szenarien machen auch die Benutzeroberfläche dynamisch und erweitern ihren Arbeitsbereich.
Wir begannen damit, die App von React Native auf Kotlin umzuschreiben, um ihre Performance zu verbessern und eine Offline-Modus-Funktion zu implementieren. Damit die App die Bilder reibungslos verarbeiten kann, verwendete unser Team die CameraX-Bibliothek, die neueste API für die Entwicklung von Kamera-Apps. Für ein schnelles Scannen der Barcodes schlugen wir die Verwendung des ML Kits von Google vor.
Im Offline-Modus mussten die LS-Ingenieure die Abhängigkeit der App von einer direkten Online-Verbindung mit dem Server beseitigen - die Nutzer sollten die Möglichkeit haben, die Ergebnisse später zu überprüfen. Für diese Funktion sammelt die App alle Daten, die ein Nutzer zur Verfügung stellt, einschließlich der Bilder. Sobald der Benutzer dann eine Verbindung zum Internet herstellt, lädt die App die Daten auf den Server hoch und liefert ein bestimmtes Ergebnis. Außer dass die Benutzer das Ergebnis nicht sofort erhalten, darf das Fehlen einer Internetverbindung die Arbeit des Mitarbeiters auf dem Feld nicht beeinträchtigen. Für die Integration der Offline-Funktion haben wir mithilfe der Retrofit-Bibliothek und Kotlin-Coroutinen einen Warteschlangenmechanismus entwickelt. Die Konfigurationen für den Datenaustausch wurden durch die extensive Verwendung von JSON realisiert, da die App auf eine qualitative Kommunikation mit dem Server angewiesen ist. Wir haben die Architektur der App nach dem MVVM-Entwurfmuster aufgebaut.
Wir setzten außerdem einen Upload-Manager ein, der den Status speichert und ihn erneuert, wenn die App eine Verbindung zum Internet herstellt, so dass die Aufgaben zu einer Warteschlange hinzugefügt werden können. Die Realisierung der Warteschlangen erforderte eine umfangreiche Entwicklung, so sich dass unser Android-Entwickler sogar mehrere Ideen einfallen ließ, die er später in der Open-Source-Library RetrofitRetry umsetzte. Diese Ideen halfen dem Projekt für die Entwicklung der Wiederholung von Anfragen für den Fall, dass diese fehlschlagen.
Das Projekt wurde in einzelne Etappenziele unterteilt, zu denen bei einigen auch UAT-Phasen gehörten. Für das Testen von Zwischenversionen stellte Inarix seinen Mitarbeitern Android-Smartphones zur Verfügung.
Nach Abschluss des Projekts plante Inarix, mit unserer Hilfe eine iOS-Version von Pocket Lab zu entwickeln und bereitzustellen.
Wie es funktioniert
Lemberg Solutions hat uns geholfen, unsere App Pocket Lab innerhalb kürzester Zeit von React Native auf Kotlin zu transferieren. Die Zusammenarbeit mit ihnen ermöglichte es uns, unseren Kunden neue Funktionen, einschließlich eines Offline-Modus, zur Verfügung zu stellen. Sie haben sich erfolgreich an unsere Anforderungen angepasst und ein dediziertes Team von Experten zusammengestellt, das bereit war, unsere Herausforderungen zu meistern.