Track 1 & 2: Software

Software Specifications for EvAAL Competitors

On-site tracks

 

Competitors of EvAAL 2017 have to code an Android application designed for smartphones (no tablet are allowed) that:

  • computes the location of the target user during the measurement session
  • reports the estimated position twice per second to the measurement application (aka the StepLogger app).

We provide two Android-based applications:

StepLogger provides two operations:

  1. a logging service designed to log the position computed by the applications of the competitors (Section 1) as well as the time you press the buttons shown
  2. a GUI to perform the measurements (Section 2)

StepLoggerClient provides one operation:

  1. a fake localization system generating fake positions and invoking the logging system of StepLogger

 

APKs are available for download here.

Source code of the appliations StepLogger and StepLoggerClient are available:

https://ala.isti.cnr.it/home/svn/software/localization/Android/EvAAL/

svn://ala.isti.cnr.it/software/localization/Android/EvAAL

with usernamecompetitor and passwordcompetitor

 

1. StepLogger Logging Interface

StepLogger provides a simple service for the applications of the competitors. The service is implemented with one single method named:

void logPosition(in long timestamp, in double x, in double y, in double z); 

which is provided by the StepLogger app; the mothod should be invoked through the AIDL interface. Specifically, competitors must add the StepLogger AIDL file to their Android project and invoke the logPosition method twice per second.

Every time the competing app calls logPosition StepLogger logs the following information:

  • Time stamp: time in milliseconds from the Unix epoch, as returned from the currentTimeMillis() method provided by the Java System class
  • Coordinates x, y, z : x and y are longitude and latitude , respectively, in the WGS84 reference system, while z is the floor, that is an integer number with 0 indicating the ground floor.

This information is stored in the file positions.log, as detailed below under “StepLogger Logging mechanism”.

1.1. How to use the StepLogger AIDL interface

  • Add the AIDL file in the right Java package, namely it.cnr.isti.steplogger
  • Invoke the logPosition method by following these steps:
  1. Create an Intent object
  2. Set the class name of the intent object with:
    1. BOUNDSERVICE_PACKAGE = "it.cnr.isti.steplogger";
    2. BOUNDSERVICE_CLASS = ".StepLoggerService";
  • Invoke the bindService(…) method provided by Android OS in order to bind to the service that matching with BOUNDSERVICE_PACKAGE and BOUNDSERVICE_CLASS
    void bindService(in Intent intentService, in ServiceConnection mConnection, in int flags);
    

     

    You should download the apk and the source code of the stub StepLoggerClient application, which intended to provide an example of how the competing application should interact with the StepLogger. StepLoggerClient shows a GUI with two buttons: START LOGGING POSITION and STOP LOGGING POSITION.

    Note: Since StepLoggerClient invokes a method provided by the StepLogger app, you have to first start a new measurement session (See Section 2.1)