Note: Android Bluetooth HCI Req.

Android 從 4.3 開始導入 Bluetooth Low Energy, 但是因為總總原因API 直到5.0之後才算相對穩定, 所以想要在Android 導入BLE相關應用最好是 Android 5.0 and later 當然現在2018年應該不是啥大問題了, 但是個人覺的真的要有成果要等Android Oreo (8.0)普及後才會比較廣泛的使用到新的Bluetooth 5 的新增的功能.
之前有遇過使用的Bluethooth module 對BLE支援有問題的情況, 這時要依據module 支援的BT版本與使用的Android 版本去驗證, Android 有提供HCI Requirements 文件可以使用

分別是 Android 5.0 HCI Requirements , Android 6.0 HCI Requirements , 然後現在線上版本的Oreo



Note: GATT service with Bluetooth Low Energy

傳統的Bluetooth Device 透過 SDP service 使用Profile UUID 去讓兩者相連, 但是BLE則擴充了這個方法, 透過提供 GATT (Generic Attributes) Profile 去取代 SDP的功能,使用GATT Service 內的 Service/Characteristics 功能可以更方便跟分類各種服務跟屬性值, 並且透過GATT 可以自我宣告特定應用的Service與Characteristics 去創建自己的特殊應用 常見有iBeacon/Eddystone Beacon 或是 像是 TI SensorTags 可以參考這個 Andorid Source 去使用Ti 自定義的Barometers service

官方說法 from
For two Bluetooth devices to be compatible, they must support the same profiles. And while profiles generally describe the same use case behaviors, they are different for Bluetooth BR/EDR and Bluetooth Low Energy (LE) implementations. Compatibility between Bluetooth BR/EDR and Bluetooth LE implementations requires a dual-mode controller on at least one. For BR/EDR, a wide range of adopted Bluetooth profiles describe many different, commonly used types of applications or use cases for devices. For Bluetooth LE, developers can use a comprehensive set of adopted profiles, or they can use Generic Attribute Profile (GATT) to create new profiles. This flexibility helps support innovative new applications that maintain interoperability with other Bluetooth devices.