Below is the list of permissions for this app and what exactly they mean:
- Your location
coarse (network-based) location, fine (GPS) location
In order to display your location on the map and record signal strength data the app needs to figure out were on the Earth you are. It does this by first getting a fast fix of your position through your cellular carrier. The cellular network can provide a fast, but very rough estimate of you location, usually within a few dozen or hundred meters of your actual location. This method is used whenever a GPS signal cannot be found (such as when you are indoors.)
A fine fix of your location is obtained through GPS. This is used whenever you are outdoors and can receive a good GPS satellite signal. It is important to note that if you have a GPS fix and then go indoors the app will not revert back to a network-based location fix. This appears to be a bug in Android...or my app, haven't figured out which yet.
- Network communication
full internet access, view network state, view Wi-Fi state
Internet access is necessary due to the handful of hyperlinks within the app and its use of Google Maps -- the map needs to download new tiles as you move along it. The app will actually stop updating the map if signal strength gets too week (below -102 dBm), otherwise it would appear to freeze waiting for tile updates.
Reporting on the network state is one of the features of the app, as is viewing the Wi-Fi state.
modify/delete USB storage contents
Users need the ability to save recorded data to, and read that and other data from, the rfsignaldata directory on the USB storage device (your phone). Older data that was recorded and saved can be reloaded and played back within the app. Also users can load their own custom site location data into the database. All of these actions require interacting with the storage device. The app ONLY interacts with the rfsignaldata directory.
- Phone calls
read phone state and identity
This is a critical permission since reading these parameters is at the heart of the app's function. The app does not save or transmit any of these parameters other than those which appear in the recorded data. Critical identity parameters such as IMEI/ESN, phone number, SIM serial number, and MAC address are never recorded or transmitted by the app.
- System tools
change Wi-Fi state, prevent phone from sleeping
One of the many features the app monitors is the Wi-Fi state of the device as well as the signal strength of other Wi-Fi hotspots within range. Turning on and off the feature that listens for hotspots requires the change Wi-Fi state permission. While hotspots are identified and can be recorded, the Wi-Fi state of the device is never transmitted or saved.
Because of the way the app will be used it is necessary to keep the device awake, so a "wake-lock" is held to prevent the device from sleeping. This does not apply if you start recording and press the Back button to get out of the app. In this case, the app will continue to record, but the device may go to sleep (if it has been setup to do that). If this happens then signal strength updates will stop and not resume until the device awakes.
- Hardware controls
One of the many preferences within the app allows the device to vibrate whenever it hands off to a new cell. Turning that feature on and off requires this permission.