Slide 1

Slide 1 text

Building a Mobile Location Aware System with Beacons Jonathan LeBlanc (@jcleblanc) Head of Global Developer Advocacy at PayPal + Braintree

Slide 2

Slide 2 text

Purpose of a Beacon twitter: @jcleblanc | hashtag: #confoo

Slide 3

Slide 3 text

The Bluetooth Spec twitter: @jcleblanc | hashtag: #confoo

Slide 4

Slide 4 text

Bluetooth vs Bluetooth Smart twitter: @jcleblanc | hashtag: #confoo

Slide 5

Slide 5 text

Central Device Beacon Hardware IP Address Endpoint How it Works twitter: @jcleblanc | hashtag: #confoo

Slide 6

Slide 6 text

Real World Use Case twitter: @jcleblanc | hashtag: #confoo

Slide 7

Slide 7 text

Connection Type: Intermittant Battery Life: ~ 1.5 years (ha) Range: ~ 75-100 meters Data Latency: 3ms Bluetooth Smart Details twitter: @jcleblanc | hashtag: #confoo

Slide 8

Slide 8 text

iBeacon Specification https://developer.apple.com/ibeacon/ twitter: @jcleblanc | hashtag: #confoo

Slide 9

Slide 9 text

The Beacons twitter: @jcleblanc | hashtag: #confoo

Slide 10

Slide 10 text

twitter: @jcleblanc | hashtag: #confoo Estimote: $99 / 3, temp + motion Beacon Comparison Bluecat: Trial, AA batteries Gimbal Tag: $5, small & deployable Kontakt.io: $81 / 3, battery life

Slide 11

Slide 11 text

Battery Life vs Range twitter: @jcleblanc | hashtag: #confoo

Slide 12

Slide 12 text

Battery Replacement twitter: @jcleblanc | hashtag: #confoo

Slide 13

Slide 13 text

Creating Your Own Beacon twitter: @jcleblanc | hashtag: #confoo

Slide 14

Slide 14 text

Microcontroller (Arduino, etc.) Bluetooth Low Energy shield Wi-Fi shield Accelerometer (opt) Human Sensor (opt) Component List twitter: @jcleblanc | hashtag: #confoo

Slide 15

Slide 15 text

Getting Started twitter: @jcleblanc | hashtag: #confoo

Slide 16

Slide 16 text

Estimote: http://estimote.com/api/ Kontakt.io: http://docs.kontakt.io/ AltBeacon: http://altbeacon.org/ examples/ Beacon SDK or Open SDK? twitter: @jcleblanc | hashtag: #confoo

Slide 17

Slide 17 text

The Android Emulator twitter: @jcleblanc | hashtag: #confoo

Slide 18

Slide 18 text

Beacon Scavenger Hunt twitter: @jcleblanc | hashtag: #confoo

Slide 19

Slide 19 text

twitter: @jcleblanc | hashtag: #confoo 1.  Phone to Beacon Connections 2.  Distance feedback system 3.  Badges on beacon capture 4.  Unlock on hunt completion How it Works

Slide 20

Slide 20 text

Adjusting Beacon Settings Estimote Site and App twitter: @jcleblanc | hashtag: #confoo

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

AndroidManifest.xml twitter: @jcleblanc | hashtag: #confoo

Slide 23

Slide 23 text

private static final String ESTIMOTE_PROXIMITY_UUID = "B9402F30-F5F7-466E-AFD9-25556B57GE6D"; private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId", ESTIMOTE_PROXIMITY_UUID, null, null); private BeaconManager beaconManager = new BeaconManager(activity); Setting the Beacon Manager twitter: @jcleblanc | hashtag: #confoo

Slide 24

Slide 24 text

beaconManager.setRangingListener(new BeaconManager.RangingListener() { @Override public void onBeaconsDiscovered(Region region, List beacons) { ... } }); beaconManager.stopRanging(ALL_ESTIMOTE_BEACONS); Setting the Listener twitter: @jcleblanc | hashtag: #confoo

Slide 25

Slide 25 text

double distance = 1000.0; Beacon beacon = null; for (Beacon rangedBeacon : beacons) { double currentDistance = Utils.computeAccuracy(rangedBeacon); if (currentDistance < distance && ! discovered.contains(rangedBeacon)){ distance = currentDistance; beacon = rangedBeacon; } } Getting Beacon Range twitter: @jcleblanc | hashtag: #confoo

Slide 26

Slide 26 text

Playing with Location twitter: @jcleblanc | hashtag: #confoo

Slide 27

Slide 27 text

The Single Beacon twitter: @jcleblanc | hashtag: #confoo

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Improving Accuracy twitter: @jcleblanc | hashtag: #confoo

Slide 30

Slide 30 text

Deploying at Scale twitter: @jcleblanc | hashtag: #confoo

Slide 31

Slide 31 text

Beacon Wrap-up twitter: @jcleblanc | hashtag: #confoo

Slide 32

Slide 32 text

Thank You! http://bit.ly/confoo_beacon Jonathan LeBlanc (@jcleblanc) Head of Global Developer Advocacy at PayPal + Braintree