Android 8.0 (API level 26) application to automanage and autoconnect to crowdsourced public Wi-Fi networks.
Clone the repository and navigate into the directory:
git clone https://URL.git
cd REPO/
Install Android Studio and import the project.
Generate a Google Maps SDK API key (step 1).
Duplicate the Google Maps API key template file to hold the API key:
cp Rebuild/app/src/debug/res/values/google_maps_api_template.xml Rebuild/app/src/debug/res/values/google_maps_api.xml
cp Rebuild/app/src/release/res/values/google_maps_api_template.xml Rebuild/app/src/release/res/values/google_maps_api.xml
Choose the debug/
folder for development, or the release/
folder for release.
In the new file google_maps_api.xml
, uncomment the line with the key and replace the value of the placeholder with your API key. This new file will not be tracked by Git.
Build and run the Android application on a physical or virtual device.
Create a new file in the root directory to hold the secure keystore details:
cp keystore.properties.template keystore.properties
This file will be ignored by Git. Set your keystore information in this file.
Under Build, click Select Build Variant.
In the Build Variants view which appears, change the Active Build Variant from debug to release.
Build the application normally to your phone. The keystore credentials will be verified and applied.
Under Build, click Generate Signed Bundle / APK.
Follow the instructions, inputting your keystore path and credentials, to create a signed app which can be uploaded to the app store.
The application mainly communicates with the Firebase database by asynchronously receiving a set of previously saved Wifi networks.
The base URL of the Firebase database is https://wifinder-294dd.firebaseio.com/.
The application is structured internally as in the following diagram:
The API to retrieve all data at root-level is as follows:
GET https://wifinder-294dd.firebaseio.com/.json
HTTP 200: OK
{
"networks": [
network-name: {
"ssid": string,
"password": string,
"coordinate": {
"latitude": number,
"longitude": number
}
},
...
]
}