One year after the first version of my experimental Android Program – Cell Logger – I have published version 2.0 with one major addition: It now uses the GPS receiver to also track the location of signal strength and cell changes. You might remember this and this blog post where I ran some tests with it in Germany and Korea.
If you are interested, you can download the APK for a direct install on the device via this link. The source code is available via this link. In Google Play, you'll find the app by searching for "Cell Logger 2".
Independently from installing directly or via Google play, it's a good idea to download the source zip file from this page as well as there's an extra folder inside that contains some useful information on how to use the generated KML/XML file for offline analysis with Google Maps or Openstreetmap.
And after the jump, some more detailed info. Agreed, as always with experimental projects, documentation etc. could be better 🙂 Nevertheless, enjoy.
Cell Logger is available as Open Source Android app using the GPL 2 or later version license. For details see the source code.
What does it do?
Cell Logger records date and time of signal strength changes, the cell's Location Area ID, Cell-ID and, if available, the GPS coordinates where a cell change from one cell to a new cell that has never been observed occurs. GPS coordinates will not be recorded for cell changes between cells that have already been observed to prevent ping-pong handovers in certain situations to be counted as real cell changes. On the display of the device all this information is shown real time including counters on the number of cell changes and the number of unique cell changes (i.e. without ping-pong).
Whenever a cell change occurs data is written to a file in the main directory on the mass storage partition of the device. The file name used for this is “cell-log-data.txt” and data is appended until the file is removed. The file output is buffered in memory until 2k of data have accumulated to prevent frequent write access to Flash memory. The file buffer is also written to the file when the app is moved to the background.
This document is accompanied by an Excel file that gives a description on the fields of the .txt file described above. For analysis it often makes sense to copy and past the data contained in the text file into the Excel spreadsheet. Auto filters for each column have also been added for easy data evaluation.
When a unique cell change occurs and GPS information is available, the event will be logged into a separate file, “cell-change-log.kml”. The format is text/xml and can be used for import to Google maps (http://maps.google.com). A Google account is needed to use the “import” functionality on the website. As the app has no control when logging starts and stops, the XML header and footer need to be inserted after copying the file to a PC before data is imported to Google maps. The file “header-footer.kml” that accompanies this document contains the required XML structures for easy copy/paste to the KML file that is used for the maps import.
The Network Type that is recorded in each line is a number as given by Google's API. Here are some numbers and their meanings:
2 = GSM/GPRS/EDGE
3 = UMTS
8 and 15 = HSPA (some networks switch between 3 (idle) and 8/15 (DCH)
13 = LTE
The KML file uses three different styles to indicate the use of different network types. The numbers given by the Google IP are mapped as follows:
1,2=GSM is mapped to STYLE 2 and is then mapped to blue ballons in the KML header file.
3=LTE is mapped to STYLE3 and is then mapped to yellow balloons in the KML header file.
Everything else is mapped to STYLE 1 and is then mapped to red balloons in the KML header file
It is important to let the app run in the foreground at all times. It prevents the device to go to sleep mode, i.e. the display is always on to ensure it is supplied with location and cell information from the baseband processor. If put to the background (e.g. when going to the idle screen), GPS location tracking is disabled by the app and no cell information is recorded. Recording continues once the application is brought back to the foreground again.