This document is intended for system programmers, and is highly technical in nature.  It describes the architecture of the Android App, specifically, its data and its processes.  The following topics are described:

  1. The database schema within the ODIN App
  2. First time use operation of the ODIN App
  3. How services are launched
  4. The core services of the ODIN App and how they operate
  5. Two examples of sensor services for the ODIN App, and how they operate
  6. Back end notification processing by the ODIN App
  7. How the ODIN App evades termination
  8. How rules are evaluated within the ODIN App
  9. Network protocols related to consent

Each of these items is presented below.

1. The ODIN App’s SQLite Database schema is given below:

The diagram above can be compared to the ODIN Back End Server’s database schema, which is described here.

2. The process by which the ODIN App initializes itself upon first time use:

What happens when the ODIN App is first launched What happens between pressing the register button
and all services beginning to start

3. The process by which the ODIN App launches its services:

How services are started (high level) How a service to becomes fully operational (details)

4. The operation of the ODIN App’s two core services:

The RuleQuestion service The Uploader service

5. Two examples of an ODIN App sensor services and how they operate:

The GPS service The Bluetooth Proximity service
Forthcoming

6. How ODIN App responds to communications from the back end ODIN Server:

How the ODIN App processes notifications
about contextual rules firing on the Back End
How the ODIN App responds to requests
for status information from the Back End

7. How ODIN App evades termination:

If the phone is restarted If the user kills an ODIN-related service
If the user kills the ODIN App’s activity If the ODIN App receives a keep alive notification
from the ODIN Back End Server

8. How ODIN App manages and evaluates rules and maintains a schedule:

9. The protocol by which the ODIN App updates and confirms the participant’s consent status: