SlideShare a Scribd company logo
MILAN 20/21.11.2015
Kseniia Shumelchyk – SoftServe Inc./GDG Dnipropetrovsk
Android Wear iBeacon development
MILAN 20/21.11.2015 - Kseniia Shumelchyk
iBeacons
MILAN 20/21.11.2015 - Kseniia Shumelchyk
iBeacon
-  iBeacon is a protocol standardised by Apple and introduced at the WWDC in 2013
-  Based on top of BLE
-  BLE works starting from 4S on Apple
-  BLE works starting from 4.3 on Android
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Internal structure
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Typical Beacon usage
MILAN 20/21.11.2015 - Kseniia Shumelchyk
What is BLE?
Bluetooth low energy (Bluetooth Smart) is a
wireless personal area network technology aimed
for novel applications in the healthcare, fitness,
beacons, security, and home entertainment
industries
MILAN 20/21.11.2015 - Kseniia Shumelchyk
What is BLE?
-  Not backward-compatible (with classic Bluetooth protocol)
-  Uses same radio frequencies - 2.4 GGZ
-  1 Mbps (1-3 Mbps with regular bluetooth)
-  Embedded devices & wearables
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Specification
Technical Specification
Classic Bluetooth
technology
Bluetooth Smart
technology
Distance/Range
(theoretical max.)
100 m (330 ft) >100 m (>330 ft)
Over the air data rate 1–3 Mbit/s 1 Mbit/s
Active slaves 7
Not defined;
implementation
dependent
Minimum total time to
send data
100 ms 3 ms
Power consumption 1 W as the reference
0.01 to 0.5 W
(depending on use case)
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Generic Attribute Profile (GATT)
-  Client - A device that initiates GATT commands and requests, and accepts
responses, for example a computer or smartphone
-  Server - A device that receives GATT commands and requests, and returns
responses, for example a temperature sensor.
-  Characteristic - A data value transferred between client and server, for
example the current battery voltage.
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Generic Attribute Profile (GATT)
-  Service - A collection of related characteristics, which operate together to
perform a particular function. For instance, the Health Thermometer service
includes characteristics for a temperature measurement value, and a time
interval between measurements.
-  Descriptor - A descriptor provides additional information about a characteristic.
For instance, a temperature value characteristic may have an indication of its
units (e.g. Celsius), and the maximum and minimum values which the sensor
can measure.
MILAN 20/21.11.2015 - Kseniia Shumelchyk
GATT Operations
-  Discover UUIDs for all primary services
-  Find a service with a given UUID
-  Find secondary services for a given primary service
-  Discover all characteristics for a given service
-  Find characteristics matching a given UUID
-  Read all descriptors for a particular characteristic
Internals
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Beacon’s Advertisement
-  Beacon advertises a data package called the Scan Response Data
-  This Data can be up to 31 bytes.
-  The scan response is divided into AD structures
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Packet structure (1)
Ad Structure 1
0x02 0x01 0x1A
Remaining length AD Type Data
2 Flags Flag
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Packet structure (2)
Ad Structure 2
0x1B 0xFF 0xE0 0x00 0xBE 0xAC
Remaining length AD Type Manufacturer ID Beacon prefix
27
Manufacturer
specific
224 (Google)
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Packet structure (2)
Ad Structure 2
0x0C […] 0xBB 0x00 0x09 0x00 0x06 0xBA
UUID (16 bytes) Major Minor TX Power
9 6 -70
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Internals
02 01 06 1A FF 4C 00 02 15: prefix (fixed except for 3rd byte - flags)
B9 40 7F 30 F5 F8 46 6E AF F9 25 55 6B 57 FE 6D: UUID
00 49: major
00 0A: minor
C5: measured TX power!
MILAN 20/21.11.2015 - Kseniia Shumelchyk
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Android
-  Built in support for Android 4.3+
-  Central & peripheral roles
-  GATT server & GATT client
-  android.hardware.bluetooth_le feature
Android 4.3 & iBeacons
MILAN 20/21.11.2015 - Kseniia Shumelchyk
•  Android 4.3 for Beacons detection (1)
<uses-permission android:name="android.permission.BLUETOOTH"/>	
  
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>!
Check for permission
<uses-feature android:name="android.hardware.bluetooth_le"
android:required="true"/>!
Check for hardware
MILAN 20/21.11.2015 - Kseniia Shumelchyk
•  Android 4.3 for Beacons detection (2)
!
final BluetoothManager bluetoothManager = (BluetoothManager)
getSystemService(Context.BLUETOOTH_SERVICE);	
  
mBluetoothAdapter = bluetoothManager.getAdapter();!
Get the BluetoothAdapter
!
if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {	
  
    Intent enableBtIntent = new
Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);	
  
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);	
  
}!
4. Enable Bluetooth
MILAN 20/21.11.2015 - Kseniia Shumelchyk
•  Android 4.3 for Beacons detection (3)
private LeScanCallback mLeScanCallback = new LeScanCallback() {	
  
    @Override	
  
    public void onLeScan(final BluetoothDevice device, int rssi, byte[]
scanRecord) {	
  
… // Parsing beacon data	
  
       });	
  
   }	
  
};!
Define callback
mBluetoothAdapter.startLeScan(mLeScanCallback);!
Start BLE scanning
Android 5+ & iBeacons
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Android 5.0+ for Beacons detection
-  New api to work with BLE devices
-  Background scanning
-  Filtering possibility
-  SCAN_MODE_LOW_POWER mode
-  SCAN_MODE_LOW_LATENCY mode
MILAN 20/21.11.2015 - Kseniia Shumelchyk
LOW_POWER LOW_LATENCY
Test duration 134 minutes 152 minutes
Battery Level Change -13% -25%
Battery Drain Rate 268mA 454mA
Relative Battery Savings 41% --
Typical time between
detections
4400 ms 100 ms
http://developer.radiusnetworks.com/2014/10/28/android-5.0-scanning.html
MILAN 20/21.11.2015 - Kseniia Shumelchyk
•  Android 5.0 for Beacons detection (1)
private void setScanFilter() {	
  
	
  	
  	
  ScanFilter.Builder mBuilder = new ScanFilter.Builder();	
  
	
  	
  	
  ByteBuffer mManufacturerData = ByteBuffer.allocate(23);	
  
	
  	
  	
  ByteBuffer mManufacturerDataMask = ByteBuffer.allocate(24);	
  
	
  	
  	
  byte[] uuid = getIdAsByte(UUID.fromString("0CF052C297CA407C84F8B62AAC4E9020");	
  
	
  	
  	
  mManufacturerData.put(0, (byte)0xBE);	
  
	
  	
  	
  mManufacturerData.put(1, (byte)0xAC);	
  
	
  	
  	
  for (int i=2; i<=17; i++) {	
  
	
  	
  	
  	
  	
  	
  	
  mManufacturerData.put(i, uuid[i-2]);	
  
	
  	
  	
  }	
  
	
  	
  	
  for (int i=0; i<=17; i++) {	
  
	
  	
  	
  	
  	
  	
  	
  mManufacturerDataMask.put((byte)0x01);	
  
	
  	
  	
  }	
  
	
  	
  	
  mBuilder.setManufacturerData(224, mManufacturerData.array(), mManufacturerDataMask.array());	
  
	
  	
  	
  mScanFilter = mBuilder.build();	
  
}!
Creating filter for scanning
MILAN 20/21.11.2015 - Kseniia Shumelchyk
•  Android 5.0 for Beacons detection (2)
•  ENTER
FILENAM
E/LANG
private void setScanSettings() {	
  
	
  	
  	
  	
  	
  	
  ScanSettings.Builder mBuilder = new ScanSettings.Builder();	
  
	
  	
  	
  	
  	
  	
  mBuilder.setReportDelay(0);	
  
	
  	
  	
  	
  	
  	
  mBuilder.setScanMode(ScanSettings.SCAN_MODE_LOW_POWER);	
  
	
  	
  	
  	
  	
  	
  mScanSettings = mBuilder.build();	
  
	
  }!
Setting scanner settings
MILAN 20/21.11.2015 - Kseniia Shumelchyk
•  Android 5.0 for Beacons detection (3)
•  ENTER
FILENAM
E/LANG
protected ScanCallback mScanCallback = new ScanCallback() {	
  
@Override	
  
public void onScanResult(int callbackType, ScanResult result) {	
  
ScanRecord mScanRecord = result.getScanRecord();	
  
int[] manufacturerData = mScanRecord.getManufacturerSpecificData(224);	
  
int mRssi = result.getRssi();	
  
}	
  
}!
Setting up callback
MILAN 20/21.11.2015 - Kseniia Shumelchyk
•  Android 5.0 for Beacons detection (4)
•  ENTER
FILENAM
E/LANG
mBluetoothLeScanner.startScan(Arrays.asList(mScanFilter), mScanSettings, mScanCallback);!
Start scanning
Android iBeacon emitter
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Android Beacon emitter
-  Works starting from 5.0
-  Currently only Nexus 6, Nexus 9 and later models supported
-  BluetoothLeAdvertiser & AdvertiseData & AdvertiseSettings support classes
-  Different levels of transmitter power
MILAN 20/21.11.2015 - Kseniia Shumelchyk
•  Android iBeacon emitter (1)
•  ENTER
FILENAM
E/LANG
protected void setAdvertiseData() {	
  
	
  	
  	
  	
  	
  AdvertiseData.Builder mBuilder = new AdvertiseData.Builder()	
  
	
  	
  	
  	
  	
  ByteBuffer mManufacturerData = ByteBuffer.allocate(24);	
  
	
  	
  	
  	
  	
  byte[] uuid = getIdAsByte(UUID.fromString("0CF052C297CA407C84F8B62AAC4E9020"));	
  
	
  	
  	
  	
  	
  mManufacturerData.put(0, (byte)0xBE); // Beacon Identifier	
  
	
  	
  	
  	
  	
  mManufacturerData.put(1, (byte)0xAC); // Beacon Identifier	
  
	
  	
  	
  	
  	
  for (int i=2; i<=17; i++) {	
  
mManufacturerData.put(i, uuid[i-2]); // adding the UUID	
  
	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  mManufacturerData.put(18, (byte)0x00); // first byte of Major	
  
	
  	
  	
  	
  	
  mManufacturerData.put(19, (byte)0x09); // second byte of Major	
  
	
  	
  	
  	
  	
  mManufacturerData.put(20, (byte)0x00); // first minor	
  
	
  	
  	
  	
  	
  mManufacturerData.put(21, (byte)0x06); // second minor	
  
	
  	
  	
  	
  	
  mManufacturerData.put(22, (byte)0xB5); // txPower	
  
	
  	
  	
  	
  	
  mBuilder.addManufacturerData(224, mManufacturerData.array());	
  
	
  	
  	
  	
  	
  mAdvertiseData = mBuilder.build();	
  
	
  	
  }!
Setting emitter
MILAN 20/21.11.2015 - Kseniia Shumelchyk
•  Android iBeacon emitter (2)
•  ENTER
FILENAM
E/LANG
protected void setAdvertiseSettings() {	
  
AdvertiseSettings.Builder mBuilder = new AdvertiseSettings.Builder();	
  
mBuilder.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER);	
  
	
   mBuilder.setConnectable(false);	
  
mBuilder.setTimeout(0);	
  
mBuilder.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM);	
  
	
   mAdvertiseSettings = mBuilder.build();	
  
}!
Setting up setting
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Good to go, we can start advertising :)
Good to go, we can start advertising :-D
ENTER FILENAME/LANG
mBluetoothLeAdvertiser.startAdvertising(mAdvertiseSettings, mAdvertiseData,
mAdvertiseCallback);!
Start advertising
Android Wear app example
MILAN 20/21.11.2015 - Kseniia Shumelchyk
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Use cases
MILAN 20/21.11.2015 - Kseniia Shumelchyk
On track - for runners
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Shopping molls
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Indoor navigation
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Museums
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Clinics
MILAN 20/21.11.2015 - Kseniia Shumelchyk
Hotel check-in & check-out
MILAN 20/21.11.2015 - Kseniia Shumelchyk
For disabled people
MILAN 20/21.11.2015
G+ KseniiaShumelchyk
Fb Kseniya.Shumelchyk
www www.dnipro.gdg.org.ua
MILAN 20/21.11.2015 - SPEAKER’S NAME
Leave your feedback on Joind.in!
https://m.joind.in/event/codemotion-milan-2015

More Related Content

Similar to Kseniia Shumelchyk - Android iBeacon development

HITCON 2015 - Building Automation and Control: Hacking Subsidized Energy Savi...
HITCON 2015 - Building Automation and Control: Hacking Subsidized Energy Savi...HITCON 2015 - Building Automation and Control: Hacking Subsidized Energy Savi...
HITCON 2015 - Building Automation and Control: Hacking Subsidized Energy Savi...
Philippe Lin
 
Internet of Things: an overview
Internet of Things: an overviewInternet of Things: an overview
Internet of Things: an overview
Pascal Bodin
 
WWTC_implementation_plan_Group5_FINAL
WWTC_implementation_plan_Group5_FINALWWTC_implementation_plan_Group5_FINAL
WWTC_implementation_plan_Group5_FINAL
John Bernal
 
Beacons in Androind - About Beacon Russia 2014
Beacons in Androind - About Beacon Russia 2014 Beacons in Androind - About Beacon Russia 2014
Beacons in Androind - About Beacon Russia 2014
Neklo
 
Design of integrated mine safety monitor system based on zig bee
Design of integrated mine safety monitor system based on zig beeDesign of integrated mine safety monitor system based on zig bee
Design of integrated mine safety monitor system based on zig bee
impulsetechembedded12
 
s2c-success-story-actt.pdf
s2c-success-story-actt.pdfs2c-success-story-actt.pdf
s2c-success-story-actt.pdf
S2C Limited
 
Integrating Ansible Tower with security orchestration and cloud management
Integrating Ansible Tower with security orchestration and cloud managementIntegrating Ansible Tower with security orchestration and cloud management
Integrating Ansible Tower with security orchestration and cloud management
Joel W. King
 
Simple Internet of Things (IoT) game with Bluemix and Node-Red
Simple Internet of Things (IoT)  game with Bluemix and Node-RedSimple Internet of Things (IoT)  game with Bluemix and Node-Red
Simple Internet of Things (IoT) game with Bluemix and Node-Red
Markus Van Kempen
 
iBeacons / Beacons and Presence use cases and examples (part 1)
iBeacons / Beacons and Presence use cases and examples (part 1)iBeacons / Beacons and Presence use cases and examples (part 1)
iBeacons / Beacons and Presence use cases and examples (part 1)
Markus Van Kempen
 
Enabling policy migration in the Data Center with Ansible
Enabling policy migration in the Data Center with AnsibleEnabling policy migration in the Data Center with Ansible
Enabling policy migration in the Data Center with Ansible
Joel W. King
 
Introducing Azure Sphere
Introducing Azure SphereIntroducing Azure Sphere
Introducing Azure Sphere
Mirco Vanini
 
Voler's Top 20 Resources for 2019
Voler's Top 20 Resources for 2019Voler's Top 20 Resources for 2019
Voler's Top 20 Resources for 2019
Walt Maclay
 
Using Ansible Tower to implement security policies and telemetry streaming fo...
Using Ansible Tower to implement security policies and telemetry streaming fo...Using Ansible Tower to implement security policies and telemetry streaming fo...
Using Ansible Tower to implement security policies and telemetry streaming fo...
Joel W. King
 
MQTC 2016 - IBM MQ Security: Overview & recap
MQTC 2016 - IBM MQ Security: Overview & recapMQTC 2016 - IBM MQ Security: Overview & recap
MQTC 2016 - IBM MQ Security: Overview & recap
Robert Parker
 
IBC2022 IPShowcase: Tips for Media-over-IP Network Design
IBC2022 IPShowcase: Tips for Media-over-IP Network DesignIBC2022 IPShowcase: Tips for Media-over-IP Network Design
IBC2022 IPShowcase: Tips for Media-over-IP Network Design
Koji Oyama
 
FIWARE IoT Proposal & Community
FIWARE IoT Proposal & CommunityFIWARE IoT Proposal & Community
FIWARE IoT Proposal & Community
FIWARE
 
PSOIOT-1151.pdf
PSOIOT-1151.pdfPSOIOT-1151.pdf
PSOIOT-1151.pdf
AlekseySolomin
 
NSA advisory about state sponsored cybersecurity threats
NSA advisory about state sponsored cybersecurity threatsNSA advisory about state sponsored cybersecurity threats
NSA advisory about state sponsored cybersecurity threats
Ronald Bartels
 
Presentation data center virtualization –setting the foundation
Presentation   data center virtualization –setting the foundationPresentation   data center virtualization –setting the foundation
Presentation data center virtualization –setting the foundation
xKinAnx
 
物聯網連結智慧生活-環境監控與智慧家電的開發與應用
物聯網連結智慧生活-環境監控與智慧家電的開發與應用物聯網連結智慧生活-環境監控與智慧家電的開發與應用
物聯網連結智慧生活-環境監控與智慧家電的開發與應用
永忠 曹
 

Similar to Kseniia Shumelchyk - Android iBeacon development (20)

HITCON 2015 - Building Automation and Control: Hacking Subsidized Energy Savi...
HITCON 2015 - Building Automation and Control: Hacking Subsidized Energy Savi...HITCON 2015 - Building Automation and Control: Hacking Subsidized Energy Savi...
HITCON 2015 - Building Automation and Control: Hacking Subsidized Energy Savi...
 
Internet of Things: an overview
Internet of Things: an overviewInternet of Things: an overview
Internet of Things: an overview
 
WWTC_implementation_plan_Group5_FINAL
WWTC_implementation_plan_Group5_FINALWWTC_implementation_plan_Group5_FINAL
WWTC_implementation_plan_Group5_FINAL
 
Beacons in Androind - About Beacon Russia 2014
Beacons in Androind - About Beacon Russia 2014 Beacons in Androind - About Beacon Russia 2014
Beacons in Androind - About Beacon Russia 2014
 
Design of integrated mine safety monitor system based on zig bee
Design of integrated mine safety monitor system based on zig beeDesign of integrated mine safety monitor system based on zig bee
Design of integrated mine safety monitor system based on zig bee
 
s2c-success-story-actt.pdf
s2c-success-story-actt.pdfs2c-success-story-actt.pdf
s2c-success-story-actt.pdf
 
Integrating Ansible Tower with security orchestration and cloud management
Integrating Ansible Tower with security orchestration and cloud managementIntegrating Ansible Tower with security orchestration and cloud management
Integrating Ansible Tower with security orchestration and cloud management
 
Simple Internet of Things (IoT) game with Bluemix and Node-Red
Simple Internet of Things (IoT)  game with Bluemix and Node-RedSimple Internet of Things (IoT)  game with Bluemix and Node-Red
Simple Internet of Things (IoT) game with Bluemix and Node-Red
 
iBeacons / Beacons and Presence use cases and examples (part 1)
iBeacons / Beacons and Presence use cases and examples (part 1)iBeacons / Beacons and Presence use cases and examples (part 1)
iBeacons / Beacons and Presence use cases and examples (part 1)
 
Enabling policy migration in the Data Center with Ansible
Enabling policy migration in the Data Center with AnsibleEnabling policy migration in the Data Center with Ansible
Enabling policy migration in the Data Center with Ansible
 
Introducing Azure Sphere
Introducing Azure SphereIntroducing Azure Sphere
Introducing Azure Sphere
 
Voler's Top 20 Resources for 2019
Voler's Top 20 Resources for 2019Voler's Top 20 Resources for 2019
Voler's Top 20 Resources for 2019
 
Using Ansible Tower to implement security policies and telemetry streaming fo...
Using Ansible Tower to implement security policies and telemetry streaming fo...Using Ansible Tower to implement security policies and telemetry streaming fo...
Using Ansible Tower to implement security policies and telemetry streaming fo...
 
MQTC 2016 - IBM MQ Security: Overview & recap
MQTC 2016 - IBM MQ Security: Overview & recapMQTC 2016 - IBM MQ Security: Overview & recap
MQTC 2016 - IBM MQ Security: Overview & recap
 
IBC2022 IPShowcase: Tips for Media-over-IP Network Design
IBC2022 IPShowcase: Tips for Media-over-IP Network DesignIBC2022 IPShowcase: Tips for Media-over-IP Network Design
IBC2022 IPShowcase: Tips for Media-over-IP Network Design
 
FIWARE IoT Proposal & Community
FIWARE IoT Proposal & CommunityFIWARE IoT Proposal & Community
FIWARE IoT Proposal & Community
 
PSOIOT-1151.pdf
PSOIOT-1151.pdfPSOIOT-1151.pdf
PSOIOT-1151.pdf
 
NSA advisory about state sponsored cybersecurity threats
NSA advisory about state sponsored cybersecurity threatsNSA advisory about state sponsored cybersecurity threats
NSA advisory about state sponsored cybersecurity threats
 
Presentation data center virtualization –setting the foundation
Presentation   data center virtualization –setting the foundationPresentation   data center virtualization –setting the foundation
Presentation data center virtualization –setting the foundation
 
物聯網連結智慧生活-環境監控與智慧家電的開發與應用
物聯網連結智慧生活-環境監控與智慧家電的開發與應用物聯網連結智慧生活-環境監控與智慧家電的開發與應用
物聯網連結智慧生活-環境監控與智慧家電的開發與應用
 

More from Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
Codemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
Codemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
Codemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Codemotion
 

More from Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Recently uploaded

Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
DianaGray10
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
From Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMsFrom Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMs
Sease
 
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeckPoznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
FilipTomaszewski5
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
Fwdays
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Neo4j
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 

Recently uploaded (20)

Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
From Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMsFrom Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMs
 
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeckPoznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
Poznań ACE event - 19.06.2024 Team 24 Wrapup slidedeck
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 

Kseniia Shumelchyk - Android iBeacon development

  • 1. MILAN 20/21.11.2015 Kseniia Shumelchyk – SoftServe Inc./GDG Dnipropetrovsk Android Wear iBeacon development
  • 2. MILAN 20/21.11.2015 - Kseniia Shumelchyk iBeacons
  • 3. MILAN 20/21.11.2015 - Kseniia Shumelchyk iBeacon -  iBeacon is a protocol standardised by Apple and introduced at the WWDC in 2013 -  Based on top of BLE -  BLE works starting from 4S on Apple -  BLE works starting from 4.3 on Android
  • 4. MILAN 20/21.11.2015 - Kseniia Shumelchyk Internal structure
  • 5. MILAN 20/21.11.2015 - Kseniia Shumelchyk Typical Beacon usage
  • 6. MILAN 20/21.11.2015 - Kseniia Shumelchyk What is BLE? Bluetooth low energy (Bluetooth Smart) is a wireless personal area network technology aimed for novel applications in the healthcare, fitness, beacons, security, and home entertainment industries
  • 7. MILAN 20/21.11.2015 - Kseniia Shumelchyk What is BLE? -  Not backward-compatible (with classic Bluetooth protocol) -  Uses same radio frequencies - 2.4 GGZ -  1 Mbps (1-3 Mbps with regular bluetooth) -  Embedded devices & wearables
  • 8. MILAN 20/21.11.2015 - Kseniia Shumelchyk Specification Technical Specification Classic Bluetooth technology Bluetooth Smart technology Distance/Range (theoretical max.) 100 m (330 ft) >100 m (>330 ft) Over the air data rate 1–3 Mbit/s 1 Mbit/s Active slaves 7 Not defined; implementation dependent Minimum total time to send data 100 ms 3 ms Power consumption 1 W as the reference 0.01 to 0.5 W (depending on use case)
  • 9. MILAN 20/21.11.2015 - Kseniia Shumelchyk Generic Attribute Profile (GATT) -  Client - A device that initiates GATT commands and requests, and accepts responses, for example a computer or smartphone -  Server - A device that receives GATT commands and requests, and returns responses, for example a temperature sensor. -  Characteristic - A data value transferred between client and server, for example the current battery voltage.
  • 10. MILAN 20/21.11.2015 - Kseniia Shumelchyk Generic Attribute Profile (GATT) -  Service - A collection of related characteristics, which operate together to perform a particular function. For instance, the Health Thermometer service includes characteristics for a temperature measurement value, and a time interval between measurements. -  Descriptor - A descriptor provides additional information about a characteristic. For instance, a temperature value characteristic may have an indication of its units (e.g. Celsius), and the maximum and minimum values which the sensor can measure.
  • 11. MILAN 20/21.11.2015 - Kseniia Shumelchyk GATT Operations -  Discover UUIDs for all primary services -  Find a service with a given UUID -  Find secondary services for a given primary service -  Discover all characteristics for a given service -  Find characteristics matching a given UUID -  Read all descriptors for a particular characteristic
  • 13. MILAN 20/21.11.2015 - Kseniia Shumelchyk Beacon’s Advertisement -  Beacon advertises a data package called the Scan Response Data -  This Data can be up to 31 bytes. -  The scan response is divided into AD structures
  • 14. MILAN 20/21.11.2015 - Kseniia Shumelchyk Packet structure (1) Ad Structure 1 0x02 0x01 0x1A Remaining length AD Type Data 2 Flags Flag
  • 15. MILAN 20/21.11.2015 - Kseniia Shumelchyk Packet structure (2) Ad Structure 2 0x1B 0xFF 0xE0 0x00 0xBE 0xAC Remaining length AD Type Manufacturer ID Beacon prefix 27 Manufacturer specific 224 (Google)
  • 16. MILAN 20/21.11.2015 - Kseniia Shumelchyk Packet structure (2) Ad Structure 2 0x0C […] 0xBB 0x00 0x09 0x00 0x06 0xBA UUID (16 bytes) Major Minor TX Power 9 6 -70
  • 17. MILAN 20/21.11.2015 - Kseniia Shumelchyk Internals 02 01 06 1A FF 4C 00 02 15: prefix (fixed except for 3rd byte - flags) B9 40 7F 30 F5 F8 46 6E AF F9 25 55 6B 57 FE 6D: UUID 00 49: major 00 0A: minor C5: measured TX power!
  • 18. MILAN 20/21.11.2015 - Kseniia Shumelchyk
  • 19. MILAN 20/21.11.2015 - Kseniia Shumelchyk Android -  Built in support for Android 4.3+ -  Central & peripheral roles -  GATT server & GATT client -  android.hardware.bluetooth_le feature
  • 20. Android 4.3 & iBeacons
  • 21. MILAN 20/21.11.2015 - Kseniia Shumelchyk •  Android 4.3 for Beacons detection (1) <uses-permission android:name="android.permission.BLUETOOTH"/>   <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>! Check for permission <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>! Check for hardware
  • 22. MILAN 20/21.11.2015 - Kseniia Shumelchyk •  Android 4.3 for Beacons detection (2) ! final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);   mBluetoothAdapter = bluetoothManager.getAdapter();! Get the BluetoothAdapter ! if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {       Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);       startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);   }! 4. Enable Bluetooth
  • 23. MILAN 20/21.11.2015 - Kseniia Shumelchyk •  Android 4.3 for Beacons detection (3) private LeScanCallback mLeScanCallback = new LeScanCallback() {       @Override       public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {   … // Parsing beacon data          });      }   };! Define callback mBluetoothAdapter.startLeScan(mLeScanCallback);! Start BLE scanning
  • 24. Android 5+ & iBeacons
  • 25. MILAN 20/21.11.2015 - Kseniia Shumelchyk Android 5.0+ for Beacons detection -  New api to work with BLE devices -  Background scanning -  Filtering possibility -  SCAN_MODE_LOW_POWER mode -  SCAN_MODE_LOW_LATENCY mode
  • 26. MILAN 20/21.11.2015 - Kseniia Shumelchyk LOW_POWER LOW_LATENCY Test duration 134 minutes 152 minutes Battery Level Change -13% -25% Battery Drain Rate 268mA 454mA Relative Battery Savings 41% -- Typical time between detections 4400 ms 100 ms http://developer.radiusnetworks.com/2014/10/28/android-5.0-scanning.html
  • 27. MILAN 20/21.11.2015 - Kseniia Shumelchyk •  Android 5.0 for Beacons detection (1) private void setScanFilter() {        ScanFilter.Builder mBuilder = new ScanFilter.Builder();        ByteBuffer mManufacturerData = ByteBuffer.allocate(23);        ByteBuffer mManufacturerDataMask = ByteBuffer.allocate(24);        byte[] uuid = getIdAsByte(UUID.fromString("0CF052C297CA407C84F8B62AAC4E9020");        mManufacturerData.put(0, (byte)0xBE);        mManufacturerData.put(1, (byte)0xAC);        for (int i=2; i<=17; i++) {                mManufacturerData.put(i, uuid[i-2]);        }        for (int i=0; i<=17; i++) {                mManufacturerDataMask.put((byte)0x01);        }        mBuilder.setManufacturerData(224, mManufacturerData.array(), mManufacturerDataMask.array());        mScanFilter = mBuilder.build();   }! Creating filter for scanning
  • 28. MILAN 20/21.11.2015 - Kseniia Shumelchyk •  Android 5.0 for Beacons detection (2) •  ENTER FILENAM E/LANG private void setScanSettings() {              ScanSettings.Builder mBuilder = new ScanSettings.Builder();              mBuilder.setReportDelay(0);              mBuilder.setScanMode(ScanSettings.SCAN_MODE_LOW_POWER);              mScanSettings = mBuilder.build();    }! Setting scanner settings
  • 29. MILAN 20/21.11.2015 - Kseniia Shumelchyk •  Android 5.0 for Beacons detection (3) •  ENTER FILENAM E/LANG protected ScanCallback mScanCallback = new ScanCallback() {   @Override   public void onScanResult(int callbackType, ScanResult result) {   ScanRecord mScanRecord = result.getScanRecord();   int[] manufacturerData = mScanRecord.getManufacturerSpecificData(224);   int mRssi = result.getRssi();   }   }! Setting up callback
  • 30. MILAN 20/21.11.2015 - Kseniia Shumelchyk •  Android 5.0 for Beacons detection (4) •  ENTER FILENAM E/LANG mBluetoothLeScanner.startScan(Arrays.asList(mScanFilter), mScanSettings, mScanCallback);! Start scanning
  • 32. MILAN 20/21.11.2015 - Kseniia Shumelchyk Android Beacon emitter -  Works starting from 5.0 -  Currently only Nexus 6, Nexus 9 and later models supported -  BluetoothLeAdvertiser & AdvertiseData & AdvertiseSettings support classes -  Different levels of transmitter power
  • 33. MILAN 20/21.11.2015 - Kseniia Shumelchyk •  Android iBeacon emitter (1) •  ENTER FILENAM E/LANG protected void setAdvertiseData() {            AdvertiseData.Builder mBuilder = new AdvertiseData.Builder()            ByteBuffer mManufacturerData = ByteBuffer.allocate(24);            byte[] uuid = getIdAsByte(UUID.fromString("0CF052C297CA407C84F8B62AAC4E9020"));            mManufacturerData.put(0, (byte)0xBE); // Beacon Identifier            mManufacturerData.put(1, (byte)0xAC); // Beacon Identifier            for (int i=2; i<=17; i++) {   mManufacturerData.put(i, uuid[i-2]); // adding the UUID            }            mManufacturerData.put(18, (byte)0x00); // first byte of Major            mManufacturerData.put(19, (byte)0x09); // second byte of Major            mManufacturerData.put(20, (byte)0x00); // first minor            mManufacturerData.put(21, (byte)0x06); // second minor            mManufacturerData.put(22, (byte)0xB5); // txPower            mBuilder.addManufacturerData(224, mManufacturerData.array());            mAdvertiseData = mBuilder.build();      }! Setting emitter
  • 34. MILAN 20/21.11.2015 - Kseniia Shumelchyk •  Android iBeacon emitter (2) •  ENTER FILENAM E/LANG protected void setAdvertiseSettings() {   AdvertiseSettings.Builder mBuilder = new AdvertiseSettings.Builder();   mBuilder.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER);     mBuilder.setConnectable(false);   mBuilder.setTimeout(0);   mBuilder.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM);     mAdvertiseSettings = mBuilder.build();   }! Setting up setting
  • 35. MILAN 20/21.11.2015 - Kseniia Shumelchyk Good to go, we can start advertising :) Good to go, we can start advertising :-D ENTER FILENAME/LANG mBluetoothLeAdvertiser.startAdvertising(mAdvertiseSettings, mAdvertiseData, mAdvertiseCallback);! Start advertising
  • 36. Android Wear app example
  • 37. MILAN 20/21.11.2015 - Kseniia Shumelchyk
  • 38. MILAN 20/21.11.2015 - Kseniia Shumelchyk
  • 40. MILAN 20/21.11.2015 - Kseniia Shumelchyk On track - for runners
  • 41. MILAN 20/21.11.2015 - Kseniia Shumelchyk Shopping molls
  • 42. MILAN 20/21.11.2015 - Kseniia Shumelchyk Indoor navigation
  • 43. MILAN 20/21.11.2015 - Kseniia Shumelchyk Museums
  • 44. MILAN 20/21.11.2015 - Kseniia Shumelchyk Clinics
  • 45. MILAN 20/21.11.2015 - Kseniia Shumelchyk Hotel check-in & check-out
  • 46. MILAN 20/21.11.2015 - Kseniia Shumelchyk For disabled people
  • 47. MILAN 20/21.11.2015 G+ KseniiaShumelchyk Fb Kseniya.Shumelchyk www www.dnipro.gdg.org.ua
  • 48. MILAN 20/21.11.2015 - SPEAKER’S NAME Leave your feedback on Joind.in! https://m.joind.in/event/codemotion-milan-2015