On developing the Leica FOTOS companion app

Timo Josten

Timo Josten – VP Software Engineering

Four weeks ago at Photokina in 2018, Leica Camera AG announced what turned out to be a game changer in the industry: Leica FOTOS app, a companion app for Android and iOS smartphones that works with almost every connected Leica camera on the market.

Now, with the app being available to the public, we’re happy to give an insight into the journey from the idea of having one Leica app to the first public version of the product.

Pairing your Leica camera with your smartphone is now easier than ever before with the Leica FOTOS app

Developing an app natively for iOS and Android platforms that works with 12 different camera models is, as you might imagine, quite a challenge. On the one hand we wanted to create a stunning user interface focussing on simplicity and usability while featuring subtle and natural animations, on the other hand we needed to solve the technical challenges to ensure that for the user the app works exactly as expected for each and every Leica camera. We at grandcentrix have long history with building apps for connected products in all different kinds of industries. With our experienced interdisciplinary development teams and in-depth knowledge of smart products, we were proud and happy to face the challenge to create an outstanding experience for Leica Camera AG.

Leica FOTOS image transfer

Creating a brand-new app to work with many different camera models starts with careful thinking. At the beginning of the project and during the whole development time, our team of technical solution architects compiled concepts and specifications for our engineering teams to work with. The first important question to be asked was how to efficiently decouple what we call the business logic of the app (which takes care of everything camera-related) from the user interface in a way so that both Android and iOS can benefit from it.
What powers the Leica FOTOS apps today is a cross-platform Software Development Kit (SDK) written in C++, compiled so that it can be natively used on both Android and iOS, robust and easily extendable so it stands as a solid foundation for the first and of course future versions of the apps. The SDK (we lovingly named it libleica) encapsulates the camera and protocol specifics found within the line of various Leica cameras and exposes an easy-to-use, consistent and camera-agnostic API to the application layer (which is the Leica FOTOS app on Android and iOS as of today).

Leica FOTOS Camera Setting

Using the SDK our app developers were able to focus on creating world class User Interfaces exploiting the best native features the underlying platforms offer. All the demanding low-level communication each camera requires is solved by and encapsulated in the SDK. This also leads to a clean separation of concerns, avoidance of duplicate code and significantly reduced testing effort. Looking deeper under the hood, a big help was the Djinni framework. Originally developed and open sourced by the Dropbox team, Djinni dramatically simplifies mobile cross-platform development in C++ and has as such been used successfully in several grandcentrix projects. It comes with a simple to use Interface Definition Language (IDL) supporting clean API definitions, which are used across all languages (C++, Java/Kotlin, Objective-C/Swift). Djinni automatically generates header and glue code from the IDL files, which serves as the API interface between SDK and application layer. Low level annoyances such as implementing of and dealing with JNI are a thing of the past.

So it is grandcentrix’ cross-platform SDK approach which in the end fulfills the “one app for all your Leica cameras” promise. And it doesn’t stop there! Since the SDK is build with C++ it is naturally not restricted to mobile solutions, but can as well be compiled on other platforms.

Sounds interesting? We’re very happy to talk with you about internet of things and smart products.