This document provides a comprehensive overview of the Android_WIFI_BT_GEOGRABBER project structure.
Android_WIFI_BT_GEOGRABBER/
โโโ ๐ฑ WIFIGEOGRABBER/ # Android application (main project)
โโโ ๐ Python/ # Python tools for data analysis
โโโ ๐ docs/ # Documentation
โโโ ๐ Configuration files # Project metadata and configs
Android_WIFI_BT_GEOGRABBER/
โ
โโโ ๐ README.md # Main project documentation
โโโ ๐ CHANGELOG.md # Version history and changes
โโโ ๐ CONTRIBUTING.md # Contribution guidelines
โโโ ๐ CODE_OF_CONDUCT.md # Community guidelines
โโโ ๐ SECURITY.md # Security policy
โโโ ๐ PROJECT_STRUCTURE.md # This file
โโโ ๐ .gitignore # Git ignore rules
โ
โโโ ๐ docs/ # Documentation directory
โ โโโ ๐ README.md # Documentation index
โ โโโ ๐ quickstart/ # Quick start guides
โ โโโ database_combiner_quickstart.md
โ โโโ map_viewer_quickstart.md
โ
โโโ ๐ Python/ # Python analysis tools
โ โโโ ๐ start_combine_dbs.py # Database merger script (78KB)
โ โโโ ๐ start_plot_gui.py # Map visualization GUI (85KB)
โ
โโโ ๐ฑ WIFIGEOGRABBER/ # Android Studio project root
โ
โโโ ๐ build.gradle.kts # Project-level build configuration
โโโ ๐ settings.gradle.kts # Gradle settings
โโโ ๐ gradle.properties # Gradle properties
โโโ ๐ local.properties # Local SDK paths (gitignored)
โโโ ๐ .gitignore # Android-specific git ignores
โโโ ๐ง gradlew # Gradle wrapper (Unix)
โโโ ๐ง gradlew.bat # Gradle wrapper (Windows)
โ
โโโ ๐ gradle/ # Gradle wrapper configuration
โ โโโ ๐ libs.versions.toml # Centralized dependency versions
โ โโโ ๐ wrapper/
โ โโโ gradle-wrapper.jar
โ โโโ gradle-wrapper.properties
โ
โโโ ๐ .idea/ # Android Studio IDE settings
โ โโโ compiler.xml
โ โโโ gradle.xml
โ โโโ misc.xml
โ โโโ vcs.xml
โ โโโ ...
โ
โโโ ๐ .gradle/ # Gradle build cache (gitignored)
โ
โโโ ๐ build/ # Project build output (gitignored)
โ
โโโ ๐ app/ # Main application module
โ
โโโ ๐ build.gradle.kts # App-level build configuration
โโโ ๐ proguard-rules.pro # ProGuard obfuscation rules
โ
โโโ ๐ build/ # App build output (gitignored)
โ
โโโ ๐ src/ # Source code directory
โ
โโโ ๐ main/ # Main source set
โ โ
โ โโโ ๐ AndroidManifest.xml # App manifest (permissions, components)
โ โ
โ โโโ ๐ java/ # Java source code
โ โ โโโ com/example/wifi_geograbber/
โ โ โโโ MainActivity.java # Main UI activity (93KB)
โ โ โโโ MapActivity.java # Map viewer activity (52KB)
โ โ โโโ ScanService.java # Background scanning service (24KB)
โ โ
โ โโโ ๐ res/ # Android resources
โ โ
โ โโโ ๐ drawable/ # Vector graphics and icons
โ โ โโโ ic_launcher_background.xml
โ โ โโโ ic_launcher_foreground.xml
โ โ
โ โโโ ๐ layout/ # UI layout XML files
โ โ โโโ activity_main.xml # Main screen layout
โ โ โโโ activity_map.xml # Map screen layout
โ โ
โ โโโ ๐ mipmap-*/ # App launcher icons (multiple DPI)
โ โ โโโ mipmap-anydpi/
โ โ โโโ mipmap-hdpi/
โ โ โโโ mipmap-mdpi/
โ โ โโโ mipmap-xhdpi/
โ โ โโโ mipmap-xxhdpi/
โ โ โโโ mipmap-xxxhdpi/
โ โ
โ โโโ ๐ values/ # Resource values
โ โ โโโ colors.xml # Color definitions
โ โ โโโ strings.xml # Text strings (localization)
โ โ โโโ themes.xml # App themes (light mode)
โ โ
โ โโโ ๐ values-night/ # Dark theme resources
โ โ โโโ themes.xml # Dark mode theme
โ โ
โ โโโ ๐ xml/ # XML resources
โ โโโ backup_rules.xml
โ โโโ data_extraction_rules.xml
โ
โโโ ๐ androidTest/ # Instrumentation tests (UI tests)
โ โโโ java/com/example/wifi_geograbber/
โ โโโ ExampleInstrumentedTest.java
โ
โโโ ๐ test/ # Unit tests (JVM tests)
โโโ java/com/example/wifi_geograbber/
โโโ ExampleUnitTest.java
| File | Size | Lines | Description |
|โโ|โโ|โโ-|โโโโ-|
| MainActivity.java | 93 KB | ~1,700 | Main scanning interface, WiFi/BT management, database operations |
| MapActivity.java | 52 KB | ~1,000 | Interactive map viewer with Leaflet.js WebView |
| File | Size | Lines | Description |
|โโ|โโ|โโ-|โโโโ-|
| ScanService.java | 24 KB | ~350 | Foreground service for background WiFi/BT scanning |
res/layout/)res/values/)| Script | Size | Description | Main Functions |
|---|---|---|---|
start_combine_dbs.py |
78 KB | Database merger utility | Combines multiple .db files, removes duplicates, GUI interface |
start_plot_gui.py |
85 KB | Interactive map viewer | Plots scan data on map, filtering, export to CSV/JSON |
docs/
โโโ README.md # Documentation index
โโโ quickstart/
โโโ database_combiner_quickstart.md # How to merge databases
โโโ map_viewer_quickstart.md # How to use map viewer
| File | Purpose |
|---|---|
build.gradle.kts (project) |
Project-level Gradle configuration |
build.gradle.kts (app) |
App module dependencies and settings |
settings.gradle.kts |
Project structure definition |
gradle.properties |
Gradle JVM settings and properties |
gradle/libs.versions.toml |
Centralized dependency version catalog |
[versions]
androidGradlePlugin = "8.x.x"
kotlin = "1.9.x"
compileSdk = "34"
minSdk = "23"
targetSdk = "34"
[libraries]
androidx-core-ktx = { ... }
google-play-services-location = { ... }
leaflet-js = "1.7.1" # Embedded in WebView
The app uses SQLite with two main tables:
CREATE TABLE wifi_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
bssid TEXT NOT NULL, -- MAC address (unique identifier)
ssid TEXT, -- Network name
signal_strength INTEGER, -- RSSI in dBm
frequency INTEGER, -- MHz (2.4GHz/5GHz)
channel INTEGER, -- WiFi channel (1-165)
channel_width INTEGER, -- 20/40/80/160 MHz
security_type TEXT, -- WPA2/WPA3/Open/etc.
timestamp TEXT, -- ISO 8601 format
latitude REAL, -- GPS latitude
longitude REAL -- GPS longitude
);
CREATE TABLE device_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
device_id TEXT, -- Bluetooth device ID
device_name TEXT, -- Friendly name
device_type TEXT, -- WIFI/BLE/CLASSIC
mac_address TEXT NOT NULL, -- Hardware address
signal_strength INTEGER, -- RSSI value
timestamp TEXT, -- ISO 8601 format
latitude REAL, -- GPS latitude
longitude REAL -- GPS longitude
);
CREATE INDEX idx_wifi_bssid ON wifi_data(bssid);
CREATE INDEX idx_wifi_coords ON wifi_data(latitude, longitude);
CREATE INDEX idx_device_mac ON device_data(mac_address);
CREATE INDEX idx_device_coords ON device_data(latitude, longitude);
When building the app:
WIFIGEOGRABBER/app/build/outputs/apk/
โโโ debug/
โ โโโ app-debug.apk # Debug build (unoptimized)
โโโ release/
โโโ app-release-unsigned.apk # Release build (requires signing)
proguard-rules.pro)Defines code obfuscation rules for release builds:
res/xml/backup_rules.xml)Android Auto Backup configuration:
| Category | Count | Total Size |
|---|---|---|
| Java Source | 3 files | ~170 KB |
| XML Layouts | 2 files | ~10 KB |
| XML Resources | ~15 files | ~50 KB |
| Python Scripts | 2 files | ~163 KB |
| Documentation | 7+ files | ~100 KB |
| Build System | 5 files | ~15 KB |
| Icons/Graphics | 20+ files | ~500 KB |
Total Repository Size: ~1-2 MB (excluding build artifacts)
These directories are generated during build and excluded via .gitignore:
.gradle/ # Gradle cache
.idea/ # IDE settings (some tracked, most ignored)
build/ # Build outputs
*.apk # Compiled APKs
*.aab # Android App Bundles
local.properties # Local SDK paths
1. Clone repository
2. Open WIFIGEOGRABBER/ in Android Studio
3. Sync Gradle (automatic)
4. Connect device or start emulator
5. Run app (Shift+F10)
| File Changed | Action Required |
|---|---|
*.java |
Rebuild app |
*.xml (layout) |
Hot swap possible |
strings.xml |
Rebuild required |
build.gradle.kts |
Gradle sync required |
AndroidManifest.xml |
Clean rebuild required |
MainActivity.java (Line 1681)
MapActivity.java (Line 991)
ScanService.java (Line 324)
activity_main.xml (Line 146)
activity_map.xml (Line 79)
strings.xml (Line 76)
AndroidManifest.xml # App permissions and components
build.gradle.kts (app) # Dependencies and SDK versions
proguard-rules.pro # Release optimization rules
src/test/)app/src/test/java/com/example/wifi_geograbber/src/androidTest/)app/src/androidTest/java/com/example/wifi_geograbber/# Unit tests (fast)
./gradlew test
# Instrumentation tests (requires device)
./gradlew connectedAndroidTest
com.example.wifi_geograbberactivity_*.xmlwifi_scan_successful)button_scan_start)color_primary)/data/data/com.example.wifi_geograbber/databases//storage/emulated/0/Download/ or user-selected locationLast Updated: October 30, 2025
๐ Structure documented with precision