SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à 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 overviewPascal Bodin
 
WWTC_implementation_plan_Group5_FINAL
WWTC_implementation_plan_Group5_FINALWWTC_implementation_plan_Group5_FINAL
WWTC_implementation_plan_Group5_FINALJohn 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 beeimpulsetechembedded12
 
s2c-success-story-actt.pdf
s2c-success-story-actt.pdfs2c-success-story-actt.pdf
s2c-success-story-actt.pdfS2C 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 managementJoel W. King
 
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
 
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-RedMarkus 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 AnsibleJoel W. King
 
Introducing Azure Sphere
Introducing Azure SphereIntroducing Azure Sphere
Introducing Azure SphereMirco 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 2019Walt 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 & recapRobert Parker
 
FIWARE IoT Proposal & Community
FIWARE IoT Proposal & CommunityFIWARE IoT Proposal & Community
FIWARE IoT Proposal & CommunityFIWARE
 
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 threatsRonald 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 foundationxKinAnx
 
物聯網連結智慧生活-環境監控與智慧家電的開發與應用
物聯網連結智慧生活-環境監控與智慧家電的開發與應用物聯網連結智慧生活-環境監控與智慧家電的開發與應用
物聯網連結智慧生活-環境監控與智慧家電的開發與應用永忠 曹
 
Configuring cisco site to site ip sec vpn with dynamic ip endpoint cisco routers
Configuring cisco site to site ip sec vpn with dynamic ip endpoint cisco routersConfiguring cisco site to site ip sec vpn with dynamic ip endpoint cisco routers
Configuring cisco site to site ip sec vpn with dynamic ip endpoint cisco routersphosika sithisane
 

Similaire à 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
 
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)
 
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
 
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
 
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
 
物聯網連結智慧生活-環境監控與智慧家電的開發與應用
物聯網連結智慧生活-環境監控與智慧家電的開發與應用物聯網連結智慧生活-環境監控與智慧家電的開發與應用
物聯網連結智慧生活-環境監控與智慧家電的開發與應用
 
Configuring cisco site to site ip sec vpn with dynamic ip endpoint cisco routers
Configuring cisco site to site ip sec vpn with dynamic ip endpoint cisco routersConfiguring cisco site to site ip sec vpn with dynamic ip endpoint cisco routers
Configuring cisco site to site ip sec vpn with dynamic ip endpoint cisco routers
 

Plus de 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 storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
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 2019Codemotion
 
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 2019Codemotion
 
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 2019Codemotion
 
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 2019Codemotion
 
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 2019Codemotion
 
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 2019Codemotion
 
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 2019Codemotion
 
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 2019Codemotion
 

Plus de 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
 

Dernier

UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 

Dernier (20)

UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 

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