WifiMapper is an Android application designed as part of a mobile security course project. It features a background service that periodically scans nearby Wi-Fi networks and sends the data to a backend server. The app visualizes this data using Google Maps and a RecyclerView list, providing an interactive way to explore Wi-Fi networks in your vicinity.
Screen Shots:
- Background Wi-Fi Scanning: A service runs in the background, scanning for nearby Wi-Fi networks every 10 seconds.
- Data Sync: Scanned Wi-Fi data is sent to a Node.js backend and stored in a PostgreSQL database.
- Map Visualization: The
MapActivitydisplays Wi-Fi network locations on Google Maps, with markers for each network. - Network List: A RecyclerView-based activity lists all scanned Wi-Fi networks. Clicking an icon navigates to the corresponding marker on the map and highlights related scans.
- Real-Time Updates: Integrates with the backend to fetch and display the latest Wi-Fi data.
-
Language: Java/Kotlin (assumed; let me know if you used one specifically)
-
IDE: Android Studio
-
Key Libraries:
Retrofit+Gson Converter: For API communication and JSON parsing.OkHttp Logging Interceptor: For debugging network requests.Google Play Services (Location & Maps): For location services and map integration.Glide: For efficient image loading (if applicable; clarify if used).Lottie: For animations (if applicable; clarify if used).Android RecyclerView: For displaying the Wi-Fi list.Callbacks: For handling asynchronous operations and communication between components.Shared Preferences: For storing lightweight app data, such as user settings or scan preferences.
- Language: JavaScript
- Framework: Node.js
- Database: PostgreSQL
- Android Studio (with an emulator or physical device running API 21+)
- Node.js and npm installed
- PostgreSQL installed and running
- Google Maps API key (for map functionality)
- Open the app folder in Android Studio.
- Add your Google Maps API key.
- In the app’s code (e.g., Retrofit base URL), set the endpoint to your Node.js server (e.g.,
http://localhost:3000or your hosted URL). - Sync the project with Gradle.
- Run the app on an emulator or device.
Add these to your app/build.gradle:
dependencies {
// Networking
implementation 'com.squareup.retrofit2:retrofit:<version>'
implementation 'com.squareup.retrofit2:converter-gson:<version>'
implementation 'com.squareup.okhttp3:logging-interceptor:<version>'
// Google Maps & Location
implementation 'com.google.android.gms:play-services-location:<version>'
implementation 'com.google.android.gms:play-services-maps:<version>'
// Glide (optional, if used)
implementation 'com.github.bumptech.glide:glide:<version>'
annotationProcessor 'com.github.bumptech.glide:compiler:<version>'
// Lottie (optional, if used)
implementation 'com.airbnb.android:lottie:<version>'
}- Launch the app on your Android device.
- Grant necessary permissions (e.g., location and Wi-Fi access).
- The background service will start scanning Wi-Fi networks every 10 seconds.
- Use the MapActivity to view Wi-Fi locations on Google Maps.
- Open the ListActivity to see all scanned networks; tap an icon to jump to its map marker and view related scans.
This is a course project, but feel free to fork it and submit pull requests with enhancements!
