Home‎ > ‎

RF Signal Tracker

Title page image

Initial Release: October 2009
Latest release: 2.5.59, January 2018
Next release: 2.5.60, February 2018

If the app is installed on the device you are viewing this page on, launch RF Signal Tracker

  • Monitor data traffic bytes.
  • Scrollable XY Chart of RF and WiFi signal strength, and Rx/Tx data traffic over time.
  • Voice notification of signal strength & technology changes, handovers, open hotspots, and more!
  • Notes! Insert notes into the RF data collected. Notes can be viewed & edited in Big Picture
  • 'Drive Mode' screen showing just RSSI, Cell ID, and technology to view while driving
  • Localized for French, Spanish, Portuguese, and German (thank you, Lutz!).
  • Map and record a color-coded signal strength marker as you travel.
  • The user can redefine site locations by long-pressing a point on the map.
  • Share current RSSI and Maps with Twitter, Facebook, whatever you can share.
  • Sector coverage zones describing sector orientation and beamwidth (requires loading site data into app).
  • Sound and Vibration notification on handover.
  • User-defined sites can be exported or imported for later use.
  • User site data can use optional cell names in addition to cell id.
  • Sites located on Google or OpenCellID saved to local database.
  • Export recorded data to XML, KML, or CSV files.
  • Roaming and data states, data activity, CGI.
  • WiFi MAC address, BSSID, supplicant state.
  • WiFi network access points identified.
  • EIRP/ERP and Free Space Loss calculator.
  • Display a Big Picture of your entire drive test.
  • Auto-shutoff at minimum battery level to save battery.
  • Adjustable GPS power settings.
  • "Wardriving" for WiFi hotspots (collect and record wifi routers seen).
  • Google Analytics for error tracking and usage analysis.
    Main screen
    Map screen

    RF & Wifi signal strength chart

    Analog Gauge
    RF & Wifi chart
    Drive mode display

    Example of data exported from RFST to a KML file and imported into Google Earth. 
    Drive test through Seattle shows signal strength from green, to yellow, to red, and sector coverages defined
    from that drive. Tower heights are all 100ft in the export and do not reflect actual heights.

    KML export of a drive into through Renton and Bellevue.


    RF Signal Tracker is an engineering application for doing an impromptu hand-held *drive-test* with your Android phone. You can monitor and record the RSSI (received signal strength indication) for the phone as well as the serving cell locations, describe the cell site's zone of coverage, and save or playback that data. Some of the parameters displayed in the app are already provided on the phone (go to Settings -> About -> Status to see them). The advantage of this app is you can now save, map, replay, export and analyze that data without elaborate and expensive equipment.

    The data is saved in a SQLite database on the phone and can be exported to a CSV, KML (Google Earth), or XML files. The CSV files can be imported back into the phone for review later review. In addition to signal strength, you also get the mobile's latitude, longitude, timestamp, and serving cell MCC, MNC, LAC, CellID, (or Base Station ID, Network and System ID for CDMA devices), the serving cell's latitude and longitude*, and network technology used (EDGE, HSPA+, LTE etc). 

    I have found that the serving cell location data from Google is a little spotty, at least for 3G. The OpenCellID.org service is not much better -- they actually have a terribly small database of cell sites -- but it's better than nothing. The problem is site location data is proprietary so it is not much you can do if you don't work for the given carrier.

    PLEASE, Please, please, remember: this app is intended for engineers...engineers who read. So please do not email me (or leave comments on Google Play) saying things like, "The app says the tower is off the coast of Africa!" The purpose of this app is not to find cell sites, but to record data.

    * Site locations are loaded separately.


    My biggest headache while building this app was with the GPS and the maps. Actually just the maps. I thought this would be the easy part since virtually every app out there has something to do with location services and mapping, but no. Actually getting the mapping info was easy, figuring out how to paint a trail onto the map was like pulling teeth. My problem was painting those signal strength dots on the map. You see, I can place markers on a map by using transparent layers and painting whatever I want on that. Problem is, it seems like everything out there is geared toward painting a fixed number of markers on the overlay layer. I wanted to paint (potentially) an infinite amount of marks -- who knows when the users will stop data collection? I thought I could just take a layer and keep adding marks to it and putting it back on the map, but it doesn't work that way and finding out how it does work is like searching for the Holy Grail. But enough bitching...

    • Using the default site location databases (Google or OpenCellID), sites will often times appear in places they clearly are not (in the middle of lakes, in another state, off the coast of Africa, etc.). This is because the serving cell is not in the database or its location is just wrong. The solution is to load your own site locations into the database.
    • When the phone is collecting data in the background and is in sleep mode (screen is off), the cell ID gets updated (which means the PhoneStateListener is working), but the signal strength reading never changes. A bug report has been filed with Google, but don't expect this to change.
    • The Bit Error Rate, EVDO, SNR and Ec/Io show a constant -1 reading (at least in GSM). This is the value the phone is putting out and not a processing error on the app's part.
    • None of the CDMA functionality has been tested by me directly as I do not have a CDMA phone or carrier contract (which is the real reason).
    • Most of the hardcore RF parameters you would want to see as an engineer are not exposed in the Android SDK. For most of that, you would need to get into the firmware of the specific device. Pretty much everything of value that I could show, I do, so the TEMS people are still in business.
    • I'm not a programmer. I'm an engineer who programs. So some things may not be as polished as I'd like.
    • As of this writing -- November 2012 -- Samsung devices do not provide neighbor cell information to Android. This is a Samsung bug.

    This application can be found on Google Play under "Tools".

    Android app on Google Play   
    Get the RF Signal Tracker Android app from SlideME.

    RF Signal Tracker Demo video

    Main Screen

    The main tab displays administrative data for the app and is broken up into phone, network, location, and wifi

    Status Bar: This bar, located at the top of the Main tab, contains the high-level data parameters of signal strength, technology (EDGE, CDMA, UMTS, HSPA+, etc.), data activity, and the number of rssi records recorded. The status bar itself will change color from red to yellow to green with the change in signal strength.

    RF/WiFi Toggle buttons: These buttons toggle the recording of RF cellular data and WiFi access points (green=on, grey=off). The number of data points recorded will appear in the field between the buttons. The top line is the number of RF points collected, the bottom is the number of WiFi access points collected. The WiFi database records the mobile location and the signal strength recorded at that point, not the actual location of the access point.

    DM button: Switch screen to the drive mode which displays an oversized signal strength, cellid, and technology readout. This will allow you mount the phone and easily view the essential parameters while driving.

    Voice notification: With voice notification active, the app will periodically announce the signal strength, cell id, technology, battery level, the number of open hotspots in range, cell handoff, RF and WiFi data points collected, and if the phone has no service.

    Number: The mobile's phone number.
    Phone Type: The device phone type (None, GSM, CDMA)
    IMEI/ESN: The unique device ID, for example, the IMEI for GSM and the MEID for CDMA phones.
    Manufacturer: Maker of the device
    Model: The actual model name used by the manufacturer.
    Sim Serial#: The serial number of the SIM, if applicable.
    Sim State: Returns a constant indicating the state of the device SIM card.
    Software Version: The software version number for the device, for example, the IMEI/SV for GSM phones.
    Sub ID: The unique subscriber ID, for example, the IMSI for a GSM phone.
    Signal Strength: Current signal strength the phone is receiving in dBm.
    Bit Error Rate: The GSM bit error rate (0-7, 99) (or the CDMA Ec/Io value in dB*10 depending on the technology).
    EVDO: Evolution-Data Optimized. A telecom standard for the wireless transmission of data through radio signals, 
    typically for broadband Internet access. It uses multiplexing techniques including CDMA as well as TDMA to 
    maximize both individual users' throughput and the overall system throughput.
    Ec/Io: The ratio of received pilot energy, Ec, to total received energy or the total power spectral density, Io.
    SNR: Signal-to-Noise Ratio. a measure used in science and engineering to quantify how much a signal has been 
    corrupted by noise. It is defined as the ratio of signal power to the noise power corrupting the signal.
    Battery Level: Displays the current battery level. The app will shut down at a level set by the user in the preferences screen.

    Operator: The alphabetic name of the currently registered carrier.
    Network State: Current network connection state
    Technology: The radio technology (network type) currently in use on the device.
    MCC/System ID: The mobile country code / CDMA system identification number, -1 if unknown.
    MNC/Network ID: The mobile network code used by the carrier. / CDMA network identification number, -1 if unknown.*
    LAC/Base Station ID: Location area code and cell id. / CDMA base station identification number, -1 if unknown.
    Cell ID/Base Station ID: Android presents the cellid as a hexadecimal number. This is converted to decimal for the user. 
    CDMA base station identification number, -1 if unknown.
    Cellname: Optional human readable cell name.
    Roaming: Returns YES if the device is considered roaming on the current network, for GSM purposes.
    International: Returns YES if the Sim Operator does not match the Network Operator which will happen if 
    internationally roaming (still working on this).
    Call State: The current call state (Idle, Ringing, off-hook).
    Country Code: The ISO country code equivalent for the SIM provider's country code.
    Known neighbors: A list of neighbors the app has previously recorded. While the app is in the Main, Map, or Chart tabs 
    it is automatically recording the handoff sequence. It is this sequence which is displayed here.

    Site database: Indicates whether you are using Google, OpenCellID, or your own Local site database to 
    determine site locations. This last state is intended for engineers employed by the carriers since site location 
    data is not generally available to the public.
    Best Provider: The best provider for determining your location. This is usually network (coarse) or GPS (fine) 
    based on your environment. If the GPS is blocked (in a building for example) the app will default to the cell network  
    to determine your location. Network location is less accurate, but quicker than GPS. The provider is determined
    by the app.
    Mobile Latitude: Your cell's current latitude in DMS format.
    Mobile Longitude: Your cell's current longitude in DMS format.
    Mobile Heading: Returns the direction of travel in degrees East of true North.
    Mobile Altitude: Height above sea leave as determined by the GPS sensor.
    Site Bearing: Returns the direction to the site from the mobile in degrees East of true North.
    Speed: Returns the speed of the device over the ground in meters/second.
    GPS Accuracy: Returns the accuracy of the fix in meters.
    Site Latitude: Latitude of the serving cell.
    Site Longitude: Longitude of the serving cell.
    Distance to Site: Distance of mobile to the serving cell. Note ~ If a site shows a distance of hundreds or thousands 
    of kilometers (or miles) away then the location service you are using (Google or OpenCellID) cannot identify thesite. 
    Try setting the phone to use only the 2G network. Best accuracy is attained by using a custom site location
    list uploaded to the app from the SD card. (see 'Select and load site records' under Database Maintenance).

    Data Activity: The current state of data traffic (IN, OUT, NONE, INOUT, DORMANT).
    Data State: The current data connection state (cellular).
    Mobile Rx bytes: The total number of bytes received through the mobile interface.
    Mobile Tx bytes: The total number of bytes transmitted through the mobile interface.
    Total Rx bytes: The total number of bytes received through all network interfaces.
    Total Tx bytes: The total number of bytes sent through all network interfaces.
    Mobile Rx packets: The total number of packets received through the mobile interface.
    Mobile Tx packets: The total number of packets transmitted through the mobile interface.
    Total Rx packets: The total number of packets received through all network interfaces.
    Total Tx packets: The total number of packets sent through all network interfaces.

    WiFi Enabled: Returns the WiFi state of the device
    SSID: Returns the service set identifier (SSID) of the current 802.11 network.
    BSSID: The basic service set identifier (BSSID) of the current access point.
    MAC: The phones MAC address.
    Supplicant state: Return the detailed state of the supplicant's negotiation with an access point
    RSSI: Returns the received signal strength indicator of the current 802.11 network.
    Link Speed: Link speed in Mbps
    Net ID: Each configured network has a unique small integer ID, used to identify the network when performing
    operations on the supplicant. This method returns the ID for the currently connected network.
    WiFi Networks Found: WiFi access points within range of the device.

    The Map tab shows a map centered on your location, any cell sites the device is now or has been attached to, and a 
    trail of color-coded signal strength data points. As you travel, the serving cell's coverage will be described. The Map 
    tab shows a map centered on your location, and any cell sites the device is now or has been attached to. A light blue 
    transparent wedge describing the coverage zone will expand and grow as long as the user is attached to that cell. Also, 
    if WiFi has been enabled, the strongest WiFi hotspot will be shown below the user's location.

    Stats such as signal strength, measured horizontal beamwidth, heading, CGI, site bearing, and distance are displayed at the 

    Sites can be edited by long pressing the map. A dialog will appear and display options based on whether you press an
    empty space or a site icon. The user will have the option to attach/detach cells to or from sites and relocate sites 
    (See 'Site Survey' for more details).

    Note: there is a menu option (Menu -> More -> Erase cell coverage) unique to the Live Tab. If selected this will 
    temporarily erase the coverage zones generated by the app. This is useful if redefining site locations and old coverage 
    areas no longer apply (the feature is still being worked on).

    RF and WiFi signal strength data over time is displayed in this screen. Cell and technology handoffs are indicated by
    a vertical line extending from the handoff point to the label. The wifi signal strength line will show the strongest 
    hotspot signal received with that hotspot's name marking the moment of change over.

    The legend is displayed in the upper left and shows the cell ID, technology, RF and wifi signal strengths. The timespan 
    (along the x-axis) of the chart is adjustable from 30 seconds to 5 minutes with 60 seconds being the default. You can 
    also take a snapshot of the chart at any time and share it with someone.

    Big Picture
    Recorded data is displayed on a "Big Picture" map showing your position, a color-coded signal level, and the 
    serving site location (if "Show serving cell" display is selected in preferences). 

    Got to Menu > Stats to bring up the basic statistics. These stats include distance traveled over the course
    of the recording, average handover distance, as well as the handover sequence. The handover sequence 
    shows the handover cell ID, the distance from that cell, and the timestamp at the point of handover, and signal 

    Data can be saved and exported as a KML file which can be imported to Google Earth. See Database below.

    The DB tab lets the user interact with data files, import market data, save recorded data, delete files, etc.

    Import Site Records
    Let's the user import CSV formatted site data. This data will be added to any data already in the database. 
    This is where you load the data containing the site location info. This data must be in a CSV file located in
    the 'rfsignaldata' directory of the SD card. Data must be in the order: MCC, MNC, LAC, CI, LATITUDE, LONGITUDE. 
    Leave no spaces. LAT/LON must be in decimal format (example: 47.512017,-122.608083).

    Export Site Records
    Let's the user export CSV formatted site data. This is useful for saving edited site location data. 

    List cell site records
    List all the sites in the database. Selecting a site will display the site on the map and any surrounding sites up 
    to a distance selected by the user.

    Delete site records
    Remove all site records from the database. If you want to clean out the data and start over or load a different set this
    is what you use.

    Import RF RSSI data
    Reload previously saved signal strength data. This data will be added to any data already in the database. 
    Data that you export (in CSV format) can be reloaded, this is where you do that. The file must have a header with 
    data in the order: _id, latitude, longitude, rssi, logdate, mcc, mnc, lac, cellid, site_lat, site_lng, tech. Where _id is 
    the record index (an integer), latitude and longitude is the user position and multiplied by 1,000,000 
    (example 47576047,-122168140). This is necessary to eliminate rounding if a float or double is used. These numbers 
    are converted after import. 'logdate' can be in any standard format but try to have it to the second. site_lat
    and site_lng are the site latitude and longitude of course. These numbers must also be multiplied by 1,000,000. 
    tech is the technology used and can be any string value.

    Long pressing the file name launches an options screen to Rename or Delete the files.

    Delete RF RSSI data
    Deletes all signal strength records from the database.

    Save RF RSSI data
    Save recorded data to XML, Excel CSV, or Google KML file. Saves recorded signal strength data to a file under the 'rfsignaldata' directory.

    Import WiFi data
    Load recorded wifi data.

    Delete WiFi data
    Delete any recorded wifi data from the database.

    Save WiFi data
    Save collected wifi data. Shows the total number of records.

    List WiFi Hotspots
    List all WiFi hotspots recorded in the database. Hotspots can be filtered by SSID or by security settings. Selecting an item
    will map the strongest received signal for that hotspot.

    Known Neighbor List
    This is NOT a list of neighbor cells from the base station, but the handoffs recorded by the device.

    Export Neighbor List
    Export the complete list of neighbors collected.

    Clear Neighbor List
    Delete the current list of neighbors in the neighbor's database.

    Review test notes
    Review and edit the notes created during RF data collection.

    Playback recorded data
    Play back recorded data currently in memory. Loading new data into memory requires restarting the app 
    before playing back.

    Share your data!
    Send a site, signal strength, or wifi data file as an email attachment.

    Big Picture
    Show a map of all of the recorded RF data points.

    Clear all data points
    Delete all RF and WiFi data points from the database.

    Toggle 2G/3G
    This button will open the Settings activity allowing the user to set the phone to use only the
    2G network. This can save battery life and provide for more accurate cell location (using the Google 
    or OpenCellID location services) since the 2G GSM network is older and more established.

    Vibrate alert: 
    The phone will vibrate every time it switches to a new serving cell.

    Sound alert: 
    The phone will play the default notification sound every time it switches to a new serving cell.

    Show serving cell:
    The application will attempt to identify the serving cell's location. If selected, the serving cell will appear as 
    a blue dot with a black line connecting it to your current position.

    Sector coverage:
    While in Live or Recorded Data a transparent blue sector coverage will be drawn around the point of furthest 
    coverage. The sector coverage will expand if the phone holds on to a given site beyond the previous max 
    coverage point. Please note that this is a rough coverage estimate for a site. Coverage in a given direction is 
    determined by buildings, hills, foliage, and other clutter between the cell and mobile unit.

    Show Signal Strength:
    This selection will leave a trail of signal strength dot markers as you travel. The marker color will indicate your
    signal strength at that point. Solid red (no signal) is about -113 dBm, yellow (moderate signal) about 
    -84 dBm, and green (strong signal) about -59 dBm. Leaving this box unchecked will display a single dot (with color
    coding based on RSSI as well), but no trail will be left as you move.

    Unit of measure:
    Choose to display distances using the English or metric (default) mode.

    RSSI dot size:
    Set the size of the rssi signal strength dot on the map.

    Site database:
    Set the site database used to determine your serving cell location. Note ~ Google's location services (the default) 
    is increasingly becoming hit-or-miss, and OpenCellID.org still has a relatively small database of cell sites. If either 
    of these options is not working for you, and you have access to site location data, you can place that data in a 
    CSV file and load those records into the application.

    To load site data:

    1. Using your USB cable, plug the phone into your computer.

    2. Slide down the notification bar at the top of the screen.

    3. Select 'USB connected' under Ongoing events and mount the card. The phone will appear as a new drive 
    on your computer.

    4. From your computer, copy the CSV file to the "rfsignaldata" directory on the  SD card. Please note, earlier 
    versions of the app had users place their data in the root directory. Most of these files were automatically 
    moved after the v1.2.4 upgrade, but if you have any data still in the root you will need to move it.

    5. Unmount the phone and load the data into memory by selecting Menu -> Records in the app. In the 
    Records screen select the items 'Load site records (csv)' or 'Load RSS data (csv)'.

    NOTE: The site data must be saved in a CSV file where the first line is a header. The data must be in the 
    order: MCC, MNC, LAC, CELLID, LATITUDE, LONGITUDE. Latitude and longitude are in decimal format 
    (example: 47.512017,-122.608083) Be aware that 6,000 records can take about 3-minutes to load and 
    take up about 500kb of memory. Once loaded you should not need to reload except to correct data or 
    add another market.

    Map mode: 
    Choose either the standard Map view or Satellite overlay map (just like in Google Maps).

    GPS refresh: 
    This is the time interval the phone\'s GPS will wait before updating. Try to balance this with the update 
    distance to minimize power consumption. NOTE ~ regardless of the refresh-time setting, the update will 
    only occur if you move during that time period (see GPS update distance).

    GPS update: 
    This is the minimum distance you must travel before the GPS will send an update. Try to balance this with 
    the update time to minimize power consumption. If you are taking measurements while in a car you may 
    want to use the longer update interval or else the GPS may run continuously. Remember, if you do not 
    move, the GPS will not update even after the minimum refresh time has elapsed.

    GPS power: 
    This sets the power consumption of the GPS while in use. There is not a lot of documentation on what these 
    levels mean beyond the obvious. 
    I leave it to the user to make that choice.

    Center map on user: 
    The map will scroll to the users location. As you travel the map will constantly shift to display that user local. 
    If using the site survey feature you may want to uncheck this feature since it will make selecting a site icon 
    easier (the screen won\'t move under your finger).

    Export file format: 
    Data collected through 'Log data points' or while in 'Record' mode can be saved to either an XML or CSV file 
    format. Files are saved to the root directory of the SD card under the name 'export_yyMMDDHHmmss.xml' 
    or 'export_yyMMDDHHmmss.csv', where 'yyMMDDHHmmss' is the year, month, day, hour, minute, and 
    second the file was saved. You can copy to your computer by following these steps:

    1. Using your USB cable, plug the phone into your computer.

    2. Slide down the notification bar at the top of the screen.

    3. Select 'USB connected' under Ongoing events and mount the card.

    4. At this point you should see the phone's SD card appear as a new drive on your computer. 
    Open it and you will see your exported file. Copy to your computer.

    5. Make sure you unmount the card before removing USB cable.

    Current battery level:
    When the battery drops below the indicated level the app will shut down. You will 
    not be able to restart it until it is recharged above this level.

    Map Neighbors:
    If selected, during Live Data display neighbor sites are shown while the mobile is reselecting. Neighbor sites 
    are shown as gray squares with gray lines running from the mobile's position to the site. This preference works 
    best while the phone is in 2G mode. NOTE ~ If you see a neighbor Cell ID of 65535 then this is a non-existent 
    or unknown cell and it will not be displayed.

    Error messages:
    Display minor error messages. For administrative use primarily.

    Sticky cells (experimental):
    Forces the phoneStateListener to reset if the mobile travels over 2.0km and the RSSI increases by 6dBm without 
    ever handing over to a new cell.

    Fix the device orientation to portrait or landscape. Any change will take place after the app is restarted. This is 
    because, in Android, reorienting the screen causes the activity (current screen) to restart and was problematic 
    for the app.

    WiFi Network Scan:
    Display nearby WiFi access points along with signal strength. This is for information purposes only at this point.

    Eliminate Outliers:
    Occasionally during recorded data playback, some data points will appear well outside of the main track of recorded points. 
    These outliers can spoil the coverage zones being drawn. By checking this option, these outlying data points will not appear 
    during playback. This app determines outliers by measuring the mobile speed. If the speed between two points exceeds 100mph, 
    then the new data point is flagged as an outlyer and skipped.

    Voice notifications:
    Using Androids built in Text-To-Speech (TTS) capability, the RFST can now speak to you, eliminating the need to watch the screen 
    for changes. Check the box to activate and signal strength changes, handoffs, technology changes, and no services announcements 
    can be heard over the phones speaker. You may be prompted for a one time install of the speech engine.

    Recorded Data
    Recorded data is displayed on a map showing your recorded position, the serving site location (if site display is selected 
    in preferences), key data points, and a graph of signal over time. The pane at the bottom of the screen shows RSSI, the 
    time stamp of the record, the bearing of the site (degrees east of north), the distance to the site in kilometers, and the 
    LAC and Cell ID.

    The Seekbar lets you move forward or backward through the data.

    Click Stats from the Menu options screen to bring up the basic statistics. These stats include distance traveled over the 
    course of the recording, average, minimum and maximum handover distance, as well as the handover sequence. The handover 
    sequence shows the handover cell ID, the distance from that cell, and the timestamp at the point of handover.

    Click Filter to see technology, handoff points, data states and signal strength.

    To save this data to the SD card press the menu button and click Save. The file will be named rfsignalstats_yyMMDDHHmmss.txt, 
    where 'yyMMDDHHmmss' is the time stamp of the moment the file was saved.

    Menu Options
    Menu options vary depending on which screen you are on, but these are the options you will encounter:

    This will take you to the preferences screen.

    Save Rec: 
    This will export the RF data (not Wifi, that has to be saved through the DB tab) collected to the SD card in the 
    format you have selected in the preferences screen.

    Mapshot will take a screen shot of the Map (or whatever is on the screen when presented this option). The image 
    will be saved to the rfsignaldata directory on the device, and a popup window will appear giving you the chance 
    to share the image on Twitter, Facebook, by email, or whatever app you can share on the device.

    RF Calculator
    The calculator tab gives the users a fast and dirty EIRP/ERP and free space loss calculator. No numbers need be
    entered. Simply slide the given bars for gain, loss, distance, etc., and the numbers are calculated immediately. 
    I originally put this in because I was doing a lot of power density analysis and it seemed related. I leave it 
    to the users to decide on its usefulness.

    Big Picture: 
    Recorded drive test data is displayed in its entirety showing Signal Strength, serving cells and sector coverage
    . This is a static display of data and you must have recorded data in the database to show anything.

    Let's you share your signal strength readings and location with Twitter, Facebook, email, or anything your
    device is connected to. For the truly anal among you.

    One Cell Tracking: 
    With 'One Cell Tracking' users can track the coverage of a single cell site. With single-cell tracking, RSSI turns red 
    if the serving cell is not the tracked cell. Standard colors show otherwise.

    Go to Menu > More > One Cell Tracking, and enter the Cell ID of the cell you wish to track and press the 
    'Start' button. Pressing 'Stop' cancels single cell tracking.

    Map Mode: 
    Set map to satellite or standard map mode (default).

    Screen Orientation: 
    Fix the screen orientation to portrait or landscape. You may have to restart the app before this takes effect.

    Display nearby sites
    Select this item to display sites within 2km of your position. This works best with your own Local data.

    Erase cell coverage
    Erase coverage zones painted on the map (this feature is a work in progress).

    Site Survey
    One of the great deficiencies of the app is that, unless you are an engineer for a cellular carrier, you probably do not 
    have access to a complete and accurate site location database. Therefore, I have added a feature which will allow 
    a user to insert a site on the map, and in turn the site database, by simply pressing a spot on the map. Not perfect, but 
    it does minimize the shortcomings of the open source location services on the web. Instructions are below.

    Long pressing (2 seconds or more) an empty spot on the map will launch a dialog which will give the user the 
    option of inserting the current serving cell into that spot on the map. This will allow users to define site locations 
    even if they do not have access to specific site location data.

    Long pressing a site icon on the map will launch a dialog giving the user these options:

    Move XXXXX to the selected site - This will attach the current serving cell to the site represented
    by the selected icon. Often, Google will show two sites as separated by a few dozen meters when, in fact, 
    they are sectors on the same site. This option lets you bundle these cells together on the one site.

    Move selected site to cell XXXXX - This will move all the sectors on the selected site to
    the same site as the serving cell. Like the first option but in reverse.

    Remove selected site and all attached cells
    - This removes (temporarily) all the sectors on
    the selected site from the database. If you are using the Google or OpenCellID location services then the cell 
    will appear in its original position (If you handover to that cell, the app will first search its database for the cell 
    and then go online to find it. If it is successful it will store that cell location back in its database). If using 
    Local location then the site is deleted from the database but can be reloaded from the original data file.

    Remove XXXXX from the selected site - This option removes the specific cell from the selected 
    site. All other cells remain unchanged. This is used if you attach a cell to the wrong site.

    The app may take several seconds to show any update made by the user in this way.

    Note: A black line will always extend from the user location to the serving cell.

    v2.5.64  Set a data insert interval based on the speed of the mobile. Eliminated duplicate location updates. Adjusted signal strength marker sizes.

    v2.5.60  Fixed bug in and changed the size of, signal strength marker size. Fixed the format of latitude and longitude in RF and WiFi CSV output files.

    v2.5.59  Made automatic map centering optional and fixed the automatic map zoom problem. Fixed the preferences so that the 
    application does NOT always back out to the main activity.

    v2.5.58  Cleaned up permissions across activities. Adjusted signal strength marker size as well as the marker insert interval in the map.

    v2.5.57  Fixed method for retrieving the CGI. App now properly displays and updates MCC, MNC, LAC, and CI. Rearranged a few permission 

    v2.5.56  Fixed update of the MCC, MNC, LAC, and CI parameters. Adjusted the size of the location markers on the map. Removed 
    the map auto zoom and orientation function.

    v2.5.55  Corrected the map display bug. Added a filter to the data logging to record only one record per position.

    v2.5.54  Corrected NumberFormatException error in WiFi database caused by trying to parse the capabilities string as an integer.

    v2.5.53  Removed the endTransaction command for Wifi recordings. This command appears to have caused the app to periodically 
    crash. Wifi is automatically switched on.

    v2.5.52  Added logging routine to capture error messages.

    v2.5.50  Worked on the formatting of the Calculator, Preferences, and Site and Cell Maintenance screens. Testing the app on LTE device.

    v2.5.49  Added privacy policy to app. The link can be found in the application's "About" page.

    v2.5.48  Corrected Big Picture data display. Fixed random crashing problem when launching the main map. Changed 'Network ID' 
    to 'Frequency' in the Main screen under WiFi group. Fixed data recording problem while in chart display.

    v2.5.47  Fixed calls to the Map activity to correctly update the mobile devices map position. Reestablished the title bar to the map 
    activity. Removed the deprecated recreate() command in the map activity which was locking up the app. Replaced 'Map Track' 
    with 'Standard Map' in the menu list.

    v2.5.45  Changed application icon. Adjusted gradient colors, uncommented location listeners RFGauge, calibrated needle in 
    analog gauge to line up with numbers.

    v2.5.43  Improved the RF/WiFi analog gauge. Administrative modifications to the Google Search Console.

    v2.5.42  Activated 'Deep Linking' which will launch the app from an android browser link.

    v2.5.41  Snapshot function removed -- screenshots can be taken by pressing Power + Volume Down.

    v2.5.40  Increased the RSSI dot size. Returned coverage bubbles to the map. Set the main map to appear above the data 
    display rather than behind it.

    v2.5.38  Restored the display of RF coverage zones. This was needed due to Google's removal of drawArc method on the 
    Android map. This is a work in progress.

    v2.5.37  Using the new Android Permissions process. Basically, most permissions are being granted automatically, but a 
    must be granted in the code. Found source of fatal error in the Chart activity that was crashing app: mNotificationManager was being 
    initialized inside an IF statement and later set. Was turning on a variable that was not always initialized. Fixed map error caused by 
    referencing RF and WiFi record buttons before they were initialized.

    v2.5.36  Added the Cell ID bit-mask, 0xffff, to LAC in GSM. Validating that handoffs are captured.

    v2.5.35  Corrected more errors causing maps to not display. Added a 'Previous CID' parameter to show the last serving cell 
    -- this is in addition to the current serving cell. Added 'Arbitrary Strength Unit' to main screen. App now compatible with 
    Android 5.1.1 and 6.0.

    v2.5.11  Major reworking and bug fix of the Map.

    v2.5.9  Since Android's neighbor cell information is problematic, the app now creates its own database of cell handoff data as 
    you travel. This data is collected automatically in the background. As you travel, the app will note the current and previous cells 
    when a handoff occurs, and save that data to a database for later retrieval.

    v2.5.8  More bug fixes caused by the use of the cellname feature.

    v2.5.7  Fixed crash on startup while in Map or Chart tabs.

    v2.5.6  An optional cell name may be included in the site location data loaded into the database. Simply add the cell name 
    after the longitude and change the header to: mcc, mnc, lac, ci, latitude, longitude, cellname. Again, this is optional, you can 
    continue to use your current site files (See About the App or visit the app's website for instructions). Trying new neighbor display 
    algorithm. Long press a cell in the site list (DB tab) to get directions to that site.

    v2.5.5  Corrected the \'View not attached to window manager' error. This error caused the app to crash if the orientation changed 
    while a progress dialog was displayed. Fixed the text box sizing problem on the SlidingDrawer on the Map tab.

    v2.5.4  Found a bug in Chart with caused it to run at double normal speed. Bug fixes.

    v2.5.3  In order to better understand crashes, exceptions, and force closes, RF Signal Tracker now uses Google Analytics to 
    collect anonymous usage statistics for the app. These counters will help determine exactly how the app is used aand where
    problems may exist. No identifying information about the device or user is collected or sent. To Opt-Out of the collection 
    go to Preferences and check the box next to Google Analytics Opt-Out.

    v2.5.2  Increased the minimum OS level needed for the app from Android 2.1.x to Android 2.2.x. Traffic stats now included on
    the Main tab under Traffic group. Transmitted and Received traffic bytes now included in recorded data. Testing a new method 
    for pulling LTE signal strength.

    v2.5.1  Changed the application\'s sleep settings. The application will now remain on at full brightness all the time. In the 
    chart, open hotspot names will be bracketed by asterisks. Example: *NAME*. Removed time-scaling from the chart, but 
    expanded and made the chart scrollable.

    v2.5.0  App now includes the ability to record data at specific timed intervals. Warning: this can produce very large files, 
    use with caution! Go to Preferences > Recording interval to set. Signal strength can now be viewed over time in an XY line 
    chart. RF signal strength will appear in green. The magenta curve indicates the strongest wifi signal in range. The time 
    scale for the chart is adjustable.

    v2.4.6  Update of the Spanish localization text. Thanks, Augusto! Moved the data panel, at the bottom of the Map screen, 
    to a sliding drawer. Fixed site selection bug. Added function to take a snapshot of maps, save to sd card and share.

    v2.4.5  Bug fix for activity that lists files on the SD card. Added new drive mode screens.

    v2.4.4  Darkened the sector coverage color. Minor adjustments to the voice notification timing. The map will not update 
    below -102 dBm. This will improve performance when viewing the map by not demanding map tile updates when signal strength
    is at its worse. Fixed bug calling the last Tab used.

    v2.4.3  Big Picture display can now be filtered for handoffs, technology, and data activity as well as rssi. This allows the 
    user view these changes graphically. Fixed a screen orientation bug that causes a force close if the device was not oriented 
    correctly. To turn off coverage zones in Google Earth KML file exports, uncheck 'Sector coverage' in Preferences.

    v2.4.2  Text To Speech (TTS) incorporated into 'Main' and 'Map' tabs. Voice notification of handoffs, technology change, 
    battery level, etc. (see Preferences to activate and select language). Record notes can now be added while collecting 
    data. Add observations, take note of dropped calls, service outages, etc. New \'Drive Mode\' view added to Map and Main 
    tabs. Press the 'DM' button and show signal strength, cell id, and technology in large font, good for drive tests where 
    viewing details is difficult.

    v2.4.1  Corrected a bug in KML file export that caused exports to fail if the recorded signal was -200 dBm. 
    Outlying data points can now be eliminated from playback (see preferences).

    v2.4.0  Moved calculator from the tab to the Menu group and switched the database activity to the Calc tab. RFST 
    now includes a wardriving feature which lets users collect, search and map WiFi data. Changed 'Device Type' to 
    'IMEI/ESN'. Changed nearby site display (Menu > Display nearby sites) to show sites within 2km of user location rather 
    than serving cell. Moved the record button to address a bug caused by having it on the menu. Transparency of the data 
    fields on Map screen is adjustable (Menu > More > Data field transparency).

    v2.3.4  Signal strength, technology, data activity, and data points recorded now in the top status bar of the Main tab. 
    Recorded data now includes device manufacturer and model. Any RSSI data will be saved as 'v2_3_3_rssi_database.csv' 
    in the rfsignaldata folder on the sd card. The Main screen now includes the ISO country code equivalent for the SIM 
    provider's country code. Created a cleaner display of data fields on maps.

    v2.3.3  Corrected a bug in the recorded data screen. Corrected signal strength reading when no service detected. 
    Background recording will start automatically if the user exits while recording. Added median RSSI to statistics 
    calculated in recorded data stats. Network type now includes iDen, EVDO B, LTE, eHRPD, and HSPA+. Data files 
    can be shared as email attachments.

    v2.3.2  Application now localized for French, Spanish, Portuguese, and German! Please let me know of any odd 
    translations (I used Google Translate...that's my excuse).

    v2.3.1  Users can populate known cells within 2km of serving cell (Menu -> Load nearby sites). 
    Cell site location optimization searches for sequential cell IDs within a given distance of each other and aligns 
    their LAT/LONs. See (Menu -> List cell site records -> Menu -> Optimize site locations) in the Live tab. Cell IDs 
    no longer overlap. Serving cell ID is shown in red. Fixed display bug when viewing Big Picture from recorded data 
    playback. Fixed list focus on the preferences screen.

    v2.3.0  Clarified and improved cell site redefinition including messages returned - serving cell can be attached to 
    a selected site or vice versa and sites can be removed. Google and OpenCellID site locations are now saved to the 
    app database for faster retrieval and data modification. Site list can be exported. Individual sites in the list 
    can be mapped along with neighbor sites within a specified radius. Included list of WiFi access points detected along
    with signal strength in the main screen. Updated the Help and About screens for the app. Fixed vibration and sound 

    v2.2.10  Corrected error caused by the user performing an Add/Remove when no site exists in the database. Fixed 
    screen orientation bug. Added Free Space Loss to the calculator. Mobile heading now determined by device compass. 
    Compass overlayed on Live data map.

    v2.2.9  Improved method for importing data (site or signal strength measurements) into the database. If the 
    GPS provider has not been available for more than 45 seconds the GPS is re-initialized. Can now import site 
    data from Celltrack 3.0. Users can define or remove site locations by long pressing the map (at least 2 sec) 
    and following dialog commands. Long pressing an icon will launch a dialog asking if you want to remove that 
    site. This will let the user define site locations if all other methods fail.

    v2.2.8  Corrected a bug in identifying the CDMA network operator. Improved initial Site location determination 
    allowing automatic cellular network or GPS location acquisition (you'll find yourself on the map quicker). 
    Removed GPS and network selection from preferences. Reduced max gain and loss in ERP calculator to 30dB. 
    Fixed minor bug in site bearing (was showing bearings from 180° to 360° as -180° to 0°).

    v2.2.7  Updated the layout of the Main screen -- cleaner, easier to read. Can now share basic stats with
    the world! Post current signal strength, carrier, and location to Twitter, Facebook, email or whatever 
    communications app your device has. Better GPS initialization. Serving cell neighbor list is more persistent.

    v2.2.6  Tabbed screens introduced. Had to rework the relationship between the activities involved. 
    Added an informal ERP calculator. Use a slide bar to do a fast ERP/EIRP calculation using power, gain and line loss. 
    Better GPS and phoneStateListener shut down -- no more hanging GPS!. Fast scroll bar added to file list screen. 

    v2.2.5  User can now manually set screen orientation (Menu > More > Screen orientation). Adjusted 
    sticky cell reset routine (still experimental). Found bug in the sector coverage paint routine 
    (mix up between degrees and radians).  Several little bug fixes.

    v2.2.4  Screen orientation fixed to portrait. This is done to eliminate app restarts which happen whenever 
    the orientation changes. Added switch in preferences to turn off sticky cell reset -- this feature
    is for testing only. The playback speed of recorded data adjustable by going to the menu button.

    v2.2.3   Added a condition to prevent the display of bogus site data such as Lat=0.0 and Lon=0.0 or a 
    site more than 50 km from mobile. Improved coverage radius calculation. Removed the sector 
    coverage offset option under preferences since this is no longer needed. Also added a feature to break
    the connection from a "sticky" cell connection. If the app holds a connection to more than 
    2.5km from the initial handover point and the power has increased by 6dBm then the phoneStateListener 
    is disconnected and restarted.

    v2.2.2   After an extended re-introduction to trigonometry I was able to develop a slightly better 
    bearing method in my code which, in turn, improves the sector coverage.

    v2.2.1   Included ability to add a sector orientation offset (See Preferences). This will patch the bug
    reported showing sector azimuth being 90 degrees off while I investigate a solution. The default 
    offset is 0 deg.

    v2.2.0   Changed coverage bubbles to sector bubbles. Each cell\'s coverage is painted as you travel 
    showing sector orientation and distance. Altered the database to save data state and data activity. 
    Modified the Recorded Data screen with a slightly updated interface using a SeekBar and Stop/Play 
    button. Data plays continuously on a loop. Fixed map mode bug and other fun things.

    v2.1.11  Fixed and tested the map display update (was not properly refreshing while in Live Data). 
    Added 'One Cell Tracking' that lets user track coverage of a single cell site. With single-cell tracking 
    RSSI turns red if the serving cell is not the tracked cell.

    v2.1.10  Fixed map update bug.

    v2.1.9   Added option to select a location provider. The user can choose to have their location provided 
    GPS or the cellular network. Worked on several other tiny bugs. I think the Google people 
    tightened up SQLite because doing things like not closing Cursors is a big no-no now.

    v2.1.8   This update affects only Android 2.2 (Froyo) and higher users. The app can now be moved to the sd card.

    v2.1.7   Fixed error message checkbox bug. If the app cannot find a site\'s location it zeros out the 
    Since 0.0N, 0.0W is a point off east Africa, this was causing much confusion with users, 
    so I made a small fix
    to the display of site location info. Corrected some typos.

    v2.1.6   Added check verify that SD card is present.

    v2.1.5   Added option to export data to a Keyhole Markup Language (KML) file format which can be imported
    into Google Earth. Users can now edit output filenames. Moved the Live Data and Recorded 
    Data buttons on the main screen to the bottom of the screen for easier access.

    v2.1.4   If using Local site location data and the site is not in the user database of sites,  the app will default
    to the Google location service. Fixed Force Close bug caused by a wake lock being released

    v2.1.3   Added neighbor site display to Live Data map. User toggles display in preferences. This 
    works best in 2G.

    v2.1.2   Added check for international roaming. This checks if the MCC of the Sim operator equals the 
    MCC Network operator. A non-match would mean the phone is roaming internationally. For now, this 
    indicator has only been added to the main screen. Roaming state is now one of the parameters saved to 
    the database.

    v2.1.1   Application will no longer shut down if it is below the user's minimum battery level setting
    but on AC power. Also fixed a bug in the minimum battery level fail-safe routine. Included battery 
    level in phone stats on the main screen.

    v2.1.0   Remodeled preferences screen. Created a service to allow for data collection in the background. 
    This new service includes a minimum power level fail-safe to keep from depleting the battery.

    v2.0.1   Fixed the data import to accept data collected with the Donut version of this app. Put in a couple safety
    dialogs when deleting the site or rssi data. Using NetworkOperator rather than subscriber id to identify the MCC.

    v2.0.0   This is the first version built for the Android Eclair OS. It incorporates the new onSignalStrengthsChanged 
    method in Android v2.1 which includes Bit Error 
    Rate (BER) and Ec/Io. Renamed the app to reflect this change 
    and called it RF Signal Tracker (Eclair). Pre 2.x 
    versions will be known as RF Signal Tracker (Donut). Corrected 
    text sizing issue seen between myTouch and Nexus One.  
    Added user adjustable rssi signal strength dot sizes. 
    Added complete drive test display feature.

    v1.2.9   Incorporating the new onSignalStrengthsChanged method for Android v2.1 which includes Bit Error 
    Rate (BER) and Ec/Io. Corrected text sizing issue is seen between myTouch and Nexus One. Added user adjustable 
    rssi signal strength dot sizes. This version does not support CDMA and is intended for the Android Donut OS.

    v1.2.8   Button formatting fix for Droid phones. Sim SN displays 'n/a' for non-GSM phones.

    v1.2.7   Bug in the file delete and rename method fixed. Corrected wording in Help section.

    v1.2.6   Bumped the minimum Android version required to v1.6 (Donut) after discovering the cdma libraries 
    I was pulling do not exist in v1.5, and was crashing the app for those users still on Donut.

    v1.2.5   Added more graceful cdma error handling.

    v1.2.4   Improved record count query to eliminate duplicates; Fixed bug in menu Record button. 
    Showing cellID on the map. Moved data files to a new subdirectory. Users can delete or rename data files from app by 
    'Long Pressing' a listed file. Adding initial parameters for CDMA phones (experimental).

    v1.2.3   WAKE_LOCK added to prevent app from sleeping during use. Tweaked the Google location service and discovered 
    better results by using the 2G network only.

    v1.2.2   Re-ordered selections in the preferences screen and added English-metric distance display in pref as well. 
    App will not exit if RF signal not found, it just won't be able to ID cell towers.

    v1.2.1   User can select map centering on current position or a point between the user's position 
    and the site; File import verification; MNC fix for T-Mobile CGIs; Coverage bubble 
    around cell sites (see preferences screen); Basic statistics through the menu on the Recorded Data screen.

    v1.2.0   Recorded signal-level data playback.

    v1.1.1   Graceful exit if the user has no wireless or GPS service.

    v1.1.0   Users can load custom site locations from their SD cards for more accurate tracking.

    v1.0.3   Converted displayed CellID from Hex format to decimal format; User can choose location service 
    used to determine the serving cell location; modified data storage to take complete LAT/LON.

    v1.0.2   Included network technology in database export. Filtering out erroneous serving site data.

    v1.0.1   Fixed database delete from menu. Adjusted default preferences.

    v1.0.0   Initial build