Ad-free Android · Developer · com.michael.sensorscope
SensorScope
Ad-free Android hardware diagnostics. Live sensor plots, battery telemetry, thermal stress tests, calibration baselines, and CSV export — no ads for technicians and developers.
Completely ad-free — no ads, no trackers, no sponsored clutter.
Ad-free Android app
What is SensorScope?
SensorScope is an ad-free Android hardware diagnostics app for inspecting live sensors, battery telemetry, thermal stress behavior, calibration baselines, and exportable reports.
Ad-free advantage: Completely ad-free — no ads, no trackers, no sponsored clutter. MichaelSam94 apps are built without banner ads, interstitial ads, or video ad interruptions.
Key capabilities
- Real-time sensor inventory and live plots
- Battery voltage, current, temperature telemetry
- Thermal stress sandbox with logs
- Dead-pixel inspection screen
- CSV snapshot export without ads
Frequently asked questions
Is SensorScope free of ads?
Yes. SensorScope is completely ad-free — diagnostics are not interrupted by advertising.
Who is SensorScope for?
Technicians, QA teams, Android developers, and power users who need a clear view of hardware signals on a device.
Can I export diagnostic data?
Yes. You can preview diagnostic reports and export CSV snapshots when you choose to share them.
SensorScope is an ad-free Android hardware diagnostics app for inspecting live sensors, battery telemetry, thermal stress behavior, calibration baselines, and exportable reports.
Ad-free: Completely ad-free — no ads, no trackers, no sponsored clutter.
SensorScope is an Android hardware diagnostics app for inspecting device sensors, battery telemetry, and thermal stress behavior in real time. It is built for technicians, QA teams, Android developers, and power users who need a clear view into the hardware signals exposed by a device.
Project Overview
SensorScope gives Android users a focused diagnostic dashboard for sensors, battery state, thermal checks, calibration baselines, and report previews. The app reads local device telemetry, stores diagnostic baselines and thermal logs on the device, and lets users export CSV snapshots only when they choose to share them.
Key Features
- 📡 Real-time sensor inventory grouped into motion, environment, position, and unknown hardware categories.
- 📈 Sensor detail screens with live stream plotting and calibrated X, Y, and Z readouts.
- 🔋 Battery telemetry for level, voltage, current, temperature, charging state, technology, and anomaly warnings.
- 🌡️ Thermal stress sandbox with foreground-service execution, stop controls, summaries, and historical logs.
- 🎯 Calibration baseline capture and clearing for supported sensors.
- 🧪 Dead-pixel inspection screen with an immersive display check flow.
- 📄 Diagnostic report preview and CSV snapshot export support.
- 🛒 Play Store screenshot, icon, feature graphic, and listing-copy assets tracked in the repository.
Architecture Overview
Components
MainActivity hosts a Compose NavHost with dashboard, sensor detail, dead-pixel, thermal stress, battery telemetry, calibration, and report-preview destinations. SensorScopeApp creates an AppContainer, which wires data sources, repositories, Room DAOs, and use cases without a third-party dependency-injection framework.
SensorDataSourceImpl wraps SensorManager as Kotlin Flow streams. BatteryDataSourceImpl converts Android battery broadcasts and BatteryManager properties into domain readings. SensorScopeDatabase persists calibration baselines and thermal stress logs with Room.
Data Flow
Device hardware emits sensor and battery events. Data sources convert Android framework callbacks into domain models, repositories combine live readings with local Room state, use cases expose focused operations to ViewModels, and Compose screens render the current state or trigger actions such as baseline capture and report export.
Design Patterns
The app uses a layered architecture with data sources, repositories, use cases, ViewModels, and Compose UI. Runtime state is modeled with Kotlin coroutines and Flow; local persistence uses Room DAOs; navigation uses Jetpack Navigation Compose.
Tech Stack & Libraries
| Layer | Technology | Version | Purpose |
|---|---|---|---|
| Platform | Android SDK | min 24, target 36, compile 36.1 | Android app runtime and framework APIs |
| Language | Kotlin | 2.2.10 | App and test implementation |
| Build | Gradle Wrapper | 9.5.1 | Reproducible Android builds |
| Build Plugin | Android Gradle Plugin | 9.1.1 | Android application packaging |
| UI | Jetpack Compose BOM | 2024.09.00 | Declarative UI toolkit |
| UI | Material 3 | BOM-managed | App components, navigation bar, icons, and theming |
| Navigation | Navigation Compose | 2.8.9 | In-app route graph |
| Async | Kotlin Coroutines | 1.10.2 | Sensor and battery streams |
| Persistence | Room | 2.7.0 | Calibration and thermal log storage |
| Images | Coil Compose | 2.7.0 | Image loading support |
| Network | Retrofit, OkHttp, Moshi | 2.12.0, 4.10.0, 1.15.2 | Available networking stack |
| Screenshots | Roborazzi | 1.59.0 | Play Store screenshot and graphic generation |
| Tests | JUnit, Robolectric, AndroidX Test | 4.13.2, 4.16.1, 1.6.x | JVM and Android-facing tests |
| Secrets | Secrets Gradle Plugin | 2.0.1 | .env loading for optional local secrets |
Configuration
The Android application configuration lives in app/build.gradle.kts. Important values include applicationId, namespace, minSdk, targetSdk, versionCode, versionName, signing configs, and test options. Changing build configuration requires a Gradle sync or rebuild.
Local secrets are read from .env through the Secrets Gradle Plugin. Release signing can be configured with KEYSTORE_PATH, STORE_PASSWORD, and KEY_PASSWORD; avoid committing production signing secrets.
Usage / Quick Start
Run the App on a Device
./gradlew installDebugOpen SensorScope from the launcher. Use the bottom navigation to switch between Sensors, Screen, Thermals, Power, Offsets, and Dossier. Sensor detail screens are opened from the dashboard by selecting a listed hardware sensor.
Generate Play Store Assets
./gradlew generatePlayStoreAssetsAPI Reference
Not applicable. SensorScope is a native Android application and does not expose a public HTTP API, CLI API, or SDK API. Internal app operations are organized through Kotlin repository interfaces in app/src/main/java/com/michael/sensorscope/domain/repository/.
Testing
Run JVM unit, Robolectric, and Compose tests:
./gradlew testDebugUnitTestRun instrumented tests on a connected device or emulator:
./gradlew connectedDebugAndroidTestRegenerate Roborazzi-backed Play Store screenshots:
./gradlew generatePlayStoreAssetsTest files live under app/src/test/java/com/michael/sensorscope/ and app/src/androidTest/java/com/michael/sensorscope/. Existing tests include navigation behavior, feature interaction coverage, manifest permission checks, example Robolectric tests, and Play Store screenshot generation tests. Coverage reporting is not configured.
Deployment
Android Debug Builds
./gradlew assembleDebugThe generated APK is written under app/build/outputs/apk/debug/.
Android Release Builds
export KEYSTORE_PATH=/absolute/path/to/upload-key.jks
export STORE_PASSWORD
export KEY_PASSWORD
./gradlew assembleReleaseRelease output is written under app/build/outputs/apk/release/. A release AAB task may also be used through standard Android Gradle Plugin tasks when Play Console upload packaging is needed.
Docker and docker-compose deployment are not configured.