# CalibrateNoiseTogether
Key Features
------------
#CalibrateNoiseTogether is an Android application that supports the distributed and opportunistic calibration of the microphone embedded in -or connected to- a mobile phone.
#CalibrateNoiseTogether is intended to operate in a fully decentralized way and thereby leverages the presence of the nearby phones
that monitor the same noise level so as to perform a multi-party calibration while enhancing the overall accuracy gain.
For this purpose, the mobile phones exchange measurements to determine a calibration function, which describes the relationship between the non-calibrated measurements
and the calibrated one(s) and thereby enables correcting the measurements of the non-calibrated phones(s).
Once calibrated, the phone can, in turn, be used to calibrate others. Such a dynamic calibration, which is also known as multi-hop blind calibration, allows calibrating sensors under their deployment conditions and without involving the end-user.
Getting started
-----------------
Step 1 - Download or clone the source code of #CalibrateNoiseTogether.
Step 2 - Download the following java libraries:
* [common Lang](https://commons.apache.org/proper/commons-lang/) (version 3.5 is preferred)
* [commons-math ](http://commons.apache.org/proper/commons-math/download_math.cgi)(version 3.6.1 is preferred)
* [commons-net](https://commons.apache.org/proper/commons-net/)(version: 3.5 is preferred)
* [Jama ](https://mvnrepository.com/artifact/gov.nist.math/jama/1.0.3)(version: 1.0.3 is preferred)
Place the jar files that just have been downloaded into the app/libs folder of the #CalibrateNoiseTogether.
Step 3 - Download[Android Studio](https://developer.android.com/studio)
Start android Studio and open the #CalibrateNoiseTogether project by selecting the directory wherein is placed
#CalibrateNoiseTogether.
Before running #CalibrateNoiseTogether on a mobile phone using Android Studio, you need to set up the phone.
Setting up the mobile phone:
----------------------------------
Step 1 - Enable Wifi Direct
#CalibrateNoiseTogether leverages Wifi Direct to support the discovery of the nearby phones that offer the calibration service.
A prerequisite is to enable/switch on Wifi-direct, using the settings app. For this purpose, Wifi should be switched on.
Then, Wifi Direct should also be enabled: usually, the configuration of Wifi Direct can be done using Wifi Properties.
Step 2 - Change permissions
#CalibrateNoiseTogether requires that permissions are granted to access:
* Microphone,
* Storage,
* Location.
In order to grant permission, open the Settings app and tap Apps or Application Manager (depending on your phone, this may look different).
Tap the #CalibrateNoiseTogether app and then, tap Permissions and turn all the permissions on.
Contributors
-------------
* Françoise Sailhan: design, architect, coding
* Valérie Issarny: design
* Yifan Du: design
* Otto Tavares Nacimiento: design, architect, coding