About the role
We build the HyperView handheld hyperspectral medical imaging camera — a clinical device that captures tissue oxygenation / hemoglobin maps and exports them as DICOM. We're hiring a Java/Android engineer to own and evolve the camera's on-device application across three fronts: (1) maintain and extend current functionality, (2) modernize a long-lived legacy Android/NDK stack to current versions, and (3) integrate new and upgraded hardware as the device platform advances. This is a hands-on, full-stack-on-the-edge role spanning the Android app layer, native (JNI/C/C++) imaging and device-control code, and the embedded hardware boundary — on a regulated medical device where correctness and traceability matter.
The platform you'll work on
- Product: HyperView — handheld hyperspectral clinical imaging camera; DICOM output.
- Compute board: NXP / Freescale i.MX6 (SABRE-SD class, ARM Cortex-A9; sabresd_6dq).
- Operating system: Android 4.3 "Jelly Bean" (API level 18) — rooted, kiosk-locked.
- Peripherals / hardware: Atmel UC3 capture/optics board (exposed to Android over USB mass storage), GPIO-driven illuminator / optics-power / capture trigger, IR/thermal sensor, and a calibrated optical path.
- App stack (current / legacy): Java (JDK 8); Android SDK 23, build-tools 27.0.3; Gradle 4.6–4.10.1 + Android Gradle Plugin 3.1–3.3; NDK r16b; native C/C++ via JNI (imaging algorithm, libhm_client, libIRSensor, device-helper utilities); pre-AndroidX android.support libraries; SQLite; the Imebra DICOM toolkit; Timber.
- Ecosystem: a companion Android app (DicomSaver) and a Windows .NET/WPF imaging suite that talks to the device over WPD/MTP.
What you'll do
- Maintain, debug, and extend the on-device Android application (Java and the native JNI layer).
- Lead the modernization: raise the Android API level, migrate android.support → AndroidX, upgrade Gradle/AGP/NDK and third-party libraries, replace deprecated APIs, and re-establish clean, reproducible builds — without regressing clinical behavior or calibration integrity.
- Integrate new and upgraded hardware being added to the device: bring up sensors/boards/illumination/compute and write or adapt the Android↔hardware glue (JNI, GPIO, USB, serial/I²C/SPI), validated end-to-end against the imaging pipeline.
- Work fluently across the native boundary: read, debug, and modify performance- and hardware-sensitive C/C++; manage NDK toolchains and reproducible native builds.
- Debug on real hardware: adb/logcat, root (su), filesystem mounts, kernel logs (dmesg), USB/storage enumeration.
- Uphold medical-device rigor: verification, documentation, and change traceability.
Required qualifications
- Strong Java and Android engineering, genuinely comfortable across both legacy and modern Android.
- Demonstrated experience working inside legacy Android codebases — Android 4.x / Jelly Bean era, android.support libraries, old Gradle/AGP, NDK r16-era toolchains. You can navigate, build, and debug an old stack, not just greenfield modern apps.
- A proven track record modernizing legacy Android apps: API-level upgrades, AndroidX migration, Gradle/AGP/NDK upgrades, dependency and deprecation remediation — executed methodically and regression-safe.
- Android NDK / native development: C/C++, JNI, ndk-build/CMake; ability to read and modify imaging and device-control native code.
- Embedded / hardware integration: integrating peripherals over GPIO/USB/serial/I²C/SPI; running Android on custom ARM boards (i.MX6 / NXP a strong plus); comfort with rooted/AOSP devices and board bring-up.
- Solid on-device debugging discipline (adb, logcat, dmesg, mounts) and reproducible-build hygiene.
Strongly preferred / bonus
- Medical-device or other regulated / safety-critical software (IEC 62304, ISO 13485, FDA QSR / Design Controls).
- DICOM and/or the Imebra toolkit; medical or scientific imaging, computer vision, or hyperspectral/multispectral imaging.
- AOSP / BSP / custom-ROM work on NXP i.MX or similar SoCs; Linux kernel / device-driver familiarity.
- Kotlin; modern Android architecture; CI for Android + NDK.
- Windows/.NET interop experience (for the companion PC suite).
Pay: $90,000.00 - $120,000.00 per year
Work Location: Remote
Read authentic reviews with a Glassdoor account. Only apply to jobs you love.