This role will integrate our unique, cutting edge camera into Android and perhaps other mobile and embedded operating systems. This involves creating and controlling device drivers, security features, imaging and camera frameworks, complex multi-threaded user-space driver daemons, Camera HAL integration or extension, and writing test applications.
The Android Platform Software Engineer will work on our Android platform integration, including device driver modification, multiple Android camera framework integration, application development for test, demo, and initial products. Key desired skills include thorough experience developing with Java (Dalvik), C++, Android or Linux kernels, camera frameworks, imaging, Android debugging, and network code.
You are a self-directed, problem-solving embedded / mobile developer who is comfortable with application, operating system, kernel driver, and hardware interface spaces. You understand and are comfortable with logging, tracing, possibly hardware assisted debugging (ICE, JTAG, scopes, and logic analyzers), chipset manuals, and can focus on relevant information in extensive specs for modern chipsets.
Requirements Concentration Summary – Candidates should cover one or more of the first three roles. The fourth role might be possible for just the right person.
1. QCamera Role: C++, Android, Camera HAL / Qualcomm QCamera Version 2, Java, Linux, drivers, experienced developer of complex systems / problem solving. Creating and extending soft ISP and related modules in the QCamera2 user-space device driver framework.
2. Camera HAL3 Role: Extensive Android Camera framework experience, preferably with Android Camera HAL3 (4.4) development
3. Qualcomm Android Role: Well-versed in Qualcomm Android systems and build process, system/device driver development and debugging, C++, Linux. Liason with Qualcomm and other suppliers and partners
Extensive experience with both C & C++
Minimally, Android development should be at systems level in a significant way
Java library and app development experience, preferably on Android. Should include JNI / NDK experience.
Have worked on some type of device driver or similar low-level systems code
Has done something with one or more of: cameras, imaging, graphics, GPU (OpenGL, CUDA, DirectX)
Comfortable and functional with: Linux, gmake, CMake, gdb, git, scripting languages (bash, Python, Lua, and/or NodeJS)
Android device drivers, camera drivers, camera framework, imaging or camera apps
Optimization of algorithms on real systems
Experience with iOS, WP8, BlackBerry OS, Linux, Windows, MacOSX
Qt/C++ app experience
C++11, advanced Java, and other modern techniques and libraries
OpenCV, machine learning, machine vision, image processing
Familiar as a developer with Linux, MacOSX, and Windows 7