Project description
The person hired for this position will be responsible for the development and maintenance of Android applications and native C++ integration layers for a broad range of video collaboration devices and related products. Software development will be related to the implementation of new features, the design and development of its architecture, as well as maintenance of existing solutions.
Responsibilities
- - Design, implement, and maintain Android applications (Java/Kotlin) that surface CV/ML-powered features (such as people-tracking, framing, and scene understanding) across our conference room camera product line.
- Build and extend the JNI integration layer connecting Android app logic to our C++20 native libraries, ensuring clean API boundaries, safe memory management, and correct threading semantics across the language boundary.
- Collaborate with CV/ML researchers and C++ engineers to expose new algorithms and pipeline outputs to the Android layer, including debug visualizations and parameter tuning interfaces.
- Design and implement IPC interfaces between the new Android application and the existing app ecosystem, ensuring reliable and efficient data exchange across process boundaries.
- Debug and optimize multithreaded, real-time video processing pipelines running on Android hardware, bridging native and managed runtime concerns.
- Write and maintain unit and integration tests for both the Android and native layers to ensure reliability across multiple hardware products.
- Participate in code reviews and uphold established engineering standards on both sides: modern C++ idioms (RAII, exception-safe error handling) and Android best practices (lifecycle awareness, threading, resource management).
SKILLS
Must have
- - 5+ years IT experience
- 5+ years experience with system or framework implementation
- Strong experience with Android application development (Java and/or Kotlin)
- Experience with Android IPC mechanisms (AIDL, Messenger, ContentProvider, BroadcastReceiver, or similar) for inter-process data exchange between Android applications
- Strong experience with native C++ development (C++11 or newer, strictly required)
- Hands-on experience with JNI - designing and maintaining the Java/native boundary
- Experience with the Git version control system
Nice to have
- Experience developing and building projects on Linux
- Experience creating and running projects on Docker
- Experience with CMake for build configuration
- Experience with gtest/gmock for C++ testing
- Experience with the Conan package manager
- Experience with Qt