Advantages and limitations of PhoneGap for sensor processing

14,810 views

Published on

My Droidcon Tunis 2013 presentation about the effect of the web application model to the battery consumption.

Published in: Technology

Advantages and limitations of PhoneGap for sensor processing

  1. 1. Advantages and limitations of PhoneGapfor sensor processingGabor Pallergaborpaller@gmail.comSfonge Ltd.http://www.sfonge.com
  2. 2. Alternative application models forAndroid● Basic Android application model → Java-based● Well-hidden in the Android Native DevelopmentKit (NDK) → there is a native application modeltoo● Application models based on other languageshave been proposed but have been rarelydeployed
  3. 3. Browser as mobile applicationruntime● Browser is already acting as mobile application runtime● Just check out the zillions of “how to optimize your website formobile” articles● There were some efforts to make the web applicationmodel the main application model on other platforms→ Bada, Tizen (both very silent recently)→ Firefox OS is making headlines now.● Meanwhile, a modest tool adopted the web model widelyand is in production: PhoneGap
  4. 4. From the helicopter● With PhoneGap, you create traditional, installable applications● PhoneGap does not change the operating system in any way, it acts likea library embedded into the application● A PhoneGap application is implemented mainly in web technologies:HTML, JavaScript, JQuery● Promises:● Lower the cost of mobile development by employing millions of web programmers● Improve the portability of applications by making the web model the greatestcommon denominator (which it is for web sites)
  5. 5. Test programs mentioned in this presentation are available here:http://www.sfonge.com/forum/topic/droidcon-tunis-2013-presentation-advantages-and-limitations-phonegap-sensor-processing-tWhite paper that this presentation is based on is available here:http://www.sfonge.com/epaper/performance-context-aware-algorithms-implemented-web-technologies(Both require free registration to Sfonge site)
  6. 6. PhoneGap projectDisplayed firstThis directory is our playgroundPhoneGap library
  7. 7. index.htmlMain stylesheet incss subdirectoryMain page starts hereLoads PhoneGapLoads application-specificcodeInvokes application-specificinitialization
  8. 8. index.js● Application initialization:var app = {initialize: function() {...},● First listen to onDeviceReady events:var self = this;document.addEventListener(deviceready, self.onDeviceReady, false);● Start invoking PhoneGap functions after the onDeviceReadyevent was fired:onDeviceReady: function() {...},
  9. 9. index.js (2)●In onDeviceReady, initialize your UI ...var shakes = document.getElementById("shakes");app.shakeCounter = 0;shakes.innerHTML = app.shakeCounter.toString();● … start listening for lifecycle events ...document.addEventListener(pause, app.onPause, false);document.addEventListener(resume, app.onResume, false);● … and device events (sensor, in our case)this.accelerometerWatchID = navigator.accelerometer.watchAcceleration(this.onSuccess,this.onError,{ frequency: 50 });
  10. 10. index.js (3)● And then you can handle sensor events:onSuccess: function(acceleration) {var currentTimeStamp = acceleration.timestamp;var x = acceleration.x;var y = acceleration.y;var z = acceleration.z;…}
  11. 11. Brief interlude on context-aware applications
  12. 12. Context-aware applications● Context-aware applications are characterizedby their capability of adapting to changes intheir environment.● More precisely:● Capture environmental changes● Decide whether the change is relevant enough toadapt● Adapt the behavior if the change is relevant
  13. 13. Architecture: sensor adapters● Sensor adapters● Process the input from probes in the environment● Simple: listener to operating system events● Complicated: signal-processing algorithm for a built-in gyroscope sensor
  14. 14. Architecture: decision logic● Decision logic● Rule engine that works on sensor adapter outputsand produces application adaptation decisions● Simple: a set of “if” statements● Complicated: rule inference engine.
  15. 15. Architecture: adaptation logic● Adaptation logic● Makes sure that the high-level context variablesproduced by the decision logic affect the applicationlogic in an application-specific way.● Simple: set of “if” statements built into theapplication logic● Complicated: dynamic component system
  16. 16. Consequence of the applicationmodel● If the sensor adapter processing is offloaded tospecialized co-processors or native code, theapplication model has no impact (no specialprocessing requirements)● If the application code includes sensor adapterprocessing then the application model betterprovide efficient execution because sensorprocessing may be CPU-intensive
  17. 17. Example application● Very simple shake detector● Based on the accelerometer input● High-pass filtering to remove effects of slowmotions, e.g. walking● Peak detector to extract shake signal● “Application adaptation”: simply count
  18. 18. Recap: gravity and motionacceleration
  19. 19. Recap: Absolute value● x, y, z: acceleration vector components● g – value of the gravity acceleration (can beapproximated as 10)a=√x2+ y2+ z2−g
  20. 20. 5 shakesMovementstarts:acceleratingDirection reversesFinal deceleration
  21. 21. Recap: Separating movements inthe frequency domainHzWalking ShakingWalkingWalking+shaking64-point Fast Fourier Transform performed at samples 50 and 200
  22. 22. Applying the filter4 shakes can be reliably recognized
  23. 23. Filter in our example● 6th-order IIR filter(N=6, 12 additionsand 12 multiplicationsper sample)yn=∑i=0Nai xn−i−∑i=1Nbi yn−i
  24. 24. Measurement● Two implementations: Java and webtechnology (PhoneGap).● Measurement:● Phone is restarted● Nexus S, about 50 Hz sampling rate● App is started, sampling is started● Wait 10 sec● Connect with “adb shell” and launch the “top”command● Record the CPU% column
  25. 25. Results:● CPU consumption:● Java implementation: 1%● PhoneGap implementation: 9%● Battery consumption:● PhoneGap : 0.1218%/min → 7.3 %/hour → about 13hours of battery life● Java: 0.072%/min →4.32%/hour → about 23 hours ofbattery life● 60% more consumption, 40% less battery life
  26. 26. PhoneGap “plugins”● PhoneGap is built on the plugin concept● Its own services are also built as plugins andyou can define your own● Plugins are implemented as whatever is “native”in the environment, in case of Android in Java
  27. 27. PhoneGap plugin● Plugin class:public class SamplingServiceAdapter extends CordovaPlugin {…}● Plugin commands:public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {if (action.equals("start")) {…}● Register your plugin in res/xml/config.xml<plugin name="Shake" value="aexp.simpleshakejsplugin.SamplingServiceAdapter"/>
  28. 28. Callbacks● Use CallbackContext to initiate a callback:PluginResult result = new PluginResult(PluginResult.Status.OK,this.getStepCountJSON(count));result.setKeepCallback(true);callbackContext.sendPluginResult(result);● The result must be in JSON:JSONObject r = new JSONObject();r.put("count", count);● Which conforms in JSON to:{ count: 2 }
  29. 29. From the JS side● Sending a command from JS:cordova.exec(this.onShake,this.onError,"Shake","start",[]);● Receiving a callback from native:onShake: function(s) {var count = s.count; // Remember the JSON format we generate!…}
  30. 30. Plugin result● With plugin implementation, the CPU load iscomparable to native implementation (about1%, within measurement error)● No surprise here: if you check the code, you willsee that “CPU-intensive” tasks are implementedsimilarly to the Java version.
  31. 31. So what about the “web model”?● Web model is great for some types of applications (ifyou have the competence)● These are typically UI-intensive applications when somedata is presented to the user and we are then expectinguser interaction● Try to handle moderately “CPU-intensive” tasks inthe web model and you will be in for an unpleasantsurprise● CPU load is directly translated to battery life and I haventeven talked about memory footprint
  32. 32. My advice● If you are an experienced web developer, go forthe web model and implement your apps in theweb model, you will have quick success● Always consider, whether you have “CPU-intensive” tasks – those that happen often andrequire non-trivial calculations● When you are considering a web applicationplatform, always look for native extensionpossibility, just in case. If there is none, beware.
  33. 33. Questions?

×