GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - Foxpace/SensorBox: Android app to measure sensors

BranchesTags
Open more actions menu

Latest commit

 

History

115 Commits
115 Commits

Folders and files

NameName
Last commit message
Last commit date
AppImages
AppImages
 
 
WearOsLib
WearOsLib
 
 
app
app
 
 
config/detekt
config/detekt
 
 
core-common
core-common
 
 
core
core
 
 
docs
docs
 
 
fastlane
fastlane
 
 
gradle
gradle
 
 
recording-core
recording-core
 
 
scripts
scripts
 
 
sensorservices
sensorservices
 
 
shared-resources/branding
shared-resources/branding
 
 
store/google_play
store/google_play
 
 
tools/emulator
tools/emulator
 
 
wear
wear
 
 
.gitignore
.gitignore
 
 
AGENTS.MD
AGENTS.MD
 
 
Gemfile
Gemfile
 
 
Gemfile.lock
Gemfile.lock
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
build.gradle.kts
build.gradle.kts
 
 
gradle.properties
gradle.properties
 
 
gradlew
gradlew
 
 
gradlew.bat
gradlew.bat
 
 
release_android.sh
release_android.sh
 
 
settings.gradle.kts
settings.gradle.kts
 
 

Repository files navigation

SensorBox app icon

SensorBox

A private, local-first sensor recorder for Android phones and Wear OS watches.

Android 10+ Wear OS Jetpack Compose

See it in use

SensorBox phone sensor selection SensorBox recording setup SensorBox Wear OS dashboard
Choose the sensors and sources to record. Set the recording options before you start. Record from the watch or pair it with the phone.

The idea

SensorBox records raw sensor samples from an Android phone or Wear OS watch into CSV files in a folder you choose. Recordings stay on your devices. There is no account, analytics service, or cloud storage in the recording path.

This is a revamp of the previous SensorBox app after several years. The project has gone through a full refactor, and many problems from the previous version have been solved. Issues are still expected while the new version settles, especially across different phones, sensors, and Wear OS devices.

The behaviour was not persited 1:1 completly, but all major features and couple new were added. For example file browser was added or improved sync of files between wearable and phone. One of features which was removed was actually heart rate monitoring and other possible medical implementations as they do not fit into the domain of the app.

What it does

  • Records available phone and watch sensors at the selected sampling period
  • Records GPS and activity recognition data when requested
  • Runs recordings in a visible foreground service with explicit stop handling
  • Shows a live sensor signal on Wear OS before recording
  • Records on the watch independently when a phone is not available
  • Starts and stops paired phone and watch recordings together
  • Syncs watch measurements to the phone without deleting the watch originals
  • Writes measurements to a folder selected through Android's system folder picker
  • Adds metadata and annotations to recording sessions

How it is built

SensorBox uses feature-first modules and a pragmatic MVI flow:

Composable -> Intent -> ViewModel -> use case -> repository -> State + Effect

The app module owns the phone UI and recording flows. The wear module owns the Wear OS UI and watch recording. recording-core contains the platform-independent recording state machine. sensorservices adapts Android sensors, GPS, foreground services, and file storage. core and core-common contain shared preferences, storage, diagnostics, and result types. WearOsLib contains the versioned phone-to-watch commands and file transport.

Hilt wires Android implementations behind testable interfaces. Phone and watch keep their own recording sessions and local files. The phone can later sync completed watch measurements into the selected recording archive.

Build it

You need JDK 17 and Android SDK 37. A Wear OS device or emulator is only needed to run the watch app and paired tests.

./gradlew :app:assembleDebug :wear:assembleDebug
./gradlew testDebugUnitTest detekt
./gradlew :app:lintDebug :wear:lintDebug

No Firebase project, Maps key, secrets file, account, or external-storage permission is required.

Release it

The Android release workflow builds, signs, verifies, and uploads the phone and Wear OS bundles using environment-provided credentials:

bundle install
./release_android.sh --validate-only

The default Google Play destinations are draft releases on internal for the phone and wear:qa for Wear OS. See the Google Play submission pack for the required environment variables, listing materials, and remaining submission checks.

SensorBox is licensed under the Apache License 2.0.

About

Android app to measure sensors

Topics

activity-recognitionandroidandroid-applicationcsvgpskotlin-androidsensorboxsensorswearos

Resources

Readme
Apache-2.0 license
Activity

Stars

84 stars

Watchers

1 watching

Forks

12 forks
Report repository

Releases

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.