Coder Social home page Coder Social logo

android-sensorium's Introduction

Sensorium

Sensorium is an Android Application that collects "sensor" information from your device ("Sensor data") and provides external interfaces to gather and process the data for scientific experiments. This is done in a privacy-preserving way. Only the data and only in the level of detail you allow will be made available.

Sensorium can be remotely pre-configured to suite the needs for your experiment campaign. If you want to implement further sensors or interfaces, please do so.

We are using some of the sensor values for Open 3G Map.

All our code is available under the GNU Lesser GPL 3.0. We would appreciate it if you contributed back to the Sensorium project.

Currently Available Sensors

  • Radio Cell Coverage Information Sensor
  • Network Location Sensor determines location based on availability of cellular tower and Wifi access points.
  • GPS Location Sensor determines location using satellites.
  • Wifi Scan Sensor periodically scans the current 802.11 network for all the access points nearby.
  • Wifi Connection Sensor displays the current active Wifi connection status.
  • Bluetooth Sensor displays local Bluetooth chip information, list of bonded and (periodically) scanned device.

External Interfaces

  • Local XMLRPC. You could use this to talk to programs running outside of the Android Framework, e.g. we use this to talk to the Seattle Testbed
  • automatic JSON log generation and upload to HTTPS sites

Sensor, Interfaces and Privacy Configuration

Users can also configure each sensor individually to suite their privacy needs. Also, can prevent Sensorium from running at boot or disable individual interfaces,

  • Full privacy: the sensor will not share any information on the external interfaces
  • High-Low privacy: Depending on the exact level of privacy, some information might not be shared at all, some data points might be rounded (e.g. longitude/latitude, i.e. only your coarse location will be seen), or salted and hashed (so you only can compare these hashes against each other).
  • No privacy: All information available to the sensor will be shared.

Develop

Apart from improving the core Sensorium code, you are probably mostly interesting in writing your own Sensor or Interface classes. The following might help you with that.

Implementing New Sensors

  1. Extend the AbstractSensor class
  2. Implement your sensor reading stuff, putting all values to be published in SensorValue objects
  3. Call notifyListeners() whenever your Sensors wants to have its values updated
  4. Put your class name into the res/values/sensors.xml to get it loaded

Implementing New External Interfaces

Currently, we either talk through XMLRPC to your locally running code or we push JSON data to Web Servers.

Have better ways of communicating your sensors? Implement it! At the moment, it would be best if you read the code to understand what you would need to do. We are still working on a small tutorial to get you started.

Third Party Libraries

  • An adapted version of android-xmlrpc is used to provide XMLRPC. It's available under the APL 2.0.
  • Uses google-gson (APL 2.0) to provide JSON logging support for Android 2.3.x support.
  • Apache HTTPClient and related libs (APL 2.0) for Multipart Entity HTTP POST support in 2.3.x.

(Note: If you were looking for information on our NetSys2013 demonstration, please look here.)

android-sensorium's People

Contributors

fmetzger avatar yyzhuang avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.