Babylon

Introduction

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.

Functionality

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

Requirements

  • Ruby 1.9.3
  • Ruby on Rails 4.0
  • MySQL 5.6.13

Installation

  • Download Creator from its git repository on GitHub: https://github.com/buffpojken/babylon2.git 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 http://rubyonrails.org/
  • Run budle install to install dependencies
  • Run rake commands for first time initlization of the databases
  • Start the server using rails commands

Configuration

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

API

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;

        @SuppressLint("SetJavaScriptEnabled")
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                _appView = (WebView) findViewById(R.id.webView1);
                // 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();
                webSettings.setJavaScriptEnabled(true);
                _appView.addJavascriptInterface(this, "Android");
                // Init GPS
                _lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        }

        @Override
        protected void onResume() {
                // Start GPS
                _lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000L, 1f,
                                _client);
                _lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000L,
                                1f, _client);
                // Load prefs
                SharedPreferences sharedPref = PreferenceManager
                                .getDefaultSharedPreferences(this);
                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
                _client.setURL(url);
                _client.setMetric(metric);
                // Login client if not logged in
                if (!_client.isLoggedIn()) {
                        _client.login(user, pass);
                }
                // Load web UI
                _appView.loadUrl("file:///android_asset/www/index.html");
                super.onResume();
        }

        @Override
        protected void onPause() {
                super.onPause();
                // Pause GPS
                _lm.removeUpdates(_client);
        }

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

        @JavascriptInterface
        public String getMetric(){
                return _client.getMetric();
        }

        @JavascriptInterface
        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

Contact

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

Support

See Contact.

Licensing

Open source, exact license to be defined