Back to Portfolio
WiFi Analyze app icon

WiFi Analyze

Android home-network diagnostic tool — plain-English signal ratings, room-by-room coverage mapping, on-device speed tests, and an A–F network score

Live on Google Play — min SDK 33 / target SDK 36
Kotlin • Jetpack Compose (Material 3)
Get it on Google Play View on GitHub
WiFi Analyze feature graphic — plain-English signal quality dashboard
WiFi Analyze — signal quality dashboard
Signal Dashboard
WiFi Analyze — room-by-room coverage map
Room Coverage
WiFi Analyze — advanced diagnostics dashboard
Advanced Mode
WiFi Analyze — channel congestion analysis
Channel Analysis

Overview

WiFi Analyze is a native Android app that turns a phone into a home-network diagnostic tool — readable enough for a non-technical user, deep enough for an enthusiast. A Simple mode rates signal in plain English (Excellent → No Signal), maps dead spots room by room, and tells you whether a spot is solid enough for smart-home devices. An Advanced mode exposes the raw engineering: live dBm with a stability score, channel-congestion and spectrum-overlap charts, on-device speed and latency tests, and an A–F network score.

Everything a user records stays on the device. There is no account, no ads, no analytics, and no tracking; the only network traffic is the speed and latency tests the user starts by hand. It ships with a home-screen Glance widget, optional weak-signal notifications, and a Wear OS companion for glanceable signal on the wrist (built; not yet in the Play release).

Live
Google Play
Zero
Ads & Tracking
SDK 36
Target API
A–F
Network Score

Not affiliated with or endorsed by any router manufacturer or internet service provider.

Tech Stack

Built on the modern Android stack — Kotlin-first, Compose UI, Jetpack Architecture Components throughout, and shipped clean to Google Play.

Kotlin
Primary Language
Jetpack Compose
Declarative UI + Material 3
Hilt
Dependency Injection
Room
Local Database (SQLite)
DataStore
User Preferences
WorkManager
Background Monitoring
Glance
Home Screen Widget
Wearable Data Layer
Phone → Wear OS Push
ConnectivityManager
Network Callbacks + SSID
Google Play
R8 • App Signing • targetSdk 36
Architecture Note

MVVM throughout: ViewModels expose StateFlow streams to the Compose UI layer; a Repository layer mediates between ConnectivityManager network callbacks, Room, and DataStore; Hilt injects dependencies at every layer boundary. Ref-counted callbacks prevent leaks across dual-mode view models.

Key Features

Two audiences, one data source: the same signal pipeline feeds a plain-English verdict for casual users and a full diagnostic dashboard for enthusiasts.

📶

Plain-English Signal Quality

  • Colour-coded Excellent / Good / Fair / Poor / No Signal rating
  • Animated gauge for immediate readability
  • Per-band (2.4 / 5 / 6 GHz) breakdown of your own network
  • Smart-home readiness check on the 2.4 GHz signal
🏠

Room-by-Room Coverage Mapping

  • Save a reading per room, ranked by signal strength
  • Best / worst-room router-placement recommendation
  • Dead-spot identification across the whole home
  • Persistent storage — readings survive app restarts
🔍

Advanced Diagnostics

  • Live dBm with a stability score
  • Channel-usage bar chart and spectrum-overlap view
  • AP-vendor identification and mesh / multi-AP node detection
  • A–F network score rolled up from all metrics

On-Device Speed & Latency Tests

  • Download / upload via Cloudflare with live Mbps readout
  • Ping to gateway and 8.8.8.8
  • 24h / 7d history charts for trend analysis
  • Friendly error messages for the no-internet case
🔒

Private by Design

  • All readings stay on the device — no account required
  • No ads, no analytics SDK, no tracking
  • Only network traffic: the speed/latency tests you initiate
  • Data Safety declaration matches the manifest exactly
📱

Widget, Alerts & Wear OS

  • Home-screen Glance widget with live signal strength
  • Edge-triggered weak-signal / all-clear notifications (no spam)
  • Wear OS companion built on the same signal pipeline
  • Phone → watch push via Wearable Data Layer API

Screenshots

Real device screenshots — signed release build, no personal data. Click any to enlarge.

WiFi Analyze — Signal Dashboard
Signal Dashboard
WiFi Analyze — Room Coverage List
Room Coverage
WiFi Analyze — Advanced Diagnostics Dashboard
Advanced Mode
WiFi Analyze — Channel Analysis
Channel Analysis
WiFi Analyze — Speed Test
Speed Test
WiFi Analyze — Home Screen Widget
Home Widget

Technical Highlights

The engineering that makes this more than a WiFi list view.

📡

Modern Android Connectivity Stack, Done Right

ConnectivityManager network callbacks with FLAG_INCLUDE_LOCATION_INFO handle SSID resolution; they are ref-counted across two view models so a mode switch can’t leak a callback. Graceful fallbacks handle the location-off case without crashing or silently going stale.

Works Within Android’s Scan Throttle

Android restricts apps to ∼4 scans per 2 minutes. The app works within this constraint: scan requests are rate-limited, cached results are served in between, and a BroadcastReceiver for SCAN_RESULTS_AVAILABLE_ACTION drives updates rather than a polling timer.

🔔

Edge-Triggered Background Monitoring

A WorkManager worker samples signal, prunes history, and fires weak-signal / all-clear notifications on threshold crossings — state persisted in DataStore. A persistently weak signal never spams the user; only the transition triggers a notification.

Hand-Rolled Network Diagnostics

A streaming HTTP speed test delivers live Mbps callbacks; an ICMP-style latency runner pings the gateway and a public DNS server. Both feed into the A–F network score alongside the RF signal metrics. Friendly error surfaces cover the no-internet cases so users get a clear reason, not a crash.

Glance Widget + Wear OS Data Layer

The home-screen Glance widget is kept current across disconnect by writing to Glance’s Preferences state store from the WorkManager worker — decoupled from the Activity lifecycle entirely. Phone–watch push uses the Wearable Data Layer API so the watch never needs its own WiFi scan permissions.

Shipped Clean to Play

R8 + resource shrinking, Play App Signing, adaptive + themed icon, backup rules, targetSdk 36, and a Data Safety declaration that matches the manifest exactly — precise-location declared, disclosed Cloudflare test endpoints, privacy policy aligned. No gaps the Play review team can flag.

What This Project Demonstrates

End-to-end Android product delivery: from platform-level connectivity APIs up through a dual-audience Material 3 Compose UI and out to a signed, policy-clean Google Play release.

Dual-Audience Product Design
Reducing raw RF data to a one-word verdict for a casual user while exposing dBm, charts, and scores for an enthusiast — same pipeline, two complete UX paths
Platform API Mastery
ConnectivityManager callbacks, WiFi scan throttling, Glance widget out-of-process state, Wearable Data Layer sync — working with OS constraints, not against them
Modern Android Architecture
MVVM + Repository, Hilt DI, StateFlow/Compose integration — the full Jetpack recommended stack applied to a real shipped product
Background Work & Widgets
WorkManager scheduling with edge-triggered notifications, Glance widget lifecycle decoupled from the Activity — Android beyond the screen
Google Play Release Management
R8 shrinking, Play App Signing, adaptive icon, Data Safety declaration, privacy policy — every checkbox a production release needs
Privacy-First Engineering
On-device storage only, no account, no analytics SDK — designed around the minimum data required to do the job

Interested in Android Development?

From Compose UI to Google Play release management — native Android apps built on the full modern Jetpack stack.

Get it on Google Play Get In Touch

Frequently asked questions

What is WiFi Analyze built with?

Native Android using Kotlin and Jetpack Compose (Material 3) — with plain-English signal ratings, room-by-room coverage mapping, on-device speed tests, an A–F network score, a home-screen widget, and WorkManager background monitoring.

Can you build a native Android app for my business?

Yes — native Kotlin/Compose apps are part of our software development service.

Do you handle Google Play submission and release management?

Yes — we handle the full production release pipeline: R8 optimisation, Play App Signing, Data Safety declarations, privacy policy, and ongoing release management.

Related services & work

Want something like this built?

Tell us what you have in mind and we'll come back with an approach and a flat quote — no obligation.

Get a free quote See more work