GuiKit Mobile is a C++20 Mobile UI & Application Framework built on top of guikit (main) and keel::mobile (keelcpp/mobile), targeting Android (via Android NDK ASensorManager, Camera2 NDK, AAudio NDK, and JNI) and iOS, alongside a full Desktop Mobile Workstation Simulator.
| Header / Class | Responsibility | Hardware Backend (keel::mobile) |
Desktop Simulator Backend |
|---|---|---|---|
SensorManager |
9-DOF IMU (Accelerometer, LinearAcceleration, Gravity, Gyroscope, Magnetometer, RotationVector attitude quaternion/Euler), Barometer (hPa + ISA altitude), AmbientLight (lux), Proximity, StepCounter + lock-free frame snapshots & time-series ring buffers |
keel::SensorManager (Android NDK <android/sensor.h> ASensorManager / ALooper) |
Real-time 6-DOF flight/motion & multi-harmonic vibration synthesizer |
CameraService |
Multi-camera enumeration (Back/Front), live RGB888 (guikit::ImageViewData) & GPU texture streaming, 256-bin R/G/B/Luma histograms, Torch/Flash control, Exposure EV, Digital Zoom, Snapshot capture |
keel::CameraService (Android Camera2 NDK ACameraManager / AImageReader) |
Physical Webcam (SDL_Camera) + fallback SMPTE/Siemens optical test camera |
LocationService |
WGS-84 GNSS telemetry (Lat, Lon, Alt, accuracy, speed in m/s & knots, true bearing), Haversine distance, breadcrumb track recording for guikit::MapView |
keel::LocationService (Android LocationManager JNI gps / network) |
Figure-8 patrol route generator over embedded demo_bay.geojson S-57 chart |
AudioCapture |
Low-latency PCM microphone capture, RMS/Peak dBFS metering for guikit::LevelMeter, and 1024-point Hann FFT spectrum slices for guikit::WaterfallView & guikit::SignalView |
keel::AudioCapture (Android NDK AAudio <aaudio/AAudio.h>) |
Windows WinMM waveIn hardware microphone or calibrated multi-harmonic + noise DSP generator |
SystemBridge |
Runtime permissions (Camera, RecordAudio, FineLocation, BodySensors), tactile Haptics (Vibrator), SafeAreaInsets, Battery telemetry, Native Toast & Soft Keyboard (IME) |
keel::SystemBridge (Android JNI BatteryManager, Vibrator, Toast, checkSelfPermission) + SDL_GetWindowSafeArea |
Windows GetSystemPowerStatus, simulated cutout insets, and permission callbacks |
TouchGestureRecognizer |
Multi-touch finger tracking, kinetic/inertial scroll momentum, two-finger Pinch-to-Zoom, and Long-Press recognition |
SDL_EVENT_FINGER_* |
Touch & mouse gesture translation |
MobileRuntime |
Unified coordinator managing all subsystems and mobile app lifecycle (OnEnterBackground / OnEnterForeground / Android Back button) |
Full Android lifecycle | Desktop workstation mode |
MobileWindow |
Mobile & tablet application host (IsTablet(), IsPortrait(), GetSafeAreaPadding(), RenderStatusBar(), RenderBottomNavigationBar(), RenderSimulatorDrawer()) |
SdlMobileWindowBackend |
Resizable desktop simulator window |
:: Configure, build, and run unit tests
scripts\windows\desktop-build.cmd
:: Build and launch the interactive Mobile Sensor & Camera Lab
scripts\windows\desktop-run.cmdNo manual Android Studio installation is required. Run android-sdk-install.cmd once to automatically download Portable OpenJDK 17, Google Android Command-Line Tools, Platform 34, and Android NDK r27 LTS into the standard Windows SDK path %LOCALAPPDATA%\Android\Sdk (and configure ANDROID_HOME / ANDROID_NDK_HOME), then build and deploy:
:: Step 1: Install/verify Android SDK & NDK in %LOCALAPPDATA%\Android\Sdk
scripts\windows\android-sdk-install.cmd
:: Step 2: Cross-compile libmain.so and package signed guikit_mobile_demo.apk
scripts\windows\android-build.cmd
:: Step 3: Install APK via ADB onto a connected Android phone, grant permissions, and launch
scripts\windows\android-install.cmd