The automate toolkit was designed to be easily extensible. Its components were developed as generic as possible to enable a platform independent usage of certain parts for future use. The components of the Android specific implementation can be seen in Figure 3.
This five components are separated into five repositories (see build @home), with their dependencies depicted in Figure 4.
Managers
Managers are used to gather data (e.g. device or interaction information, …) and convert them into different kinds of structured data that can be analysed later. In order to get access to the data, a manager or a couple of them have a corresponding file export handler, which will create structured CSV files from the internal data representation. The following sections go into the details of the managers that are already included in the automate toolkit. The details include a short description as well as data they gather and how the exported data will be structured.
All structured CSV files have a number of general columns (deviceId, sessionId, sequenceNr, projectId and appVersion), which are described in the following.
Listens for events of app screen visit changes and app interactions (clicks, scrolls, …), and creates a structured XML document out of one session. A session starts when the screen is turned on and the device returns from sleep mode, and it lasts until the device returns to sleep mode again (which usually means the display is off again) or when the device is turned off completely.
The session is just the outer tag to have a single root. Every time an app is opened, there is an appUsage tag with the packageName of the package and the startTime as a timestamp. Inside every appUsage there's a list of state tags which stand for a change in the view (usually Android Activity). They include the name and className of the view if returned by the Android accessibility environment as well as the duration, device orientation and interactionCount in that state.
Collects the different interaction events for the current screen. A screen is usually a view like the Android Activity. Interactions are characterized by the interaction type (click, scroll, long click, context click, selected), class name and text, as well as a content description if available. Additional information are the time the interaction occurred as well as the screen bounds of the widget that was interacted on. Due to restrictions on Android, some data can be missing.
This manager waits for changes to the network connection and updates the information accordingly. The relevant data is the network type and subtype that Android reports as well as a flag if the network connection is roaming or not.
Whenever the Android battery system manager reports changes to the battery status, this manager compares and updates the stored data, if deemed relevant.