SlideShare a Scribd company logo
1 of 14
Download to read offline
Bluetooth Low Energy 
Pietro Alberto Rossi 
Android Community Outreach
Chi sono? 
• Sviluppatore Android 
• Appassionato di nuove 
tecnologie 
• Decima conferenza! 
• Kebab dipendente 
• Perennemente a dieta
Android 4.3 
In Android 4.3 Jelly Bean, è stato aggiunto il supporto al Bluetooth LE
Meno energia… 
Bluetooth LE utilizza meno energia rispetto allo standard precedente. 
Conseguenza naturale è la possibilità di poterlo utilizzare su quei dispositivi a 
batteria per garantirne una lunga durata.
Meno dati… 
Il protocollo di comunicazione è stato ottimizzato per inviare e ricevere meno 
byte possibili. 
Ideale per dispositivi come sensori, controller remoti, ecc. 
Naturalmente non è adatto ad audio streaming e simili.
Specifiche 
Bluetooth LE è basato su delle specifiche chiamate General Attribute Profile (GATT) 
che descrivono come inviare e ricevere piccoli pezzi di dati chiamati Attributi (ATT). 
Un’ applicazione Android può essere utilizzata sia da client sia da server. 
Un server GATT supporta una collezione di servizi che implementano le varie 
feature del device. 
Ogni device è univocamente rintracciabile tramite UUID.
Specifiche 
Service 
GATT Server 
GATT Client 
Characteristic 
Value 
Descriptor Descriptor 
Characteristic 
Value 
Descriptor Descriptor
Heart Rate Measurement Profile 
Heart Rate Service 
… 
… 
GATT Server 
GATT Client 
Heart Rate Measurement 
Body Sensor Location 
Altre caratteristiche
Android SDK 
Android Manifest 
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>! 
! 
<uses-permission android:name="android.permission.BLUETOOTH"/>! 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>! 
Controllo presenza SDK 
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {! 
Toast.makeText(this, R.string.ble_not_supported, " " 
" Toast.LENGTH_SHORT).show();! 
"finish();! 
}
Android SDK 
Start scanning 
mBluetoothAdapter.startLeScan(mLeScanCallback); 
Device trovato 
@Override! 
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {! 
runOnUiThread(new Runnable() {! 
@Override! 
public void run() {! 
mLeDeviceListAdapter.addDevice(device);! 
mLeDeviceListAdapter.notifyDataSetChanged();! 
}! 
});! 
}!
Android SDK 
Connessione server GATT 
mBluetoothGatt = device.connectGatt(this, false, mGattCallback); 
Servizio trovato 
mBluetoothGatt.discoverServices() 
Lettura servizio 
@Override! 
public void onServicesDiscovered(BluetoothGatt gatt, int status) {! 
if (status == BluetoothGatt.GATT_SUCCESS) {! 
broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);! 
} else {! 
Log.w(TAG, "onServicesDiscovered received: " + status);! 
}! 
}
Android SDK 
Lettura caratteristica 
@Override! 
public void onCharacteristicRead(BluetoothGatt gatt,! 
" BluetoothGattCharacteristic characteristic, int status) {! 
if (status == BluetoothGatt.GATT_SUCCESS) {! 
broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);! 
}! 
} 
Disconnessione 
mBluetoothGatt.close();
Esempio pratico…
Conclusioni 
Sito web 
www.sprik.it 
Mail 
pietroalberto.rossi@gmail.com

More Related Content

Similar to Bluetooth Low Energy

v2 Presentazione Lelli
v2 Presentazione Lelliv2 Presentazione Lelli
v2 Presentazione Lelli
Matteo Lelli
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
Whymca
 
Smart Plant P&amp;Id Mobile
Smart Plant P&amp;Id MobileSmart Plant P&amp;Id Mobile
Smart Plant P&amp;Id Mobile
gmanca
 
Middleware Sistemi Di Navigazione Upd09 Osm
Middleware Sistemi Di Navigazione Upd09 OsmMiddleware Sistemi Di Navigazione Upd09 Osm
Middleware Sistemi Di Navigazione Upd09 Osm
Roberto Navoni
 

Similar to Bluetooth Low Energy (20)

Bluetooth Low Energy: la rivoluzione silenziosa dell’ambient intelligence
Bluetooth Low Energy: la rivoluzione silenziosa dell’ambient intelligenceBluetooth Low Energy: la rivoluzione silenziosa dell’ambient intelligence
Bluetooth Low Energy: la rivoluzione silenziosa dell’ambient intelligence
 
Android Debug Monitor
Android Debug MonitorAndroid Debug Monitor
Android Debug Monitor
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
v2 Presentazione Lelli
v2 Presentazione Lelliv2 Presentazione Lelli
v2 Presentazione Lelli
 
Microsoft Azure per l'IT Pro
Microsoft Azure per l'IT ProMicrosoft Azure per l'IT Pro
Microsoft Azure per l'IT Pro
 
Android
AndroidAndroid
Android
 
BeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeBeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded Free
 
Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018
 
NFC, Bluetooth e comunicazione tra app
NFC, Bluetooth e comunicazione tra appNFC, Bluetooth e comunicazione tra app
NFC, Bluetooth e comunicazione tra app
 
Sviluppare applicazioni android
Sviluppare applicazioni androidSviluppare applicazioni android
Sviluppare applicazioni android
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
Smart Plant P&amp;Id Mobile
Smart Plant P&amp;Id MobileSmart Plant P&amp;Id Mobile
Smart Plant P&amp;Id Mobile
 
Iothings 2017 - Conferenza BUSINESS & TECHNOLOGY FOR ENTERPRISES
Iothings 2017 - Conferenza BUSINESS & TECHNOLOGY FOR ENTERPRISESIothings 2017 - Conferenza BUSINESS & TECHNOLOGY FOR ENTERPRISES
Iothings 2017 - Conferenza BUSINESS & TECHNOLOGY FOR ENTERPRISES
 
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
Sviluppo di un'applicazione ibrida su dispositivo mobile per l'interfacciamen...
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
 
#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Middleware Sistemi Di Navigazione Upd09 Osm
Middleware Sistemi Di Navigazione Upd09 OsmMiddleware Sistemi Di Navigazione Upd09 Osm
Middleware Sistemi Di Navigazione Upd09 Osm
 

More from Pietro Alberto Rossi

More from Pietro Alberto Rossi (11)

Progressive Web Apps for Beginners
Progressive Web Apps for BeginnersProgressive Web Apps for Beginners
Progressive Web Apps for Beginners
 
Build Android OS on OSX
Build Android OS on OSXBuild Android OS on OSX
Build Android OS on OSX
 
Android File System
Android File SystemAndroid File System
Android File System
 
Android Daemons
Android DaemonsAndroid Daemons
Android Daemons
 
Adb Commands
Adb CommandsAdb Commands
Adb Commands
 
Android Cyclelife
Android CyclelifeAndroid Cyclelife
Android Cyclelife
 
Android Architecture
Android ArchitectureAndroid Architecture
Android Architecture
 
Visual Continuity Material Design
Visual Continuity Material DesignVisual Continuity Material Design
Visual Continuity Material Design
 
Testing Android Application, Droidcon Torino
Testing Android Application, Droidcon TorinoTesting Android Application, Droidcon Torino
Testing Android Application, Droidcon Torino
 
Build Android OS
Build Android OSBuild Android OS
Build Android OS
 
PhpUnit
PhpUnitPhpUnit
PhpUnit
 

Bluetooth Low Energy

  • 1. Bluetooth Low Energy Pietro Alberto Rossi Android Community Outreach
  • 2. Chi sono? • Sviluppatore Android • Appassionato di nuove tecnologie • Decima conferenza! • Kebab dipendente • Perennemente a dieta
  • 3. Android 4.3 In Android 4.3 Jelly Bean, è stato aggiunto il supporto al Bluetooth LE
  • 4. Meno energia… Bluetooth LE utilizza meno energia rispetto allo standard precedente. Conseguenza naturale è la possibilità di poterlo utilizzare su quei dispositivi a batteria per garantirne una lunga durata.
  • 5. Meno dati… Il protocollo di comunicazione è stato ottimizzato per inviare e ricevere meno byte possibili. Ideale per dispositivi come sensori, controller remoti, ecc. Naturalmente non è adatto ad audio streaming e simili.
  • 6. Specifiche Bluetooth LE è basato su delle specifiche chiamate General Attribute Profile (GATT) che descrivono come inviare e ricevere piccoli pezzi di dati chiamati Attributi (ATT). Un’ applicazione Android può essere utilizzata sia da client sia da server. Un server GATT supporta una collezione di servizi che implementano le varie feature del device. Ogni device è univocamente rintracciabile tramite UUID.
  • 7. Specifiche Service GATT Server GATT Client Characteristic Value Descriptor Descriptor Characteristic Value Descriptor Descriptor
  • 8. Heart Rate Measurement Profile Heart Rate Service … … GATT Server GATT Client Heart Rate Measurement Body Sensor Location Altre caratteristiche
  • 9. Android SDK Android Manifest <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>! ! <uses-permission android:name="android.permission.BLUETOOTH"/>! <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>! Controllo presenza SDK if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {! Toast.makeText(this, R.string.ble_not_supported, " " " Toast.LENGTH_SHORT).show();! "finish();! }
  • 10. Android SDK Start scanning mBluetoothAdapter.startLeScan(mLeScanCallback); Device trovato @Override! public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {! runOnUiThread(new Runnable() {! @Override! public void run() {! mLeDeviceListAdapter.addDevice(device);! mLeDeviceListAdapter.notifyDataSetChanged();! }! });! }!
  • 11. Android SDK Connessione server GATT mBluetoothGatt = device.connectGatt(this, false, mGattCallback); Servizio trovato mBluetoothGatt.discoverServices() Lettura servizio @Override! public void onServicesDiscovered(BluetoothGatt gatt, int status) {! if (status == BluetoothGatt.GATT_SUCCESS) {! broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);! } else {! Log.w(TAG, "onServicesDiscovered received: " + status);! }! }
  • 12. Android SDK Lettura caratteristica @Override! public void onCharacteristicRead(BluetoothGatt gatt,! " BluetoothGattCharacteristic characteristic, int status) {! if (status == BluetoothGatt.GATT_SUCCESS) {! broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);! }! } Disconnessione mBluetoothGatt.close();
  • 14. Conclusioni Sito web www.sprik.it Mail pietroalberto.rossi@gmail.com