Run Recorder

This is an Android application for recording agility runs. As I compete in USDAA only, only USDAA trials are directly supported at this time. If you'd like another organization added and are willing to volunteer to be my source for information about the organization, drop me an email.

Note what Run Recorder is not: it is not a database for tracking your title progression, total points, etc. It is for recording run data at the trial site, to later be entered into such a tracking program manually, or automatically if the program can read a Run Recorder export file. Run Recorder can also send its data to a database hosted by a server on the internet, which can then be used by a tracking program or any other application capable of accessing the database used by the server.

(The exception to the above is that you can track LAA progression, and the number of Qs and judges per titling class.)

Your Android device must be set to allow the installation of programs not downloaded from Google Play. Once the application is installed, be sure to set this back to off/disallow.

(Standard disclaimer about backing up your data, you incur all risks, etc. I use this application myself and developed it using my equipment, but just because it doesn't trash my equipment doesn't guarantee it won't trash your Android device, whether phone, tablet, or otherwise; that other applications won't interfere with it; that it won't interfere with other applications; etc. Since I don't have every Android device, I can't test every possibility, so Your Mileage May Vary.)

Permission Why Needed
ACCESS_COARSE_LOCATION: you may enter the coordinates of a site using the device's current location.
ACCESS_FINE_LOCATION: you may enter the coordinates of a site using the device's current location.
ACCESS_NETWORK_STATE: to check whether a network is available to query for a new version over the internet.
CALL_PHONE: you may click on a facility phone number to call the facility.
INTERNET: you may click on a facility web icon to access its web site; you may enter the coordinates of a site by geocode (specifically, the address).
WRITE_EXTERNAL_STORAGE: to access application data files.

Privacy notice: this application sends anonymous tracking data to Google Analytics. This data is subject to the Google Analytics Terms of Service which, among other things, forbids the use of personally identifiable data. I am tracking a minimal set of data in order to get an idea of how people are using the app. If you're uncomfortable with this, bear in mind that most applications track a lot more data without being up front about it ... oh, maybe that won't make you more comfortable, but you should feel better about my tracking.



This is an example Tomcat- and SQLite-based example Run Recorder server. It does not include Tomcat, SQLite or any other libraries but shows where they could be located and how they could be configured. There is also source code, released under the Apache License (excluding stock data and schema), that implements a server. There is no documentation. Setting up a server opens your home network to intrusion, and if you do not possess the requisite skill to create a server from this example, you do not possess the requisite skill to protect your home network.

Released: 28 May 2018
Minimum Android: 5.1 (Lollipop, API 22)
Target Android: 6.0 (Marshmallow, API 23)
Tested on Android: 6.0, 6.0.1 (Marshmallow)

Release Notes (2018.02)

  • Updated the target Android version to 23, Android 6.y.x, Marshmallow. With this version comes a new requirement to ask the user for specific permissions at run time, rather than blanket permission at install time. IF ANY FEATURE REQUIRING PERMISSION IS NOT WORKING YOU MAY NEED TO MANUALLY GRANT THE PERMISSION IN ANDROID SETUP. See the list of permissions on the app web page. I'll get everything implemented eventually.
  • Added .nomedia to the Run Recorder data folder so that media sniffers will ignore the folder.
  • Updated USDAA LAA Activity with the USDAA abbreviations of the classes.
  • Fixed display issue in USDAA LAA Activity where, after switching dogs, classes in which the current dog has no Qs retains the previous dog's value.
  • Added Biathlon Standard and Biathlon Jumpers to MC Championship and MC Performance.
  • Rearranged Challenge classes in USDAA LAA Activity for better display.
  • Added SuperQs to the USDAA Summary Activity.
  • RunRecorder.2018.02.apk

Release Notes (2018.01)

  • Added missing Cynosport World Games CH/PSJ and Grand Prix classes, and cleaned up their abbreviations.
  • RunRecorder.2018.01.apk

Release Notes (2017.03)

  • Added filter to USDAA Summary Activity to show classes with Qs or classes with Runs (and Qs).
  • Added classes with only historical Qs to USDAA Summary Activity.
  • Added historical Qs to USDAA Class Runs Activity.
  • RunRecorder.2017.03.apk

Release Notes (2017.02)

  • Renamed Championship/Performance MC to MC Championship/Performance to align with USDAA definitions.
  • Fix for accidental overlap of several class definitions in the database.
  • RunRecorder.2017.02.apk

Release Notes (2017.01)

  • Renamed MC Championship/Performance to Championship/Performance MC.
  • Added Championship/Performance MC Biathlon.
  • (2017.01 apk removed due to ... an issue).

Release Notes (2016.01)

  • Improved tablet detection so that display is sized appropriately.
  • Corrected veterans classes abbreviations.
  • Updated minimum Android version to 22 (Lollipop MR1) and added version 23 (Marshmallow) compatibility.
  • RunRecorder.2016.01.apk

Release Notes (2015.07)

  • Fixed sort in USDAA Runs to be by date, dog name, then class name.
  • Fixed Progress Summary calculations when history has been imported.
  • Fixed error on LAA screen when no LAA level has yet been achieved.
  • RunRecorder.2015.07.apk

Release Notes (2015.06)

  • Updated list of USDAA class abbreviations for Performance III.
  • Updated USDAA Runs listing to use USDAA class abbreviations.
  • Updated USDAA LAA listing to use USDAA class abbreviations.
  • RunRecorder.2015.06.apk

Release Notes (2015.05)

Release Notes (2015.04)

  • Updated level and judge sticky-values in USDAA Run Activity to be by individual dog.
  • Added a summary Activity of all classes with Qualifying scores, linked to a listing of all run results recorded for that class.
  • Added a last synced-from-server date so the entire database is not synced every time.
  • RunRecorder.2015.04.apk

Release Notes (2015.03)

  • Increased input Activities text size on large displays (> 1280 pixels).
  • Updated to use landscape tables in portrait mode on large displays (> 1280 pixels).
  • RunRecorder.2015.03.apk

Release Notes (2015.02)

Release Notes (2015.01)

  • Removed old update code to shrink app footprint.
  • Added Judges to the data recorded, synced and ported.
  • RunRecorder.2015.01.apk

Release Notes (2014.02)

  • Added ability to sync from a server, with requisite menu changes (SPECIAL NOTE: there is not yet any data-conflict checking and resolution, so do not simultaneously enter data on two or more devices without syncing. If you wish to enter data on another device, the device with unsynced data must first be synced to the server, then the other device synced from the server.)
  • Added new club and site.
  • RunRecorder.2014.02.apk

Release Notes (2014.01)

  • Added a navigation drawer per the Android suggested Best Practices.
  • Increased the size of the trials filter text to make clicking easier.
  • RunRecorder.2014.01.apk

Revised: March 19, 2017