๐Ÿš€ Project Website & GitHub Repo

๐Ÿ“ Project Structure Documentation

This document provides a comprehensive overview of the Android_WIFI_BT_GEOGRABBER project structure.

๐Ÿ“Š Project Overview

Android_WIFI_BT_GEOGRABBER/
โ”œโ”€โ”€ ๐Ÿ“ฑ WIFIGEOGRABBER/          # Android application (main project)
โ”œโ”€โ”€ ๐Ÿ Python/                  # Python tools for data analysis
โ”œโ”€โ”€ ๐Ÿ“š docs/                    # Documentation
โ””โ”€โ”€ ๐Ÿ“„ Configuration files      # Project metadata and configs

๐Ÿ—๏ธ Complete Directory Tree

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

๐Ÿ“ฑ Android Application Structure

Core Components

Activities

| 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 |

Services

| File | Size | Lines | Description | |โ€”โ€”|โ€”โ€”|โ€”โ€”-|โ€”โ€”โ€”โ€”-| | ScanService.java | 24 KB | ~350 | Foreground service for background WiFi/BT scanning |

Resources

Layouts (res/layout/)

Values (res/values/)

Graphics

๐Ÿ Python Tools

Scripts

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

Dependencies

๐Ÿ“š Documentation Structure

docs/
โ”œโ”€โ”€ README.md                               # Documentation index
โ””โ”€โ”€ quickstart/
    โ”œโ”€โ”€ database_combiner_quickstart.md    # How to merge databases
    โ””โ”€โ”€ map_viewer_quickstart.md           # How to use map viewer

Additional Documentation Files (Root)

๐Ÿ› ๏ธ Build System (Gradle)

Configuration Files

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

Key Dependencies (Example)

[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

๐Ÿ—„๏ธ Database Schema

The app uses SQLite with two main tables:

wifi_data Table

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
);

device_data Table

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
);

Indexes (for performance)

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);

๐Ÿ“ฆ APK Build Output

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)

๐Ÿ” Security & Privacy Files

ProGuard Rules (proguard-rules.pro)

Defines code obfuscation rules for release builds:

Backup Rules (res/xml/backup_rules.xml)

Android Auto Backup configuration:

๐Ÿ“‹ File Size Summary

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)

๐Ÿ”„ Build Artifacts (Excluded from Git)

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

๐Ÿš€ Development Workflow

Initial Setup

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 Modification Impact

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

๐Ÿ“ Key File Locations

Frequently Modified Files

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)

Configuration Files

AndroidManifest.xml           # App permissions and components
build.gradle.kts (app)        # Dependencies and SDK versions
proguard-rules.pro            # Release optimization rules

๐Ÿงช Testing Structure

Unit Tests (src/test/)

Instrumentation Tests (src/androidTest/)

Running Tests

# Unit tests (fast)
./gradlew test

# Instrumentation tests (requires device)
./gradlew connectedAndroidTest

๐Ÿ” Important Notes

Code Organization

Resource Naming Conventions

Database Location

Last Updated: October 30, 2025

๐Ÿ“ Structure documented with precision