Babylon provides an architecture, process and systemfor collecting real-time statistics related to participant emotional investment and status or QoE (quality of service) data, participatory status and location.

The Babylon system consists of a server component, but there are also libraries and example apps for both IOS and Android. Work related to the Babylon system has mainly been focused on supporting experiment implementations with various, minor other updates as well as developing an Android component in order to ease implementation of Babylon in Android-based clients.


Babylon has been used in various Experimedia projects as a middle step between a client and the ExperiMonitor.

Use Cases

In the client it would be visible as a minimalist UI which allows for the user to send QoE data which is then stored on a Babylon server to be send directly to the ExperiMonitor.

Requirements & Installation


  • Ruby 1.9.3
  • Ruby on Rails 4.0
  • MySQL 5.6.13


  • Download Creator from its git repository on GitHub: If it is not yet available it will be in the future.
  • Setup the server using standard Ruby on Rails procedures, more details can be found on
  • Run budle install to install dependencies
  • Run rake commands for first time initlization of the databases
  • Start the server using rails commands


The server can be configured to point to various instances of the ExperiMonitor via the web interface.


List of functions

Clients communicate with Creator using a restAPI.

Code Examples

Below is a Java example from an Android client where the Babylon library is being used:

import com.tii.babylon2.BabylonClient;
import com.tii.babylon2.BabylonClientListener;

public class MainActivity extends Activity implements BabylonClientListener {
        private WebView _appView;
        private LocationManager _lm;
        private BabylonClient _client;

        public void onCreate(Bundle savedInstanceState) {
                _appView = (WebView) findViewById(;
                // Store default values in pref file if first time
                PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
                // Init client
                _client = new BabylonClient(this);
                // Init web GUI
                WebSettings webSettings = _appView.getSettings();
                _appView.addJavascriptInterface(this, "Android");
                // Init GPS
                _lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        protected void onResume() {
                // Start GPS
                _lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000L, 1f,
                _lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000L,
                                1f, _client);
                // Load prefs
                SharedPreferences sharedPref = PreferenceManager
                String metric = sharedPref.getString(SettingsActivity.METRIC, "");
                String url = sharedPref.getString(SettingsActivity.URL, "");
                String user = sharedPref.getString(SettingsActivity.USER, "");
                String pass = sharedPref.getString(SettingsActivity.PASS, "");
                // Reload prefs to client
                // Login client if not logged in
                if (!_client.isLoggedIn()) {
                        _client.login(user, pass);
                // Load web UI

        protected void onPause() {
                // Pause GPS

        public void onBabylonResponse(String response) {
                Log.d("method", "onbabylonresponse");
                Toast.makeText(_appView.getContext(), response, Toast.LENGTH_SHORT)

        public String getMetric(){
                return _client.getMetric();

        public void updateServer(int touchX, int touchY, int centerX, int centerY){
                int x = touchX - (centerX - 125) + 100;
                int y = (touchY - (centerY - 125)) + 20;
                _client.updateServer(x, y, centerX, centerY);

User Interface

To log into the service, a user must enter valid credentials in the login screen.

Screenshot of the login screen for the Babylon platform

The user can create a new or load an existing test session.

Screenshot of the sessions list of Babylon

Each test session can be edited to connect to an instance of the ExperiMonitor.

Screenshot of the configuration view of Babylon

As measurements are reported to Babylon, points of data bundles appear along a timeline at the bottom. Clicking one of these points will show what type of data was collected at that moment, including where (via for instance GPS) the data was collected.

Screenshot of the monitoring view of Babylon

There is an example app for the Android platform which uses a very lightweight library. This library allows for a customized integration with the Babylon service.

Screenshot of example app for Android

There is also an example app for the IOS platform which features a similar format as the Android one with an example app and a library.

Screenshot of example app for IOS

Contact & Support Information


Erik Einebrant
Interactive Institute Swedish ICT AB
Isafjordsgatan 22/Kistagången 16
Box 1197
SE-164 26 Kista, Sweden
phone: +46 738 351 442
email: eriein[at]


See Contact.


Open source, exact license to be defined