CSM:Libraries

= Mobile App libraries used in Citi-Sense-MOB = Libraries used in the development of City Sense Air mobile app could be classified based on its resources as follow:
 * Phonegap libraries for Android and iOS applicability
 * Google Map API for showing the map
 * Web API for location, visualisation and design issues

The detailed information on all libraries:
 * Phonegap: The application CSM is built upon Cordova framework which is the main technology for hybrid mobile development. It helped the development of UI components to be in common between Android and iOS platforms. However, in order to develop and improve some OS specific functionalities cordova plugins were a must to benefit from. Below are Imported cordova plugins (for Android OS)
 * com.darktalker.cordova.screenshot 0.1.1 "Screenshot" : The Screenshot plugin allows your application to take screenshots of the current screen and save them into the phone.
 * com.sama.wifigps 0.2.11 "WifiGPS-Plugin”: Provides the application with wi-fi and GPS status.
 * cordova-plugin-whitelist 1.0.0 "Whitelist" : implements a whitelist policy for navigating the application webview on Cordova 4.0.
 * de.appplant.cordova.plugin.email-composer 0.8.3dev "EmailComposer" : provides access to the standard interface that manages the editing and sending an email message.
 * nl.x-services.plugins.socialsharing 4.3.19 "SocialSharing" : allows you to use the native sharing window of your mobile device.
 * org.apache.cordova.camera 0.3.6 "Camera" : defines a global navigator.camera object, which provides an API for taking pictures and for choosing images from the system's image library.
 * org.apache.cordova.device 0.3.0 "Device" : defines a global device object, which describes the device's hardware and software. Although the object is in the global scope, it is not available until after the deviceready event.
 * org.apache.cordova.file 1.3.3 "File" : implements a File API allowing read/write access to files residing on the device.
 * org.apache.cordova.geolocation 0.3.12 "Geolocation" : provides information about the device's location, such as latitude and longitude.
 * org.apache.cordova.globalization 0.3.4 "Globalization" : obtains information and performs operations specific to the user's locale, language, and timezone.
 * org.apache.cordova.network-information 0.2.15 "Network Information": provides an implementation of an old version of the Network Information API. It provides information about the device's cellular and wifi connection, and whether the device has an internet connection.
 * org.apache.cordova.splashscreen 1.0.0 "Splashscreen" : displays and hides a splash screen during application launch.
 * org.apache.cordova.vibration 0.3.13 "Vibration" : aligns with the W3C vibration specification http://www.w3.org/TR/vibration/

Please note that these plugins may need maintenance when new APIs are released or a new technology emerges because of the reason that some methods get deprecated, or they may not be supporting the new features of the emerging technology. In maintenance phase, this should be taken into consideration that the plugins should be working and always supported.


 * Google Map: google map vendor is the used vendor in CSM mobile app to handle all map related UI features, such as:-
 * Man icon pinning and locating.
 * Air quality sensors pinning and locating.
 * Showing information window by clicking on an icon.
 * WebAPIs:
 * navigator.geolocation: the Geolocation.getCurrentPosition method is used to get the current position of the device.
 * Ajax Post method: The jQuery get and post methods are used to request data from the server with an HTTP GET or POST request. To send questionnaire to the related servers, to get data via specific services. As an example, the app fetches the list of city sensors and locates them on the map. And when user fills a questionnaire, it is reported back to the WFS servers in order to keep their records.
 * Design : JQuery Mobile + CSS
 * LocalStorage : The window.localStorage interface implements the W3C's Web Storage interface. An app can use it to save persistent data using key-value pairs.