SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
EVERYTHING ABOUT
BLUETOOTH
Johnny Sung
02. Peripheral mode in Android
https://fb.com/j796160836
Johnny Sung
Mobile devices Developer
https://plus.google.com/+JohnnySung
http://about.me/j796160836
(Samsung S6 Edge)
Peripheral Central
(LG Nexus 5)
2.0 2.0 + 4.0 Dual Mode 4.0
Bluetooth SMART READYBluetooth Bluetooth SMART
Bluetooth low energy Protocol Stack
• Peripheral
• Central
• Broadcaster
• Observer
GAP Roles
PeripheralCentral
PeripheralCentral
PeripheralCentral
GATT
• Service
• Characteristic
• Data
• Descriptor
GATT
• Heart Rate Service
• Heart Rate Measurement
• Data
• Descriptor
00002A37-0000-1000-8000-00805F9B34FB
GATT
Heart Rate Monitor
0000180D-0000-1000-8000-00805F9B34FB
Property: Notify
Property: Indicate
• Health Thermometer
• Temperature Measurement
• Data
• Descriptor
GATT
Health Thermometer
00001809-0000-1000-8000-00805F9B34FB
00002A1C-0000-1000-8000-00805F9B34FB
• Read
• Write
• Notify
• Indicate
Characteristic Properties
UUID
00002A37-0000-1000-8000-00805F9B34FB
0x2A37
Heart Rate Measurement
• an indicate operation is identical to
a notify operation except that
indications are acknowledged,
while notifications are not.
Notify vs Indicate
http://mbientlab.com/blog/bluetooth-low-energy-introduction/
https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?
u=org.bluetooth.service.health_thermometer.xml
Property: Indicate
• Health Thermometer
• Temperature Measurement
• Data
• Descriptor
GATT
Health Thermometer
00001809-0000-1000-8000-00805F9B34FB
00002A1C-0000-1000-8000-00805F9B34FB
• Central
• Android 4.3 (API Level 18)
• Peripheral
• Android 5.0 (API Level 21)
• Specific BLE chip
Requirement in Android
What? Specific BLE chip ?
http://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html
BluetoothManager manager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

BluetoothAdapter adapter = manager.getAdapter();



adapter.isMultipleAdvertisementSupported();
Check if devices support
Peripheral mode
PERIPHERAL
<uses-permission android:name="android.permission.BLUETOOTH"/>

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>



<uses-feature

android:name="android.hardware.bluetooth_le"

android:required="true"/>
Bluetooth permissions
AndroidManifest.xml
Bluetooth permissions
Check system feature
getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)
@Override

public void onActivityResult(int requestCode
, int resultCode, Intent data) {

if (requestCode == REQUEST_ENABLE_BT) {

if (resultCode == Activity.RESULT_OK) {

// Bluetooth has turned on

} else {

// User did not enable Bluetooth or an error occurred

}

}

}
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
Request to enable Bluetooth
BluetoothGattService hrmService =
new BluetoothGattService(SERVICE_HEALTH_THERMOMETER_UUID,

BluetoothGattService.SERVICE_TYPE_PRIMARY);
BluetoothGattCharacteristic tempChar =

new BluetoothGattCharacteristic(CHAR_TEMP_UUID,
BluetoothGattCharacteristic.PROPERTY_INDICATE,
BluetoothGattCharacteristic.PERMISSION_READ);
tempChar.addDescriptor(new BluetoothGattDescriptor(

UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"),

(BluetoothGattDescriptor.PERMISSION_READ |
BluetoothGattDescriptor.PERMISSION_WRITE)));


hrmService.addCharacteristic(tempChar);
Prepare service structure
Health Thermometer
2A1C
1809
AdvertiseData.Builder datas = new AdvertiseData.Builder();

AdvertiseSettings.Builder settings = new AdvertiseSettings.Builder();



datas.addServiceUuid(new ParcelUuid(hrmService.getUuid()));

BluetoothLeAdvertiser advertiser = adapter.getBluetoothLeAdvertiser();

advertiser.startAdvertising(settings.build(),
datas.build(), advertiseCallback);
BluetoothManager manager =
(BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

BluetoothAdapter adapter = bluetoothManager.getAdapter();
BluetoothGattServer gattServer =
manager.openGattServer(context, gattServerCallback);
gattServer.addService(hrmService);
Open server
Advertise to others
AdvertiseCallback advertiseCallback = new AdvertiseCallback() {

@Override

public void onStartSuccess(AdvertiseSettings settingsInEffect) {

// ...

}



@Override

public void onStartFailure(int errorCode) {

// ...

}

};
Advertise callback
private HashSet<BluetoothDevice> bleDevices = new HashSet<>();


private final BluetoothGattServerCallback gattServerCallback =
new BluetoothGattServerCallback() {

@Override

public void onConnectionStateChange(BluetoothDevice device,
int status, int newState) {

super.onConnectionStateChange(device, status, newState);

if (status == BluetoothGatt.GATT_SUCCESS) {

if (newState == BluetoothGatt.STATE_CONNECTED) {

// Connect

bleDevices.add(device);

} else if (newState == BluetoothGatt.STATE_DISCONNECTED) {

// Disconnect

bleDevices.remove(device);

}

} else {

// Disconnect with error

bleDevices.remove(device);

}

}

// ... (略)

};
Handle device connect
private final BluetoothGattServerCallback gattServerCallback
= new BluetoothGattServerCallback() {


// ... (略)



@Override

public void onCharacteristicReadRequest(BluetoothDevice device,
int requestId, int offset,
BluetoothGattCharacteristic characteristic) {

// ...
gattServer.sendResponse(device, requestId,
BluetoothGatt.GATT_SUCCESS,

offset,
characteristic.getValue());

}



// ... (略)

};
Reading Characteristic
Writing Characteristic
http://developer.android.com/reference/android/bluetooth/
BluetoothGattServerCallback.html#onCharacteristicWriteRequest(android.bluetooth.BluetoothDevice, int, android.bluetooth.BluetoothGattCharacteristic,
boolean, boolean, int, byte[])
private final BluetoothGattServerCallback gattServerCallback
= new BluetoothGattServerCallback() {

// ... (略)

@Override

public void onCharacteristicWriteRequest(BluetoothDevice device,
int requestId, BluetoothGattCharacteristic characteristic,
boolean preparedWrite, boolean responseNeeded,

int offset, byte[] value) {

// ...

ByteBuffer buffer = ByteBuffer.wrap(value);

buffer.order(ByteOrder.LITTLE_ENDIAN);


characteristic.setValue(buffer.getInt(),

BluetoothGattCharacteristic.FORMAT_UINT16, 0);



if (responseNeeded) {

gattServer.sendResponse(device, requestId,
BluetoothGatt.GATT_SUCCESS, 0, null);

}

}
// ... (略)

};
private final BluetoothGattServerCallback mGattServerCallback
= new BluetoothGattServerCallback() {

// ... (略)

@Override

public void onDescriptorWriteRequest(BluetoothDevice device,
int requestId, BluetoothGattDescriptor descriptor,
boolean preparedWrite, boolean responseNeeded,

int offset, byte[] value) {


super.onDescriptorWriteRequest(device, requestId,
descriptor, preparedWrite,
responseNeeded, offset,
value);

if (responseNeeded) {

gattServer.sendResponse(device, requestId,
BluetoothGatt.GATT_SUCCESS, 0, null);

}

}
// ... (略)

};
Writing Descriptor
public void sendNotificationToDevices(
BluetoothGattCharacteristic characteristic) {

boolean indicate = (characteristic.getProperties()

& BluetoothGattCharacteristic.PROPERTY_INDICATE)

== BluetoothGattCharacteristic.PROPERTY_INDICATE;

for (BluetoothDevice device : bleDevices) {

gattServer.notifyCharacteristicChanged(device,
characteristic,
indicate);

}

}
Send Characteristic Notify
Q&A
ADDITIONAL SLIDES
The story
About Nexus 5
http://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html
https://code.google.com/p/android-developer-preview/issues/detail?id=1570
We introduced BLE peripheral mode in Android 5.0
Lollipop. Nexus 6 and Nexus 9 are the first two production
Nexus devices that support BLE peripheral mode. Due to
hardware chipset dependency, older Nexus devices (4/5/7)
will not have access to the feature on Lollipop.
#52 Won’t Fix

Contenu connexe

En vedette

Next Generation Blue Z and Bluetooth Smart Drivers
Next Generation Blue Z and Bluetooth Smart DriversNext Generation Blue Z and Bluetooth Smart Drivers
Next Generation Blue Z and Bluetooth Smart DriversRyo Jin
 
Bluetooth technology presentation
Bluetooth technology presentationBluetooth technology presentation
Bluetooth technology presentationKrishna Kumari
 
Maemo Chinook Software Architecture
Maemo Chinook Software ArchitectureMaemo Chinook Software Architecture
Maemo Chinook Software Architecturejtukkine
 
Blues Haiku
Blues HaikuBlues Haiku
Blues HaikuSo Mon
 
Maemo Harmattan Qt And More
Maemo Harmattan Qt And MoreMaemo Harmattan Qt And More
Maemo Harmattan Qt And Moreqgil
 
Tizen architecture-solutionslinux-20130529
Tizen architecture-solutionslinux-20130529Tizen architecture-solutionslinux-20130529
Tizen architecture-solutionslinux-20130529Phil www.rzr.online.fr
 
Current trends in open source and automotive
Current trends in open source and automotiveCurrent trends in open source and automotive
Current trends in open source and automotiveRyo Jin
 
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会Shinji Kobayashi
 
Tizen Overview and Architecture - Seokjae Jeong (Samsung) - Korea Linux Forum...
Tizen Overview and Architecture - Seokjae Jeong (Samsung) - Korea Linux Forum...Tizen Overview and Architecture - Seokjae Jeong (Samsung) - Korea Linux Forum...
Tizen Overview and Architecture - Seokjae Jeong (Samsung) - Korea Linux Forum...Ryo Jin
 
Diapositivas U2 2 Bluetooth V2
Diapositivas U2 2 Bluetooth V2Diapositivas U2 2 Bluetooth V2
Diapositivas U2 2 Bluetooth V2Felipe Román
 
RF Matching Guidelines for WIFI
RF Matching Guidelines for WIFIRF Matching Guidelines for WIFI
RF Matching Guidelines for WIFIcriterion123
 
Tecnología Bluetooth
Tecnología BluetoothTecnología Bluetooth
Tecnología BluetoothVictor Pando
 
Android Bluetooth Introduction
Android Bluetooth IntroductionAndroid Bluetooth Introduction
Android Bluetooth IntroductionErin Yueh
 

En vedette (18)

Next Generation Blue Z and Bluetooth Smart Drivers
Next Generation Blue Z and Bluetooth Smart DriversNext Generation Blue Z and Bluetooth Smart Drivers
Next Generation Blue Z and Bluetooth Smart Drivers
 
Bluetooth
BluetoothBluetooth
Bluetooth
 
Bluetooth technology presentation
Bluetooth technology presentationBluetooth technology presentation
Bluetooth technology presentation
 
Maemo Chinook Software Architecture
Maemo Chinook Software ArchitectureMaemo Chinook Software Architecture
Maemo Chinook Software Architecture
 
Blues Haiku
Blues HaikuBlues Haiku
Blues Haiku
 
Maemo Harmattan Qt And More
Maemo Harmattan Qt And MoreMaemo Harmattan Qt And More
Maemo Harmattan Qt And More
 
Tizen architecture-solutionslinux-20130529
Tizen architecture-solutionslinux-20130529Tizen architecture-solutionslinux-20130529
Tizen architecture-solutionslinux-20130529
 
Current trends in open source and automotive
Current trends in open source and automotiveCurrent trends in open source and automotive
Current trends in open source and automotive
 
Android bluetooth
Android bluetoothAndroid bluetooth
Android bluetooth
 
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会
 
Tizen Overview and Architecture - Seokjae Jeong (Samsung) - Korea Linux Forum...
Tizen Overview and Architecture - Seokjae Jeong (Samsung) - Korea Linux Forum...Tizen Overview and Architecture - Seokjae Jeong (Samsung) - Korea Linux Forum...
Tizen Overview and Architecture - Seokjae Jeong (Samsung) - Korea Linux Forum...
 
Diapositivas U2 2 Bluetooth V2
Diapositivas U2 2 Bluetooth V2Diapositivas U2 2 Bluetooth V2
Diapositivas U2 2 Bluetooth V2
 
RF Matching Guidelines for WIFI
RF Matching Guidelines for WIFIRF Matching Guidelines for WIFI
RF Matching Guidelines for WIFI
 
Tecnología Bluetooth
Tecnología BluetoothTecnología Bluetooth
Tecnología Bluetooth
 
LTE Measurement: How to test a device
LTE Measurement: How to test a deviceLTE Measurement: How to test a device
LTE Measurement: How to test a device
 
Android Bluetooth Introduction
Android Bluetooth IntroductionAndroid Bluetooth Introduction
Android Bluetooth Introduction
 
Bluetooth
BluetoothBluetooth
Bluetooth
 
Bluetooth
BluetoothBluetooth
Bluetooth
 

Similaire à Everything About Bluetooth (淺談藍牙 4.0) - Peripheral 篇

Bluetooth World 2018 - Intro to Bluetooth Low Energy with Mbed OS
Bluetooth World 2018 - Intro to Bluetooth Low Energy with Mbed OSBluetooth World 2018 - Intro to Bluetooth Low Energy with Mbed OS
Bluetooth World 2018 - Intro to Bluetooth Low Energy with Mbed OSAustin Blackstone
 
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
 
Labs_BT_20221017.pptx
Labs_BT_20221017.pptxLabs_BT_20221017.pptx
Labs_BT_20221017.pptxssuserb4d806
 
Swift hardware hacking @ try! Swift
Swift hardware hacking @ try! SwiftSwift hardware hacking @ try! Swift
Swift hardware hacking @ try! SwiftSally Shepard
 
Mitsubishi graphic operation terminal got2000 series open frame model dienhat...
Mitsubishi graphic operation terminal got2000 series open frame model dienhat...Mitsubishi graphic operation terminal got2000 series open frame model dienhat...
Mitsubishi graphic operation terminal got2000 series open frame model dienhat...Dien Ha The
 
Gl320M series user manual v1.00
Gl320M series user manual v1.00Gl320M series user manual v1.00
Gl320M series user manual v1.00Rabius Sany
 
How the world gets its weather
How the world gets its weather How the world gets its weather
How the world gets its weather Ravi Yadav
 
SJ-20140527134054-013-ZXUR 9000 UMTS (V4.13.10.15) Radio Parameter Reference_...
SJ-20140527134054-013-ZXUR 9000 UMTS (V4.13.10.15) Radio Parameter Reference_...SJ-20140527134054-013-ZXUR 9000 UMTS (V4.13.10.15) Radio Parameter Reference_...
SJ-20140527134054-013-ZXUR 9000 UMTS (V4.13.10.15) Radio Parameter Reference_...tunaVNP
 
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
 
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
 
Android Things Linux Day 2017
Android Things Linux Day 2017 Android Things Linux Day 2017
Android Things Linux Day 2017 Stefano Sanna
 
IoT on Raspberry PI v1.2
IoT on Raspberry PI v1.2IoT on Raspberry PI v1.2
IoT on Raspberry PI v1.2John Staveley
 
PhoneGap - Hardware Manipulation
PhoneGap - Hardware ManipulationPhoneGap - Hardware Manipulation
PhoneGap - Hardware ManipulationDoncho Minkov
 
Bluetooth Module HC-06
Bluetooth Module HC-06Bluetooth Module HC-06
Bluetooth Module HC-06Raghav Shetty
 
Dataguard broker and observerst
Dataguard broker and observerstDataguard broker and observerst
Dataguard broker and observerstsmajeed1
 
Wireless Sensor Networks: MAC protocol of a point-to-point NBE network
Wireless Sensor Networks: MAC protocol of a point-to-point NBE networkWireless Sensor Networks: MAC protocol of a point-to-point NBE network
Wireless Sensor Networks: MAC protocol of a point-to-point NBE networkDaniele Antonioli
 

Similaire à Everything About Bluetooth (淺談藍牙 4.0) - Peripheral 篇 (20)

Bluetooth World 2018 - Intro to Bluetooth Low Energy with Mbed OS
Bluetooth World 2018 - Intro to Bluetooth Low Energy with Mbed OSBluetooth World 2018 - Intro to Bluetooth Low Energy with Mbed OS
Bluetooth World 2018 - Intro to Bluetooth Low Energy with Mbed OS
 
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
 
Eddystone beacons demo
Eddystone beacons demoEddystone beacons demo
Eddystone beacons demo
 
Labs_BT_20221017.pptx
Labs_BT_20221017.pptxLabs_BT_20221017.pptx
Labs_BT_20221017.pptx
 
Swift hardware hacking @ try! Swift
Swift hardware hacking @ try! SwiftSwift hardware hacking @ try! Swift
Swift hardware hacking @ try! Swift
 
Mitsubishi graphic operation terminal got2000 series open frame model dienhat...
Mitsubishi graphic operation terminal got2000 series open frame model dienhat...Mitsubishi graphic operation terminal got2000 series open frame model dienhat...
Mitsubishi graphic operation terminal got2000 series open frame model dienhat...
 
Gl320M series user manual v1.00
Gl320M series user manual v1.00Gl320M series user manual v1.00
Gl320M series user manual v1.00
 
How the world gets its weather
How the world gets its weather How the world gets its weather
How the world gets its weather
 
SJ-20140527134054-013-ZXUR 9000 UMTS (V4.13.10.15) Radio Parameter Reference_...
SJ-20140527134054-013-ZXUR 9000 UMTS (V4.13.10.15) Radio Parameter Reference_...SJ-20140527134054-013-ZXUR 9000 UMTS (V4.13.10.15) Radio Parameter Reference_...
SJ-20140527134054-013-ZXUR 9000 UMTS (V4.13.10.15) Radio Parameter Reference_...
 
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
 
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
 
Google tv
Google tv Google tv
Google tv
 
PROYECTO VLANS
PROYECTO VLANSPROYECTO VLANS
PROYECTO VLANS
 
Android Things Linux Day 2017
Android Things Linux Day 2017 Android Things Linux Day 2017
Android Things Linux Day 2017
 
IoT on Raspberry PI v1.2
IoT on Raspberry PI v1.2IoT on Raspberry PI v1.2
IoT on Raspberry PI v1.2
 
PhoneGap - Hardware Manipulation
PhoneGap - Hardware ManipulationPhoneGap - Hardware Manipulation
PhoneGap - Hardware Manipulation
 
Bluetooth Module HC-06
Bluetooth Module HC-06Bluetooth Module HC-06
Bluetooth Module HC-06
 
Dataguard broker and observerst
Dataguard broker and observerstDataguard broker and observerst
Dataguard broker and observerst
 
Wireless Sensor Networks: MAC protocol of a point-to-point NBE network
Wireless Sensor Networks: MAC protocol of a point-to-point NBE networkWireless Sensor Networks: MAC protocol of a point-to-point NBE network
Wireless Sensor Networks: MAC protocol of a point-to-point NBE network
 

Plus de Johnny Sung

[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023
[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023
[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023Johnny Sung
 
[Flutter] Flutter Provider 看似簡單卻又不簡單的狀態管理工具 @ Devfest Kaohsiung 2023
[Flutter] Flutter Provider 看似簡單卻又不簡單的狀態管理工具 @ Devfest Kaohsiung 2023[Flutter] Flutter Provider 看似簡單卻又不簡單的狀態管理工具 @ Devfest Kaohsiung 2023
[Flutter] Flutter Provider 看似簡單卻又不簡單的狀態管理工具 @ Devfest Kaohsiung 2023Johnny Sung
 
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang) [Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang) Johnny Sung
 
[Flutter] 來體驗 bloc 小方塊的神奇魔法 @Devfest 2022
[Flutter] 來體驗 bloc 小方塊的神奇魔法 @Devfest 2022[Flutter] 來體驗 bloc 小方塊的神奇魔法 @Devfest 2022
[Flutter] 來體驗 bloc 小方塊的神奇魔法 @Devfest 2022Johnny Sung
 
與 Sign in with Apple 的愛恨情仇 @ iPlayground2020
與 Sign in with Apple 的愛恨情仇 @ iPlayground2020與 Sign in with Apple 的愛恨情仇 @ iPlayground2020
與 Sign in with Apple 的愛恨情仇 @ iPlayground2020Johnny Sung
 
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Johnny Sung
 
談談 Android constraint layout
談談 Android constraint layout談談 Android constraint layout
談談 Android constraint layoutJohnny Sung
 
炎炎夏日學 Android 課程 - Part3: Android app 實作
炎炎夏日學 Android 課程 - Part3: Android app 實作炎炎夏日學 Android 課程 - Part3: Android app 實作
炎炎夏日學 Android 課程 - Part3: Android app 實作Johnny Sung
 
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹Johnny Sung
 
炎炎夏日學 Android 課程 - Part2: Android 元件介紹
炎炎夏日學 Android 課程 - Part2: Android 元件介紹炎炎夏日學 Android 課程 - Part2: Android 元件介紹
炎炎夏日學 Android 課程 - Part2: Android 元件介紹Johnny Sung
 
炎炎夏日學 Android 課程 - Part 0: 環境搭建
炎炎夏日學 Android 課程 - Part 0: 環境搭建炎炎夏日學 Android 課程 - Part 0: 環境搭建
炎炎夏日學 Android 課程 - Part 0: 環境搭建Johnny Sung
 
About Mobile Accessibility
About Mobile AccessibilityAbout Mobile Accessibility
About Mobile AccessibilityJohnny Sung
 
Introductions of Messaging bot 做聊天機器人
Introductions of Messaging bot 做聊天機器人Introductions of Messaging bot 做聊天機器人
Introductions of Messaging bot 做聊天機器人Johnny Sung
 
[MOPCON 2015] 談談行動裝置的 Accessibility
[MOPCON 2015] 談談行動裝置的 Accessibility[MOPCON 2015] 談談行動裝置的 Accessibility
[MOPCON 2015] 談談行動裝置的 AccessibilityJohnny Sung
 
A Quick look at ANCS (Apple Notification Center Service)
A Quick look at ANCS (Apple Notification Center Service)A Quick look at ANCS (Apple Notification Center Service)
A Quick look at ANCS (Apple Notification Center Service)Johnny Sung
 
uPresenter, the story.
uPresenter, the story.uPresenter, the story.
uPresenter, the story.Johnny Sung
 
Android Wear Development
Android Wear DevelopmentAndroid Wear Development
Android Wear DevelopmentJohnny Sung
 
Android workshop - 02. Glass development 101
Android workshop - 02. Glass development 101Android workshop - 02. Glass development 101
Android workshop - 02. Glass development 101Johnny Sung
 
Android workshop - 01. Getting started on android phone
Android workshop - 01. Getting started on android phoneAndroid workshop - 01. Getting started on android phone
Android workshop - 01. Getting started on android phoneJohnny Sung
 
Good!愛點兒 - 雲端電子點餐系統
Good!愛點兒 - 雲端電子點餐系統Good!愛點兒 - 雲端電子點餐系統
Good!愛點兒 - 雲端電子點餐系統Johnny Sung
 

Plus de Johnny Sung (20)

[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023
[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023
[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023
 
[Flutter] Flutter Provider 看似簡單卻又不簡單的狀態管理工具 @ Devfest Kaohsiung 2023
[Flutter] Flutter Provider 看似簡單卻又不簡單的狀態管理工具 @ Devfest Kaohsiung 2023[Flutter] Flutter Provider 看似簡單卻又不簡單的狀態管理工具 @ Devfest Kaohsiung 2023
[Flutter] Flutter Provider 看似簡單卻又不簡單的狀態管理工具 @ Devfest Kaohsiung 2023
 
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang) [Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
 
[Flutter] 來體驗 bloc 小方塊的神奇魔法 @Devfest 2022
[Flutter] 來體驗 bloc 小方塊的神奇魔法 @Devfest 2022[Flutter] 來體驗 bloc 小方塊的神奇魔法 @Devfest 2022
[Flutter] 來體驗 bloc 小方塊的神奇魔法 @Devfest 2022
 
與 Sign in with Apple 的愛恨情仇 @ iPlayground2020
與 Sign in with Apple 的愛恨情仇 @ iPlayground2020與 Sign in with Apple 的愛恨情仇 @ iPlayground2020
與 Sign in with Apple 的愛恨情仇 @ iPlayground2020
 
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
 
談談 Android constraint layout
談談 Android constraint layout談談 Android constraint layout
談談 Android constraint layout
 
炎炎夏日學 Android 課程 - Part3: Android app 實作
炎炎夏日學 Android 課程 - Part3: Android app 實作炎炎夏日學 Android 課程 - Part3: Android app 實作
炎炎夏日學 Android 課程 - Part3: Android app 實作
 
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
 
炎炎夏日學 Android 課程 - Part2: Android 元件介紹
炎炎夏日學 Android 課程 - Part2: Android 元件介紹炎炎夏日學 Android 課程 - Part2: Android 元件介紹
炎炎夏日學 Android 課程 - Part2: Android 元件介紹
 
炎炎夏日學 Android 課程 - Part 0: 環境搭建
炎炎夏日學 Android 課程 - Part 0: 環境搭建炎炎夏日學 Android 課程 - Part 0: 環境搭建
炎炎夏日學 Android 課程 - Part 0: 環境搭建
 
About Mobile Accessibility
About Mobile AccessibilityAbout Mobile Accessibility
About Mobile Accessibility
 
Introductions of Messaging bot 做聊天機器人
Introductions of Messaging bot 做聊天機器人Introductions of Messaging bot 做聊天機器人
Introductions of Messaging bot 做聊天機器人
 
[MOPCON 2015] 談談行動裝置的 Accessibility
[MOPCON 2015] 談談行動裝置的 Accessibility[MOPCON 2015] 談談行動裝置的 Accessibility
[MOPCON 2015] 談談行動裝置的 Accessibility
 
A Quick look at ANCS (Apple Notification Center Service)
A Quick look at ANCS (Apple Notification Center Service)A Quick look at ANCS (Apple Notification Center Service)
A Quick look at ANCS (Apple Notification Center Service)
 
uPresenter, the story.
uPresenter, the story.uPresenter, the story.
uPresenter, the story.
 
Android Wear Development
Android Wear DevelopmentAndroid Wear Development
Android Wear Development
 
Android workshop - 02. Glass development 101
Android workshop - 02. Glass development 101Android workshop - 02. Glass development 101
Android workshop - 02. Glass development 101
 
Android workshop - 01. Getting started on android phone
Android workshop - 01. Getting started on android phoneAndroid workshop - 01. Getting started on android phone
Android workshop - 01. Getting started on android phone
 
Good!愛點兒 - 雲端電子點餐系統
Good!愛點兒 - 雲端電子點餐系統Good!愛點兒 - 雲端電子點餐系統
Good!愛點兒 - 雲端電子點餐系統
 

Dernier

Thane 💋 Call Girls 7738631006 💋 Call Girls in Thane Escort service book now. ...
Thane 💋 Call Girls 7738631006 💋 Call Girls in Thane Escort service book now. ...Thane 💋 Call Girls 7738631006 💋 Call Girls in Thane Escort service book now. ...
Thane 💋 Call Girls 7738631006 💋 Call Girls in Thane Escort service book now. ...Pooja Nehwal
 
Android Application Components with Implementation & Examples
Android Application Components with Implementation & ExamplesAndroid Application Components with Implementation & Examples
Android Application Components with Implementation & ExamplesChandrakantDivate1
 
Mobile Application Development-Components and Layouts
Mobile Application Development-Components and LayoutsMobile Application Development-Components and Layouts
Mobile Application Development-Components and LayoutsChandrakantDivate1
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRnishacall1
 
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Servicenishacall1
 
Leading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdfLeading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdfCWS Technology
 
Mobile Application Development-Android and It’s Tools
Mobile Application Development-Android and It’s ToolsMobile Application Development-Android and It’s Tools
Mobile Application Development-Android and It’s ToolsChandrakantDivate1
 

Dernier (8)

Thane 💋 Call Girls 7738631006 💋 Call Girls in Thane Escort service book now. ...
Thane 💋 Call Girls 7738631006 💋 Call Girls in Thane Escort service book now. ...Thane 💋 Call Girls 7738631006 💋 Call Girls in Thane Escort service book now. ...
Thane 💋 Call Girls 7738631006 💋 Call Girls in Thane Escort service book now. ...
 
Android Application Components with Implementation & Examples
Android Application Components with Implementation & ExamplesAndroid Application Components with Implementation & Examples
Android Application Components with Implementation & Examples
 
Mobile Application Development-Components and Layouts
Mobile Application Development-Components and LayoutsMobile Application Development-Components and Layouts
Mobile Application Development-Components and Layouts
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
 
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
 
Leading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdfLeading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdf
 
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
 
Mobile Application Development-Android and It’s Tools
Mobile Application Development-Android and It’s ToolsMobile Application Development-Android and It’s Tools
Mobile Application Development-Android and It’s Tools
 

Everything About Bluetooth (淺談藍牙 4.0) - Peripheral 篇