SlideShare a Scribd company logo
1 of 77
Download to read offline
DEMYSTIFYING 

ANDROID'S 

BLUETOOTH LOW ENERGY
Paweł Urban
Senior Software Engineer
Dariusz Seweryn
Senior Software Engineer
BLUETOOTH LOW ENERGY
BLUETOOTH LOW ENERGY
ANDROID’S NATIVE SUPPORT
BLUETOOTH LOW ENERGY
ANDROID’S NATIVE SUPPORT
YOUR SECRET WEAPON
WHY SHOULD I CARE 

ABOUT BLE?
The Internet of Things – infographicThe Connectivist based on Cisco data
2006
2006 2010
2006 2010 2013
A DEVELOPER

PERSPECTIVE
Jelly Bean
BACKWARD SUPPORT
BACKWARD SUPPORT
BACKWARD SUPPORT
BETA
BACKWARD SUPPORT
BETA
LOW ENERGY
GAP (GENERIC ACCESS PROFILE)
PERIPHERAL
PERIPHERAL CENTRAL
PERIPHERAL CENTRAL
ADVERTISE PRESENCE
PERIPHERAL CENTRAL
ADVERTISE PRESENCE
CONNECTION HANDSHAKE
CLIENT
PERIPHERAL CENTRAL
ADVERTISE PRESENCE
CONNECTION HANDSHAKE
SERVER
CLIENT
PERIPHERAL CENTRAL
ADVERTISE PRESENCE
CONNECTION HANDSHAKE
SERVER
READ/WRITE DATA REQ
RESPOND WITH DATA
GATT (Generic Attribute Profile)
Texas Instruments

SensorTAG
Peripheral device
Service A
Characteristic 1 Characteristic 2
DEVICE
Peripheral device
DEVICE
SENSOR
Service A
Characteristic 1 Characteristic 2
Peripheral device
DEVICE
SENSOR
36.6°C
SENSOR

VALUE
Service A
Characteristic 1 Characteristic 2
Peripheral device
DEVICE
SENSOR
36.6°C
SENSOR

VALUE
Service A
Characteristic 1 Characteristic 2
SENSOR

CONFIGURATION
Peripheral device
DEVICE
SENSOR
36.6°C
SENSOR

VALUE
Service A
Characteristic 1 Characteristic 2
SENSOR

CONFIGURATION
READ
WRITE
NOTIFY
Peripheral device
Service A
Characteristic 1 Characteristic 2
Service B
Characteristic 3 Characteristic 4
Service C
Characteristic 5 Characteristic 6
DISCOVERY
UUID
1 TEMPERATURE(„4E99FFF1-4B3E-11E5-9D65-0002A5D5C51B");
2 HUMIDITY(„4E99FFF2-4B3E-11E5-9D65-0002A5D5C51B");
3 TIME(„5E99FFC1-4B3E-11E5-9D65-0002A5D5C51B");
4 DEVICE_NAME(„00002a26-0000-1000-8000-00805f9b34fb”);
UUID
1 TEMPERATURE(„4E99FFF1-4B3E-11E5-9D65-0002A5D5C51B");
2 HUMIDITY(„4E99FFF2-4B3E-11E5-9D65-0002A5D5C51B");
3 TIME(„5E99FFC1-4B3E-11E5-9D65-0002A5D5C51B");
4 DEVICE_NAME(„00002a26-0000-1000-8000-00805f9b34fb”);
128-bit
UUID
1 TEMPERATURE(„4E99FFF1-4B3E-11E5-9D65-0002A5D5C51B");
2 HUMIDITY(„4E99FFF2-4B3E-11E5-9D65-0002A5D5C51B");
3 TIME(„5E99FFC1-4B3E-11E5-9D65-0002A5D5C51B");
4 DEVICE_NAME(„00002a26-0000-1000-8000-00805f9b34fb”);
16-bit
THE SCARY PART
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
final boolean startLeScan = bluetoothAdapter.startLeScan(leScanCallback);
BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
// processing results
}
};
bluetoothAdapter.stopLeScan(leScanCallback);
SCAN
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
final boolean startLeScan = bluetoothAdapter.startLeScan(leScanCallback);
BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
// processing results
}
};
bluetoothAdapter.stopLeScan(leScanCallback);
SCAN
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
final boolean startLeScan = bluetoothAdapter.startLeScan(leScanCallback);
BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
// processing results
}
};
bluetoothAdapter.stopLeScan(leScanCallback);
SCAN
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
final boolean startLeScan = bluetoothAdapter.startLeScan(leScanCallback);
BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
// processing results
}
};
bluetoothAdapter.stopLeScan(leScanCallback);
SCAN
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
final boolean startLeScan = bluetoothAdapter.startLeScan(
new UUID[]{ UUID.fromString(…) }, leScanCallback);
BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
// processing results
}
};
bluetoothAdapter.stopLeScan(leScanCallback);
SCAN
BluetoothDevice remoteDevice = bluetoothAdapter.getRemoteDevice(getEnteredMacAddress());
BluetoothGatt bluetoothGatt = remoteDevice.connectGatt(context, false, callback);
BluetoothGattCallback callback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
if (status == BluetoothGatt.GATT_SUCCESS) {
if (newState == BluetoothProfile.STATE_CONNECTED) {
// You are connected!
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
// Disconnected
bluetoothGatt.close();
}
} else {
// Maybe disconnected?
onDisconnectRequested();
}
}
};
CONNECTION
BluetoothDevice remoteDevice = bluetoothAdapter.getRemoteDevice(getEnteredMacAddress());
BluetoothGatt bluetoothGatt = remoteDevice.connectGatt(context, false, callback);
BluetoothGattCallback callback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
if (status == BluetoothGatt.GATT_SUCCESS) {
if (newState == BluetoothProfile.STATE_CONNECTED) {
// You are connected!
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
// Disconnected
bluetoothGatt.close();
}
} else {
// Maybe disconnected?
onDisconnectRequested();
}
}
};
CONNECTION
BluetoothDevice remoteDevice = bluetoothAdapter.getRemoteDevice(getEnteredMacAddress());
BluetoothGatt bluetoothGatt = remoteDevice.connectGatt(context, false, callback);
BluetoothGattCallback callback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
if (status == BluetoothGatt.GATT_SUCCESS) {
if (newState == BluetoothProfile.STATE_CONNECTED) {
// You are connected!
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
// Disconnected
bluetoothGatt.close();
}
} else {
// Maybe disconnected?
onDisconnectRequested();
}
}
};
CONNECTION
BluetoothDevice remoteDevice = bluetoothAdapter.getRemoteDevice(getEnteredMacAddress());
BluetoothGatt bluetoothGatt = remoteDevice.connectGatt(context, false, callback);
BluetoothGattCallback callback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
if (status == BluetoothGatt.GATT_SUCCESS) {
if (newState == BluetoothProfile.STATE_CONNECTED) {
// You are connected!
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
// Disconnected
bluetoothGatt.close();
}
} else {
// Maybe disconnected?
onDisconnectRequested();
}
}
};
CONNECTION
BluetoothDevice remoteDevice = bluetoothAdapter.getRemoteDevice(getEnteredMacAddress());
BluetoothGatt bluetoothGatt = remoteDevice.connectGatt(context, false, callback);
BluetoothGattCallback callback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
if (status == BluetoothGatt.GATT_SUCCESS) {
if (newState == BluetoothProfile.STATE_CONNECTED) {
// You are connected!
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
// Disconnected
bluetoothGatt.close();
}
} else {
// Maybe disconnected?
onDisconnectRequested();
}
}
};
CONNECTION
boolean startedDiscovering = bluetoothGatt.discoverServices();
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
BluetoothGattService service = gatt.getService(serviceUUID);
BluetoothGattCharacteristic characteristic
= service.getCharacteristic(characteristicUUID);
boolean startedReadOperation = gatt.readCharacteristic(characteristic);
// ...
} else {
// ...
}
}
@Override
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
byte[] characteristicValue = characteristic.getValue();
} else {
// ...
}
}
READING DATA
boolean startedDiscovering = bluetoothGatt.discoverServices();
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
BluetoothGattService service = gatt.getService(serviceUUID);
BluetoothGattCharacteristic characteristic
= service.getCharacteristic(characteristicUUID);
boolean startedReadOperation = gatt.readCharacteristic(characteristic);
// ...
} else {
// ...
}
}
@Override
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
byte[] characteristicValue = characteristic.getValue();
} else {
// ...
}
}
READING DATA
boolean startedDiscovering = bluetoothGatt.discoverServices();
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
BluetoothGattService service = gatt.getService(serviceUUID);
BluetoothGattCharacteristic characteristic
= service.getCharacteristic(characteristicUUID);
boolean startedReadOperation = gatt.readCharacteristic(characteristic);
// ...
} else {
// ...
}
}
@Override
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
byte[] characteristicValue = characteristic.getValue();
} else {
// ...
}
}
READING DATA
boolean startedDiscovering = bluetoothGatt.discoverServices();
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
BluetoothGattService service = gatt.getService(serviceUUID);
BluetoothGattCharacteristic characteristic
= service.getCharacteristic(characteristicUUID);
boolean startedReadOperation = gatt.readCharacteristic(characteristic);
// ...
} else {
// ...
}
}
@Override
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
byte[] characteristicValue = characteristic.getValue();
} else {
// ...
}
}
READING DATA
@Override
void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic)
@Override
void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status)
@Override
void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status)
@Override
void onConnectionStateChange(BluetoothGatt gatt, int status, int newState)
@Override
void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status)
@Override
void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status)
@Override
void onServicesDiscovered(BluetoothGatt gatt, int status)
@Override
void onMtuChanged(BluetoothGatt gatt, int mtu, int status)
@Override
void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status)
@Override
void onReliableWriteCompleted(BluetoothGatt gatt, int status)
DOES IT HAVETO BE
HARD?
RxAndroidBLE
No! Just use
RXJAVA
OBSERVABLE
RXJAVA
Device Scanning
OBSERVABLE
Device Scanning
Scanned device
Device Scanning
Scanned device
Device Scanning
Scanned device
Device Scanning
Device Scanning
Establish Connection
Device Scanning
Connecting to device
Establish Connection
Device Scanning
Connecting to device
Establish Connection
Read Characteristic
Device Scanning
Connecting to device
Establish Connection
Device Scanning
Connecting to device
Reading CharacteristicValue
Read Characteristic
Establish Connection
Device Scanning
Connecting to device
Reading CharacteristicValue
Read Characteristic
Establish Connection
Declaration of what
we want to achieve
Device Scanning
Connecting to device
Reading CharacteristicValue
Read Characteristic
Establish Connection
Device Scanning
Connecting to device
Reading CharacteristicValue
Read Characteristic
Establish Connection
Device Scanning
Connecting to device
Some action
Do something
Establish Connection
Device Scanning
Connecting to device
Some action
Do something
Establish Connection
Device Scanning
Connecting to device
Some action
Do something
Establish Connection
THE DEMO
SAYTHAT AGAIN?
Q&As?
LET’S CHAT!
@DSeweryn
+PawełUrban
https://git.io/vw8PM
ThankYou!
@DSeweryn +PawełUrban
https://git.io/vw8PM

More Related Content

What's hot

NSClient++: Monitoring Simplified at OSMC 2013
NSClient++: Monitoring Simplified at OSMC 2013NSClient++: Monitoring Simplified at OSMC 2013
NSClient++: Monitoring Simplified at OSMC 2013Michael Medin
 
Ineffective and Effective Ways To Find Out Latency Bottlenecks With Ftrace
Ineffective and Effective Ways To Find Out Latency Bottlenecks With FtraceIneffective and Effective Ways To Find Out Latency Bottlenecks With Ftrace
Ineffective and Effective Ways To Find Out Latency Bottlenecks With FtraceYoshitake Kobayashi
 
Vavr Java User Group Rheinland
Vavr Java User Group RheinlandVavr Java User Group Rheinland
Vavr Java User Group RheinlandDavid Schmitz
 
Devoxx 2013 - Hazelcast
Devoxx 2013 - Hazelcast Devoxx 2013 - Hazelcast
Devoxx 2013 - Hazelcast Hazelcast
 
The Ring programming language version 1.4.1 book - Part 14 of 31
The Ring programming language version 1.4.1 book - Part 14 of 31The Ring programming language version 1.4.1 book - Part 14 of 31
The Ring programming language version 1.4.1 book - Part 14 of 31Mahmoud Samir Fayed
 
OSMC 2013 | Making monitoring simple? by Michael Medin
OSMC 2013 | Making monitoring simple? by Michael MedinOSMC 2013 | Making monitoring simple? by Michael Medin
OSMC 2013 | Making monitoring simple? by Michael MedinNETWAYS
 
Flashback (Practical Test)
Flashback (Practical Test)Flashback (Practical Test)
Flashback (Practical Test)Anar Godjaev
 

What's hot (9)

NSClient++: Monitoring Simplified at OSMC 2013
NSClient++: Monitoring Simplified at OSMC 2013NSClient++: Monitoring Simplified at OSMC 2013
NSClient++: Monitoring Simplified at OSMC 2013
 
Ineffective and Effective Ways To Find Out Latency Bottlenecks With Ftrace
Ineffective and Effective Ways To Find Out Latency Bottlenecks With FtraceIneffective and Effective Ways To Find Out Latency Bottlenecks With Ftrace
Ineffective and Effective Ways To Find Out Latency Bottlenecks With Ftrace
 
Vavr Java User Group Rheinland
Vavr Java User Group RheinlandVavr Java User Group Rheinland
Vavr Java User Group Rheinland
 
Devoxx 2013 - Hazelcast
Devoxx 2013 - Hazelcast Devoxx 2013 - Hazelcast
Devoxx 2013 - Hazelcast
 
Android wearpp
Android wearppAndroid wearpp
Android wearpp
 
Ieee 1149.1-2013-tutorial-ijtag
Ieee 1149.1-2013-tutorial-ijtagIeee 1149.1-2013-tutorial-ijtag
Ieee 1149.1-2013-tutorial-ijtag
 
The Ring programming language version 1.4.1 book - Part 14 of 31
The Ring programming language version 1.4.1 book - Part 14 of 31The Ring programming language version 1.4.1 book - Part 14 of 31
The Ring programming language version 1.4.1 book - Part 14 of 31
 
OSMC 2013 | Making monitoring simple? by Michael Medin
OSMC 2013 | Making monitoring simple? by Michael MedinOSMC 2013 | Making monitoring simple? by Michael Medin
OSMC 2013 | Making monitoring simple? by Michael Medin
 
Flashback (Practical Test)
Flashback (Practical Test)Flashback (Practical Test)
Flashback (Practical Test)
 

Viewers also liked

IWMW 2003: Content Management - Buy or Build?
IWMW 2003: Content Management - Buy or Build?IWMW 2003: Content Management - Buy or Build?
IWMW 2003: Content Management - Buy or Build?IWMW
 
Que aporte le hacen las tic
Que aporte le hacen las ticQue aporte le hacen las tic
Que aporte le hacen las ticIngridmaye2709
 
Nighttime Creme For Your Skin
Nighttime Creme For Your SkinNighttime Creme For Your Skin
Nighttime Creme For Your Skinlatonya5terry48
 
Digital Communications and Democracy
Digital Communications and DemocracyDigital Communications and Democracy
Digital Communications and DemocracyCrystal Cook Marshall
 
IWMW 2003 b4 QA for web sites (5 - The QA Focus Perspective)
IWMW 2003 b4 QA for web sites (5 - The QA Focus Perspective)IWMW 2003 b4 QA for web sites (5 - The QA Focus Perspective)
IWMW 2003 b4 QA for web sites (5 - The QA Focus Perspective)IWMW
 
Fiscal Policy and its effects of Economy.Eop Abid Hussain Sindhu, M14BBA036,...
Fiscal Policy and its effects of Economy.Eop  Abid Hussain Sindhu, M14BBA036,...Fiscal Policy and its effects of Economy.Eop  Abid Hussain Sindhu, M14BBA036,...
Fiscal Policy and its effects of Economy.Eop Abid Hussain Sindhu, M14BBA036,...564251
 

Viewers also liked (11)

IWMW 2003: Content Management - Buy or Build?
IWMW 2003: Content Management - Buy or Build?IWMW 2003: Content Management - Buy or Build?
IWMW 2003: Content Management - Buy or Build?
 
Que aporte le hacen las tic
Que aporte le hacen las ticQue aporte le hacen las tic
Que aporte le hacen las tic
 
Nighttime Creme For Your Skin
Nighttime Creme For Your SkinNighttime Creme For Your Skin
Nighttime Creme For Your Skin
 
Modules Letter
Modules LetterModules Letter
Modules Letter
 
Msc
MscMsc
Msc
 
IVSUM Academic Officer
IVSUM Academic OfficerIVSUM Academic Officer
IVSUM Academic Officer
 
GeriBranch_ref
GeriBranch_refGeriBranch_ref
GeriBranch_ref
 
Metpro
MetproMetpro
Metpro
 
Digital Communications and Democracy
Digital Communications and DemocracyDigital Communications and Democracy
Digital Communications and Democracy
 
IWMW 2003 b4 QA for web sites (5 - The QA Focus Perspective)
IWMW 2003 b4 QA for web sites (5 - The QA Focus Perspective)IWMW 2003 b4 QA for web sites (5 - The QA Focus Perspective)
IWMW 2003 b4 QA for web sites (5 - The QA Focus Perspective)
 
Fiscal Policy and its effects of Economy.Eop Abid Hussain Sindhu, M14BBA036,...
Fiscal Policy and its effects of Economy.Eop  Abid Hussain Sindhu, M14BBA036,...Fiscal Policy and its effects of Economy.Eop  Abid Hussain Sindhu, M14BBA036,...
Fiscal Policy and its effects of Economy.Eop Abid Hussain Sindhu, M14BBA036,...
 

Similar to Demystifying Android's Bluetooth Low Energy

A brief overview of BLE on Android
A brief overview of BLE on AndroidA brief overview of BLE on Android
A brief overview of BLE on AndroidLuka Bašek
 
JSR 82 (bluetooth obex)
JSR 82 (bluetooth obex)JSR 82 (bluetooth obex)
JSR 82 (bluetooth obex)SMIJava
 
Introduction to Things board (An Open Source IoT Cloud Platform)
Introduction to Things board (An Open Source IoT Cloud Platform)Introduction to Things board (An Open Source IoT Cloud Platform)
Introduction to Things board (An Open Source IoT Cloud Platform)Amarjeetsingh Thakur
 
Da Arduino ad Android_ illumina il Natale con il BLE
Da Arduino ad Android_ illumina il Natale con il BLEDa Arduino ad Android_ illumina il Natale con il BLE
Da Arduino ad Android_ illumina il Natale con il BLEinfogdgmi
 
Keyless Door Entry via Bluetooth Technology
Keyless Door Entry via Bluetooth TechnologyKeyless Door Entry via Bluetooth Technology
Keyless Door Entry via Bluetooth TechnologyMatthew Weppler
 
Giving a URL to All Objects using Beacons²
Giving a URL to All Objects using Beacons²Giving a URL to All Objects using Beacons²
Giving a URL to All Objects using Beacons²All Things Open
 
Eddystone Beacons - Physical Web - Giving a URL to All Objects
Eddystone Beacons - Physical Web - Giving a URL to All ObjectsEddystone Beacons - Physical Web - Giving a URL to All Objects
Eddystone Beacons - Physical Web - Giving a URL to All ObjectsJeff Prestes
 
Meetup talk: Readying your Go Webservice
Meetup talk: Readying your Go WebserviceMeetup talk: Readying your Go Webservice
Meetup talk: Readying your Go WebserviceRalph Ligtenberg
 
Fire & Ice: Making and Breaking macOS Firewalls
Fire & Ice: Making and Breaking macOS FirewallsFire & Ice: Making and Breaking macOS Firewalls
Fire & Ice: Making and Breaking macOS FirewallsPriyanka Aash
 
Bending the IoT to your will with JavaScript
Bending the IoT to your will with JavaScriptBending the IoT to your will with JavaScript
Bending the IoT to your will with JavaScriptAll Things Open
 
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...Bruno Salvatore Belluccia
 
Improving android experience for both users and developers
Improving android experience for both users and developersImproving android experience for both users and developers
Improving android experience for both users and developersPavel Lahoda
 
Droidcon2013 android experience lahoda
Droidcon2013 android experience lahodaDroidcon2013 android experience lahoda
Droidcon2013 android experience lahodaDroidcon Berlin
 
Android 4.2 Internals - Bluetooth and Network
Android 4.2 Internals - Bluetooth and NetworkAndroid 4.2 Internals - Bluetooth and Network
Android 4.2 Internals - Bluetooth and NetworkCaio Pereira
 

Similar to Demystifying Android's Bluetooth Low Energy (20)

A brief overview of BLE on Android
A brief overview of BLE on AndroidA brief overview of BLE on Android
A brief overview of BLE on Android
 
Android & Beacons
Android & Beacons Android & Beacons
Android & Beacons
 
Air superiority for Android Apps
Air superiority for Android AppsAir superiority for Android Apps
Air superiority for Android Apps
 
JSR 82 (bluetooth obex)
JSR 82 (bluetooth obex)JSR 82 (bluetooth obex)
JSR 82 (bluetooth obex)
 
Introduction to Things board (An Open Source IoT Cloud Platform)
Introduction to Things board (An Open Source IoT Cloud Platform)Introduction to Things board (An Open Source IoT Cloud Platform)
Introduction to Things board (An Open Source IoT Cloud Platform)
 
Da Arduino ad Android_ illumina il Natale con il BLE
Da Arduino ad Android_ illumina il Natale con il BLEDa Arduino ad Android_ illumina il Natale con il BLE
Da Arduino ad Android_ illumina il Natale con il BLE
 
Keyless Door Entry via Bluetooth Technology
Keyless Door Entry via Bluetooth TechnologyKeyless Door Entry via Bluetooth Technology
Keyless Door Entry via Bluetooth Technology
 
JavaCro'15 - GWT integration with Vaadin - Peter Lehto
JavaCro'15 - GWT integration with Vaadin - Peter LehtoJavaCro'15 - GWT integration with Vaadin - Peter Lehto
JavaCro'15 - GWT integration with Vaadin - Peter Lehto
 
Giving a URL to All Objects using Beacons²
Giving a URL to All Objects using Beacons²Giving a URL to All Objects using Beacons²
Giving a URL to All Objects using Beacons²
 
Eddystone Beacons - Physical Web - Giving a URL to All Objects
Eddystone Beacons - Physical Web - Giving a URL to All ObjectsEddystone Beacons - Physical Web - Giving a URL to All Objects
Eddystone Beacons - Physical Web - Giving a URL to All Objects
 
IoT Best practices
 IoT Best practices IoT Best practices
IoT Best practices
 
Meetup talk: Readying your Go Webservice
Meetup talk: Readying your Go WebserviceMeetup talk: Readying your Go Webservice
Meetup talk: Readying your Go Webservice
 
Physical web
Physical webPhysical web
Physical web
 
Fire & Ice: Making and Breaking macOS Firewalls
Fire & Ice: Making and Breaking macOS FirewallsFire & Ice: Making and Breaking macOS Firewalls
Fire & Ice: Making and Breaking macOS Firewalls
 
Bending the IoT to your will with JavaScript
Bending the IoT to your will with JavaScriptBending the IoT to your will with JavaScript
Bending the IoT to your will with JavaScript
 
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
 
Improving android experience for both users and developers
Improving android experience for both users and developersImproving android experience for both users and developers
Improving android experience for both users and developers
 
Droidcon2013 android experience lahoda
Droidcon2013 android experience lahodaDroidcon2013 android experience lahoda
Droidcon2013 android experience lahoda
 
Android 4.2 Internals - Bluetooth and Network
Android 4.2 Internals - Bluetooth and NetworkAndroid 4.2 Internals - Bluetooth and Network
Android 4.2 Internals - Bluetooth and Network
 
126 Golconde
126 Golconde126 Golconde
126 Golconde
 

Recently uploaded

(办理学位证)多伦多大学毕业证成绩单原版一比一
(办理学位证)多伦多大学毕业证成绩单原版一比一(办理学位证)多伦多大学毕业证成绩单原版一比一
(办理学位证)多伦多大学毕业证成绩单原版一比一C SSS
 
美国IUB学位证,印第安纳大学伯明顿分校毕业证书1:1制作
美国IUB学位证,印第安纳大学伯明顿分校毕业证书1:1制作美国IUB学位证,印第安纳大学伯明顿分校毕业证书1:1制作
美国IUB学位证,印第安纳大学伯明顿分校毕业证书1:1制作ss846v0c
 
Hifi Babe North Delhi Call Girl Service Fun Tonight
Hifi Babe North Delhi Call Girl Service Fun TonightHifi Babe North Delhi Call Girl Service Fun Tonight
Hifi Babe North Delhi Call Girl Service Fun TonightKomal Khan
 
Erfurt FH学位证,埃尔福特应用技术大学毕业证书1:1制作
Erfurt FH学位证,埃尔福特应用技术大学毕业证书1:1制作Erfurt FH学位证,埃尔福特应用技术大学毕业证书1:1制作
Erfurt FH学位证,埃尔福特应用技术大学毕业证书1:1制作f3774p8b
 
Dubai Call Girls O525547819 Spring Break Fast Call Girls Dubai
Dubai Call Girls O525547819 Spring Break Fast Call Girls DubaiDubai Call Girls O525547819 Spring Break Fast Call Girls Dubai
Dubai Call Girls O525547819 Spring Break Fast Call Girls Dubaikojalkojal131
 
(办理学位证)韩国汉阳大学毕业证成绩单原版一比一
(办理学位证)韩国汉阳大学毕业证成绩单原版一比一(办理学位证)韩国汉阳大学毕业证成绩单原版一比一
(办理学位证)韩国汉阳大学毕业证成绩单原版一比一C SSS
 
原版1:1复刻斯坦福大学毕业证Stanford毕业证留信学历认证
原版1:1复刻斯坦福大学毕业证Stanford毕业证留信学历认证原版1:1复刻斯坦福大学毕业证Stanford毕业证留信学历认证
原版1:1复刻斯坦福大学毕业证Stanford毕业证留信学历认证gwhohjj
 
1:1原版定制美国加州州立大学东湾分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree
1:1原版定制美国加州州立大学东湾分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree1:1原版定制美国加州州立大学东湾分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree
1:1原版定制美国加州州立大学东湾分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degreeyuu sss
 
Vip Udupi Call Girls 7001305949 WhatsApp Number 24x7 Best Services
Vip Udupi Call Girls 7001305949 WhatsApp Number 24x7 Best ServicesVip Udupi Call Girls 7001305949 WhatsApp Number 24x7 Best Services
Vip Udupi Call Girls 7001305949 WhatsApp Number 24x7 Best Servicesnajka9823
 
RBS学位证,鹿特丹商学院毕业证书1:1制作
RBS学位证,鹿特丹商学院毕业证书1:1制作RBS学位证,鹿特丹商学院毕业证书1:1制作
RBS学位证,鹿特丹商学院毕业证书1:1制作f3774p8b
 
NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...
NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...
NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...Amil baba
 
毕业文凭制作#回国入职#diploma#degree美国威斯康星大学麦迪逊分校毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#d...
毕业文凭制作#回国入职#diploma#degree美国威斯康星大学麦迪逊分校毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#d...毕业文凭制作#回国入职#diploma#degree美国威斯康星大学麦迪逊分校毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#d...
毕业文凭制作#回国入职#diploma#degree美国威斯康星大学麦迪逊分校毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#d...ttt fff
 
办理(CSU毕业证书)澳洲查理斯特大学毕业证成绩单原版一比一
办理(CSU毕业证书)澳洲查理斯特大学毕业证成绩单原版一比一办理(CSU毕业证书)澳洲查理斯特大学毕业证成绩单原版一比一
办理(CSU毕业证书)澳洲查理斯特大学毕业证成绩单原版一比一diploma 1
 
NO1 Certified Black Magic Specialist Expert In Bahawalpur, Sargodha, Sialkot,...
NO1 Certified Black Magic Specialist Expert In Bahawalpur, Sargodha, Sialkot,...NO1 Certified Black Magic Specialist Expert In Bahawalpur, Sargodha, Sialkot,...
NO1 Certified Black Magic Specialist Expert In Bahawalpur, Sargodha, Sialkot,...Amil Baba Dawood bangali
 
Real Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCR
Real Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCRReal Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCR
Real Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCRdollysharma2066
 
NO1 Certified Black Magic Specialist Expert Amil baba in Uk England Northern ...
NO1 Certified Black Magic Specialist Expert Amil baba in Uk England Northern ...NO1 Certified Black Magic Specialist Expert Amil baba in Uk England Northern ...
NO1 Certified Black Magic Specialist Expert Amil baba in Uk England Northern ...Amil Baba Dawood bangali
 
5S - House keeping (Seiri, Seiton, Seiso, Seiketsu, Shitsuke)
5S - House keeping (Seiri, Seiton, Seiso, Seiketsu, Shitsuke)5S - House keeping (Seiri, Seiton, Seiso, Seiketsu, Shitsuke)
5S - House keeping (Seiri, Seiton, Seiso, Seiketsu, Shitsuke)861c7ca49a02
 
专业一比一美国旧金山艺术学院毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国旧金山艺术学院毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree专业一比一美国旧金山艺术学院毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国旧金山艺术学院毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degreeyuu sss
 

Recently uploaded (20)

young call girls in Khanpur,🔝 9953056974 🔝 escort Service
young call girls in  Khanpur,🔝 9953056974 🔝 escort Serviceyoung call girls in  Khanpur,🔝 9953056974 🔝 escort Service
young call girls in Khanpur,🔝 9953056974 🔝 escort Service
 
(办理学位证)多伦多大学毕业证成绩单原版一比一
(办理学位证)多伦多大学毕业证成绩单原版一比一(办理学位证)多伦多大学毕业证成绩单原版一比一
(办理学位证)多伦多大学毕业证成绩单原版一比一
 
美国IUB学位证,印第安纳大学伯明顿分校毕业证书1:1制作
美国IUB学位证,印第安纳大学伯明顿分校毕业证书1:1制作美国IUB学位证,印第安纳大学伯明顿分校毕业证书1:1制作
美国IUB学位证,印第安纳大学伯明顿分校毕业证书1:1制作
 
Hifi Babe North Delhi Call Girl Service Fun Tonight
Hifi Babe North Delhi Call Girl Service Fun TonightHifi Babe North Delhi Call Girl Service Fun Tonight
Hifi Babe North Delhi Call Girl Service Fun Tonight
 
Erfurt FH学位证,埃尔福特应用技术大学毕业证书1:1制作
Erfurt FH学位证,埃尔福特应用技术大学毕业证书1:1制作Erfurt FH学位证,埃尔福特应用技术大学毕业证书1:1制作
Erfurt FH学位证,埃尔福特应用技术大学毕业证书1:1制作
 
Dubai Call Girls O525547819 Spring Break Fast Call Girls Dubai
Dubai Call Girls O525547819 Spring Break Fast Call Girls DubaiDubai Call Girls O525547819 Spring Break Fast Call Girls Dubai
Dubai Call Girls O525547819 Spring Break Fast Call Girls Dubai
 
(办理学位证)韩国汉阳大学毕业证成绩单原版一比一
(办理学位证)韩国汉阳大学毕业证成绩单原版一比一(办理学位证)韩国汉阳大学毕业证成绩单原版一比一
(办理学位证)韩国汉阳大学毕业证成绩单原版一比一
 
原版1:1复刻斯坦福大学毕业证Stanford毕业证留信学历认证
原版1:1复刻斯坦福大学毕业证Stanford毕业证留信学历认证原版1:1复刻斯坦福大学毕业证Stanford毕业证留信学历认证
原版1:1复刻斯坦福大学毕业证Stanford毕业证留信学历认证
 
1:1原版定制美国加州州立大学东湾分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree
1:1原版定制美国加州州立大学东湾分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree1:1原版定制美国加州州立大学东湾分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree
1:1原版定制美国加州州立大学东湾分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree
 
Vip Udupi Call Girls 7001305949 WhatsApp Number 24x7 Best Services
Vip Udupi Call Girls 7001305949 WhatsApp Number 24x7 Best ServicesVip Udupi Call Girls 7001305949 WhatsApp Number 24x7 Best Services
Vip Udupi Call Girls 7001305949 WhatsApp Number 24x7 Best Services
 
RBS学位证,鹿特丹商学院毕业证书1:1制作
RBS学位证,鹿特丹商学院毕业证书1:1制作RBS学位证,鹿特丹商学院毕业证书1:1制作
RBS学位证,鹿特丹商学院毕业证书1:1制作
 
NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...
NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...
NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...
 
毕业文凭制作#回国入职#diploma#degree美国威斯康星大学麦迪逊分校毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#d...
毕业文凭制作#回国入职#diploma#degree美国威斯康星大学麦迪逊分校毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#d...毕业文凭制作#回国入职#diploma#degree美国威斯康星大学麦迪逊分校毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#d...
毕业文凭制作#回国入职#diploma#degree美国威斯康星大学麦迪逊分校毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#d...
 
办理(CSU毕业证书)澳洲查理斯特大学毕业证成绩单原版一比一
办理(CSU毕业证书)澳洲查理斯特大学毕业证成绩单原版一比一办理(CSU毕业证书)澳洲查理斯特大学毕业证成绩单原版一比一
办理(CSU毕业证书)澳洲查理斯特大学毕业证成绩单原版一比一
 
NO1 Certified Black Magic Specialist Expert In Bahawalpur, Sargodha, Sialkot,...
NO1 Certified Black Magic Specialist Expert In Bahawalpur, Sargodha, Sialkot,...NO1 Certified Black Magic Specialist Expert In Bahawalpur, Sargodha, Sialkot,...
NO1 Certified Black Magic Specialist Expert In Bahawalpur, Sargodha, Sialkot,...
 
Real Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCR
Real Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCRReal Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCR
Real Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCR
 
NO1 Certified Black Magic Specialist Expert Amil baba in Uk England Northern ...
NO1 Certified Black Magic Specialist Expert Amil baba in Uk England Northern ...NO1 Certified Black Magic Specialist Expert Amil baba in Uk England Northern ...
NO1 Certified Black Magic Specialist Expert Amil baba in Uk England Northern ...
 
5S - House keeping (Seiri, Seiton, Seiso, Seiketsu, Shitsuke)
5S - House keeping (Seiri, Seiton, Seiso, Seiketsu, Shitsuke)5S - House keeping (Seiri, Seiton, Seiso, Seiketsu, Shitsuke)
5S - House keeping (Seiri, Seiton, Seiso, Seiketsu, Shitsuke)
 
专业一比一美国旧金山艺术学院毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国旧金山艺术学院毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree专业一比一美国旧金山艺术学院毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国旧金山艺术学院毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
 
young call girls in Gtb Nagar,🔝 9953056974 🔝 escort Service
young call girls in Gtb Nagar,🔝 9953056974 🔝 escort Serviceyoung call girls in Gtb Nagar,🔝 9953056974 🔝 escort Service
young call girls in Gtb Nagar,🔝 9953056974 🔝 escort Service
 

Demystifying Android's Bluetooth Low Energy