The problem
GPS stops working the moment you walk indoors — concrete, steel and roofs attenuate satellite signals below usable levels, so malls, hospitals, warehouses and campuses have no reliable phone positioning. WiFi RSSI fingerprinting solves this with hardware that is already there: every access point's signal strength forms a location-specific signature, and a phone can learn where it is by comparing live scans against a surveyed radio map. Students attempting indoor positioning usually stop at theory or fake it with hard-coded coordinates. This project builds the real thing as a native Android app: a survey mode that records RSSI fingerprints on a 2 m grid, an on-device fingerprint database, and a positioning mode that matches each scan with a weighted k-nearest-neighbours estimator (k=3, Euclidean distance over RSSI space) and plots the fix on the floor plan with the error in metres. A working web demo runs the same survey-and-match code path, so the logic can be inspected and tested without a phone.
How it works
- Fix 3–4 WiFi access points at known spots on the floor (2.4 GHz band, design) and note each AP's BSSID and mounting position to within ~0.5 m (expected).
- In survey mode, walk the floor on the marked 2 m grid; at each point the app runs 4 scans and stores the averaged RSSI vector with its (x, y, floor) coordinates.
- The fingerprints accumulate in the on-device database — a radio map of the floor — exportable as JSON for backup or analysis.
- In positioning mode the app scans once per cycle, builds the live RSSI vector, and computes its Euclidean distance to every stored fingerprint.
- The k=3 nearest fingerprints are fused with inverse-distance weighting, and the result is plotted on the floor map as the estimated position.
- Drop the ground-truth pin on your real spot to see estimated vs true position and the error in metres; expected accuracy is 1–3 m (design target) on a furnished office floor.
Tech stack:
- Kotlin · Android SDK
- WifiManager · ScanResult API
- Room (SQLite) fingerprint database
- Material 3 UI components
- JSON fingerprint export
- Gradle · Android Studio
- HTML · CSS · JavaScript (web demo)
- Git
| Parameter | Value |
|---|---|
| Positioning method | WiFi RSSI fingerprinting + weighted k-NN (k = 3, selectable 3–5) |
| Access points | 3–4 per floor (design) |
| Signal band | 2.4 GHz (design) |
| RSSI range | −30 to −95 dBm (expected) |
| Survey grid | 2 m × 2 m (design) |
| Scans per fingerprint | 4, averaged (design) |
| Position error | 1–3 m (design target, environment-dependent) |
| Scan cadence | 1 scan per ~30 s per foreground app (Android 9+ platform limit) |
| Minimum Android version | Android 9 / API 28 (expected) |
| Demo floor size | 44 m × 30 m (web demo) |
| Fingerprint storage | On-device database, works fully offline |
Project features
- [WiFi fingerprint survey mode] Walk the floor on a 2 m grid and tap to record a fingerprint at each point — every fingerprint averages 4 scans across all visible access points to smooth out fast fading.
- [Weighted k-NN position estimator] Each live scan is compared against the whole radio map with Euclidean distance in RSSI space; the k=3 nearest fingerprints (selectable 3–5) are combined with inverse-distance weighting into the position fix.
- [Live position on floor map] The estimated fix renders on the building floor plan next to a draggable ground-truth marker, with a dashed error line drawn between the two.
- [Position error display] Every fix reports estimated vs true coordinates and the error in metres; the session mean error is tracked so accuracy is quoted from real runs, not assumed.
- [On-device fingerprint database] The radio map lives in local storage (Room/SQLite with JSON export and import) — positioning works fully offline with no server and no internet connection.
- [Scan-throttling-aware scheduler] The app is built around Android 9+ platform limits: a foreground app may scan at most 4 times per 2-minute window, so survey batches and positioning cycles are scheduled accordingly.
- [Multi-floor support] One radio map per floor with a floor picker; each floor is surveyed independently and the estimator only matches within the active floor's map.
What is included
- Complete Android app source (Kotlin): survey mode, k-NN positioning engine, floor-map UI, error analytics
- Room/SQLite fingerprint database with JSON export and import
- Working web demo that simulates the app's survey and positioning logic with the same matching code path
- Build and installation guide (Android Studio, APK signing)
- Project report PDF (background, fingerprinting theory, k-NN method, methodology, test procedure)
- PPT presentation for final review
- Viva Q&A preparation document (RSSI, path loss, k-NN, scan throttling, accuracy factors)
Limitations & prerequisites
- Accuracy is approximate: 1–3 m error is a design target for a typical furnished office; moving furniture, crowds and AP changes shift fingerprints, so the floor must be re-surveyed after layout changes.
- Android 9 and above throttle foreground WiFi scans to 4 per 2-minute window (official platform limit) — live fixes arrive at best about once per 30 s.
- Indoor use only: the system does not replace GPS outdoors, and it needs no satellite signal to work inside.
- Requires 3–4 access points fixed in place; APs that are moved, replaced or reconfigured invalidate the radio map.
- Different phone models report RSSI with different offsets, so one phone model is used for both survey and positioning (design assumption).
- The baseline build surveys the 2.4 GHz band only; 5 GHz fingerprints differ and need a separate survey.
Frequently Asked Questions
Which access points or hardware are needed?
Any 3–4 ordinary WiFi routers or access points fixed to ceilings or walls on the 2.4 GHz band — the kind already present in most college buildings. No beacons and no extra hardware to buy; the phone is the only sensor the system needs.
What indoor accuracy can we honestly expect?
The design target is 1–3 m on a furnished office floor with a 2 m survey grid — the classic RADAR-style fingerprinting result reported in the literature is a median error of about 2 m. Your report quotes the mean error measured from your own survey runs, never a pre-claimed number.
Why WiFi fingerprinting instead of Bluetooth beacons?
WiFi uses infrastructure that already exists, so there is nothing to install, power or maintain; Bluetooth beacons must be purchased, mounted and have their batteries replaced. That makes the WiFi approach cheaper to build and far easier to demonstrate inside a college building. BLE fusion is listed as future scope in the report.
Does the app need internet or a server?
No. Fingerprints are stored in the on-device database and the k-NN matching runs locally on the phone, so positioning works fully offline. That edge-computing angle — no cloud, no latency, no data leaving the device — is a strong viva talking point.
Which Android versions are supported?
Android 9 (API 28) and above. That is also where scan throttling begins — 4 foreground scans per 2-minute window — and the app's survey scheduler is built around that official platform limit. The report documents the exact permission flow, since location permission and location services must both be on for scans to return results.
Is this project suitable for a final-year project?
Yes — for Computer Science, IT and Android-focused programs. It combines mobile development, wireless signal processing, a real algorithm (k-NN over RSSI space) and honest experimental evaluation with measured error analysis. A working app plus measured results gives the student genuine material to defend in the viva.
Components & software requirements
- Kotlin · Android SDK
- WifiManager · ScanResult API
- Room (SQLite) fingerprint database
- Material 3 UI components
- JSON fingerprint export
- Gradle · Android Studio
- HTML · CSS · JavaScript (web demo)
- Git
Delivery information
Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.
Support terms
Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.
Download free synopsis (PDF)
Enter your name and WhatsApp number — the synopsis PDF downloads immediately. We may send occasional project updates on WhatsApp; no spam.