These are the slides presented as a textual support for the Catdroid session May 13th 2015 held in Barcelona.
Thanks to everyone and especially to Oriol for making this happen!
4. New challenges
! Battery life
! Connectivity
! Diversity of devices, versions, screen sizes
! Lack of standards
! DORA (Develop Once, Run Anywhere)
But also
! Increase of chemical waste
! Electromagnetic radiations
! Security leaks, ID Theft
AUG | Barcelona, May 13th 2015
4
5. New tools for new uses
Gyroscope, Accelerometer, GPS, BLE, Cardio
frequency meter, NFC, WiFi
6. Location, location, location
! Where you are on earth
! The direction you’re looking at
… Basically, we can see through your eyes.
6
AUG | Barcelona, May 13th 2015
7. Relative Location: Virtual Reality
! Oculus Rift
! Google Cardboard
Dive city rollercoaster
Proton Pulse
VRSE
Orbulus
Vanguard V
Use cases: IMMERSION
7
AUG | Barcelona, May 13th 2015
8. Relative + Absolute Location:
Augmented Reality
! Layar
! VuForia
! MetaIO
! evenTribe AR (Stay Tuned)
Use cases: Advertisement / Services / Gaming
8
AUG | Barcelona, May 13th 2015
9. Meet BLE
! Relies on GATT (Generic Attribute Profile)
! Device Advertises itself
! When paired to a central device, will stop advertising. (only one-to-
one)
! Exchanges Data at periodic intervals
! Transaction = Set of services, which hold Characteristics
! Official services (16bit address):
https://developer.bluetooth.org/gatt/services/Pages/
ServicesHome.aspx
! Custom services: (128bit address)
More info https://developer.android.com/guide/topics/connectivity/bluetooth-le.html
Example:
HeartRate Service: 0x180D
3 Characteristics: Heart Rate measurement, Sensor Location, Heart Rate
control point
9
AUG | Barcelona, May 13th 2015
10. BLE limitations
! Throughput:
! ACK vs no-ACK?
! Packet <= 20byte data
! Max number of packets / event (usually btw 2 and 6)
! Connection interval (central & peripheral, usually tens of ms)
Example: iOS 8.3, 30ms min connection interval
iPhone 6, iOS 8.3 + nRF51822 = 16kbps throughput
! Frequency emission:
! 2.4 Ghz (same as Wifi)
! Can be diffracted, absorbed, or interferred by water
10
AUG | Barcelona, May 13th 2015
11. iBeacons
! Instead of being constrained by a one-to-one relationship to push
and pull information, one can use the payload bits of the
advertisement mode to broadcast data.
! Pros: Costless, energy efficient, asynchronous
! Cons: Unidirectional, public, lightweight
Looks like a hack! But that’s awesome!
Even better: Signal strength can be used to give « proximity »
contextual info. Some also say « indoor geolocation » (Woooow)
11
AUG | Barcelona, May 13th 2015
12. Proximity: Target Advertisement
! BeaconWatcher
! Kontakt
! BlueUp
“Welcome to the underwear department. Tap here to get 20% off
the latest Superman boxers”
Use cases: Advertisement / Services / Gaming
12
AUG | Barcelona, May 13th 2015
14. Indoor Geolocation
! iBeacons have algorithms to compute distance to Beacon
Question:
How can we perform indoor Geolocation with this idea?
AUG | Barcelona, May 13th 2015
14
16. Indoor Geolocation
! Truth is… The distance computation algorithm looks like
this:
! txPower: Factory calibrated, read-only constant which indicates the
expected RSSI at a 1 meter distance of the beacon
! RSSI: Received Signal Strength Indicator
protected static double computeDistance(int txPower, double rssi) {
if (rssi == 0) { return -1.0; }
double ratio = rssi / txPower;
if (ratio < 1.0) { return Math.pow(ratio,10); }
else { return 0.89976 * Math.pow(ratio,7.7095) + 0.111; }
}
16
AUG | Barcelona, May 13th 2015
17. Indoor Geolocation
! Truth is… The distance computation algorithm is completely
arbitrary.
! Does it work?
! No. There can be complete aberrations in terms of distance
! Can we do something?
! The more beacons, the better the estimation?
Not really -> Device calibration deltas, Battery level, Device position
blurs everything away
! Why?
! 2.4Ghz
AUG | Barcelona, May 13th 2015
17
18. Indoor Geolocation
! Solution: Stop thinking like everyone else. Let’s change the
paradigm.
! I cannot do triangulation and distance estimation with
beacons.
! But I can tell which is the closest!
AUG | Barcelona, May 13th 2015
18
20. Indoor Geolocation
! Solution: Stop thinking like everyone else. Let’s change the
paradigm.
! I cannot do triangulation and distance estimation with
beacons.
! But water absorbs or creates interferences with the signal
AUG | Barcelona, May 13th 2015
20
21. Indoor Geolocation
! Solution 2: Signal heatmaps
Calibration
Runtime
-76dbm
-80dbm
-78dbm
-77dbm
-90dbm
-80dbm
-78dbm
-77dbm
AUG | Barcelona, May 13th 2015
21
22. Indoor Geolocation
! Solution: Stop thinking like everyone else. Let’s change the
paradigm.
! I cannot do triangulation and distance estimation with
beacons.
! But bluetooth or wifi advertising does tell me there is a device
around.
AUG | Barcelona, May 13th 2015
22
23. Indoor Geolocation
! Solution 3: Wifi / Bluetooth proximity
Results should be close to Solution 1
00:0C:XX:XX:XX
-76dbm
AUG | Barcelona, May 13th 2015
23
00:0C:XX:XX:YY
-56dbm
24. Inter-Device communication
! NFC needs a compatible device (Android vs iOS)
! Wifi requires a router
! Bluetooth is only one-to-one
Question:
How can we develop other ways of inter-device
communication?
AUG | Barcelona, May 13th 2015
24
25. Inter-Device communication
! The Old-fashioned Way:
Every phone has a camera. We can scan coded visual
information
QRCodes…
… Or encoded images
AUG | Barcelona, May 13th 2015
25
26. Inter-Device communication
! The SquareUp Way:
Every phone has an audio jack.
…Remember morse code?
Cons: May look like we are exchanging
Pokemons with our Cable Link
AUG | Barcelona, May 13th 2015
26
27. Inter-Device communication
! Audio Watermarking
How to hide bytes in the 12-15khz frequencies?
è AWT2
Play your favorite music, and seamlessly transport
information
…Radios already do this remember?
AUG | Barcelona, May 13th 2015
27
28. Inter-Device communication
! P2P gods
! If Device 1 connects to Device 2 and 3 and Device 2 to Device 3
and 1 etc…
! We are creating an Ad-Hoc P2P network!
Wait… Are you saying we could solve internet connectivity
problems in the subway?
After crowdsourcing, why not crowdconnectivity?
AUG | Barcelona, May 13th 2015
28
30. Out this week
! LeakCanary, by Pierre-Yves Ricaud (Square)
! 20+ Android leaks discovered and issued to google in a couple
days
! Amazingly useful to understand design flaws in your app
! Discreet, lightweight, transparent in production
AUG | Barcelona, May 13th 2015
30
31. Maps
! Google Maps: Requires API-Key, requires commercial
license if commercial use, lack of good caching, brings
Google Play Services and its 40k methods…
! OpenStreetMap: Yes! You can do anything if you know
how to make a TileServer (switch2osm.org)
! But…
! Libraries still too young for vector tiles (OperPassAPI/mapbox-gl)
! Historical android library (osmdroid) sucks!
! Since 02/15, mapbox-android-sdk can be considered mature
enough, with an interesting set of technologies and a solid
community of contributors
AUG | Barcelona, May 13th 2015
31
32. Misc
! Dagger 2
! CouchBase Mobile?
! Jackson
! Android Annotations
! OkHttp
! Picasso, Universal Image Loader
! Crashlytics
! Piwik
! Fabric
! Retrofit
What about you?
AUG | Barcelona, May 13th 2015
32
33. App Templating
! You developed the Awesome World Congress 2015 App
! May be used for lots of similar events, with pretty much the
same codebase.
! Feature-driven developments are interesting but tough to
loosely couple with content.
! Deployment is time-consuming, upgrades and migrations
even worse.
Question: How can we provide loose coupling btw code and
content, and optimize deployments and upgrades?
AUG | Barcelona, May 13th 2015
33
34. App Templating
! You are developing the Awesome World Congress 2015
App (Congratulations! :D )
! Features:
! 3D-Map (an embedded MBTiles file, plus an OpenStreetMap layer
with coordinate bounds)
! AR View
! Schedule of the conferences
! Set of POIs (companies, stands) and their description
! Speakers Biography
! Built-in tweetdeck
AUG | Barcelona, May 13th 2015
34
35. App Templating
! Develop, templatize
! Develop your app as usual
! Backend, DB, Android/iOS Mobile App, Website
! Brand your product for the Awesome World Congress 2015,
and make a huge impression.
35
36. ! Develop, Templatize
! Classical way:
! for each show {
git checkout –b congressXXX2015
git commit… git commit… git commit…
git rebase / git merge / etc…
}
! Stop making n-times the necessary
adjustments and customizations.
! Proposed Way:
! Templatize your code once,
then customize with content
36
Now, your app was SO cool that 50
more shows and events want you to
make theirs, with the same features
Congress XXX App
App Templating
37. ! Why do this?
! Because you completely separate your
codebase from your content.
! Because deploying new versions is easier
(no 50 branches to rebase)
! Because you gain loads of time
(compilation can even be avoided)
! Metrics?
! Depends ;)
37
App Templating
38. Instant App Creation
! Sometimes, an app template really makes sense for anyone
to make very custom services.
! Sometimes, an app is disposable (POC).
! Marketing guys only care about TTM.
Question: How can we allow non-technical people to create
real native apps in a friendly environment?
AUG | Barcelona, May 13th 2015
38
39. Instant App Creation
! Well, you’ve already made a template and separated your
code from your content
! Simply APIfy and bring nice widgets to provide an abstraction of the
complexity
Example:
the “Make your congress App” website:
• Upload an excel or csv file with your POIs
• Upload a Google calendar file with the schedule of conferences
• Upload an excel or csv file with the list and bios of speakers
• Choose the coordinate bounds and overlay your map
• Choose the theme color, customize the wording, change the app
name, the app icon, the splashscreen
• Click “Generate”, wait 20 seconds, download your APK
AUG | Barcelona, May 13th 2015
39
40. Thanks guys, it was a blast!
! Let’s follow each other! @LoicOrtola
! And let’s keep in touch!
40
AUG | Barcelona, May 13th 2015
lortola@ebusinessinformation.fr concept.designmyapp.mobi
developer.designmyapp.mobi
I think I’m being followed