Android cung cấp tính năng hỗ trợ nền tảng tích hợp sẵn cho Bluetooth năng lượng thấp (BLE) ở vai trò trung tâm, đồng thời cung cấp các API mà ứng dụng có thể dùng để khám phá thiết bị, truy vấn dịch vụ và truyền thông tin.
Sau đây là các trường hợp sử dụng phổ biến:
- Chuyển một lượng nhỏ dữ liệu giữa các thiết bị ở gần.
- Tương tác với cảm biến khoảng cách để mang đến cho người dùng trải nghiệm tuỳ chỉnh dựa trên vị trí hiện tại của họ.
Trái ngược với Bluetooth cổ điển, BLE được thiết kế để tiêu thụ điện năng thấp hơn đáng kể. Điều này cho phép các ứng dụng giao tiếp với các thiết bị BLE có yêu cầu về nguồn điện nghiêm ngặt hơn, chẳng hạn như cảm biến khoảng cách, thiết bị theo dõi nhịp tim và thiết bị thể dục.
Thận trọng: Khi người dùng ghép nối thiết bị của họ với một thiết bị khác bằng BLE, tất cả ứng dụng trên thiết bị của người dùng đều có thể truy cập vào dữ liệu được giao tiếp giữa hai thiết bị.
Vì lý do này, nếu ứng dụng của bạn thu thập dữ liệu nhạy cảm, bạn nên triển khai tính năng bảo mật ở lớp ứng dụng để bảo vệ quyền riêng tư của dữ liệu đó.
Thông tin cơ bản
Để các thiết bị hỗ trợ BLE có thể truyền dữ liệu với nhau, trước tiên, các thiết bị đó phải tạo một kênh giao tiếp. Để sử dụng các API Bluetooth LE, bạn cần khai báo một số quyền trong tệp kê khai. Sau khi có quyền sử dụng Bluetooth, ứng dụng của bạn cần truy cập vào BluetoothAdapter
và xác định xem thiết bị có Bluetooth hay không. Nếu có Bluetooth, thiết bị sẽ quét tìm các thiết bị BLE ở gần.
Sau khi tìm thấy một thiết bị, bạn có thể khám phá các chức năng của thiết bị BLE bằng cách kết nối với máy chủ GATT trên thiết bị BLE.
Sau khi kết nối, bạn có thể chuyển dữ liệu với thiết bị đã kết nối dựa trên các dịch vụ và đặc điểm có sẵn.
Các thuật ngữ và khái niệm chính
Sau đây là phần tóm tắt các thuật ngữ và khái niệm chính về BLE:
- Hồ sơ thuộc tính chung (GATT)
- Hồ sơ GATT là một thông số kỹ thuật chung để gửi và nhận các đoạn dữ liệu ngắn được gọi là "thuộc tính" qua đường liên kết BLE. Tất cả hồ sơ ứng dụng BLE hiện tại đều dựa trên GATT. Xem lại mẫu BluetoothLeGatt của Android trên GitHub để tìm hiểu thêm.
- Hồ sơ
- Bluetooth SIG xác định nhiều hồ sơ cho thiết bị BLE. Hồ sơ là thông số kỹ thuật về cách hoạt động của một thiết bị trong một ứng dụng cụ thể. Xin lưu ý rằng một thiết bị có thể triển khai nhiều hồ sơ. Ví dụ: một thiết bị có thể chứa thiết bị đo nhịp tim và trình phát hiện mức pin.
- Giao thức thuộc tính (ATT)
- GATT được xây dựng dựa trên Giao thức thuộc tính (ATT). Giao thức này còn được gọi là GATT/ATT. ATT được tối ưu hoá để chạy trên các thiết bị BLE. Để đạt được mục tiêu này, nó sử dụng càng ít byte càng tốt. Mỗi thuộc tính được xác định duy nhất bằng một Giá trị nhận dạng duy nhất trên toàn cầu (UUID). Đây là một định dạng 128 bit chuẩn hoá cho mã nhận dạng chuỗi dùng để xác định duy nhất thông tin. Thuộc tính do ATT truyền tải được định dạng là đặc điểm và dịch vụ.
- Đặc điểm
- Một đặc điểm chứa một giá trị duy nhất và 0-n chỉ số mô tả giá trị của đặc điểm. Bạn có thể coi một đặc điểm là một loại, tương tự như một lớp.
- Thông số mô tả
- Mô tả là các thuộc tính được xác định dùng để mô tả một giá trị đặc trưng. Ví dụ: một chỉ số mô tả có thể chỉ định nội dung mô tả mà con người có thể đọc được, phạm vi chấp nhận được cho giá trị của một đặc điểm hoặc đơn vị đo lường dành riêng cho giá trị của một đặc điểm.
- Dịch vụ
- Dịch vụ là một tập hợp các đặc điểm. Ví dụ: bạn có thể có một dịch vụ có tên là "Máy đo nhịp tim" bao gồm các đặc điểm như "đo nhịp tim". Bạn có thể xem danh sách các hồ sơ và dịch vụ hiện có dựa trên GATT trên bluetooth.org.
Vai trò và trách nhiệm
Khi một thiết bị tương tác với một thiết bị BLE, các vai trò và trách nhiệm được phân chia theo hai cách khác nhau:
Trung tâm so với ngoại vi. Điều này áp dụng cho chính kết nối BLE – thiết bị ở vai trò trung tâm quét tìm, tìm quảng cáo, còn thiết bị ở vai trò thiết bị ngoại vi quảng cáo. 2 thiết bị chỉ hỗ trợ vai trò thiết bị ngoại vi không thể giao tiếp với nhau và 2 thiết bị chỉ hỗ trợ vai trò trung tâm cũng không thể.
Máy chủ GATT so với máy khách GATT. Tính năng này xác định cách 2 thiết bị giao tiếp với nhau sau khi thiết lập kết nối. Thiết bị ở vai trò ứng dụng gửi yêu cầu về dữ liệu và thiết bị ở vai trò máy chủ thực hiện các yêu cầu đó.
Để hiểu sự khác biệt giữa các phân đoạn vai trò trung tâm-phần ngoại vi và máy chủ-ứng dụng, hãy xem xét ví dụ sau: bạn có một điện thoại Android và một thiết bị theo dõi hoạt động hỗ trợ BLE báo cáo dữ liệu cảm biến trở lại điện thoại.
Điện thoại (thiết bị trung tâm) chủ động quét tìm các thiết bị BLE. Trình theo dõi hoạt động (thiết bị ngoại vi) sẽ quảng cáo và chờ nhận được yêu cầu kết nối.
Sau khi điện thoại và thiết bị theo dõi hoạt động thiết lập kết nối, chúng sẽ bắt đầu chuyển siêu dữ liệu GATT cho nhau. Trong trường hợp này, ứng dụng chạy trên điện thoại sẽ gửi yêu cầu dữ liệu, vì vậy, ứng dụng đóng vai trò là ứng dụng GATT. Vì vậy, trình theo dõi hoạt động sẽ thực hiện các yêu cầu đó và đóng vai trò là máy chủ GATT.
Một thiết kế thay thế của ứng dụng có thể liên quan đến việc điện thoại đóng vai trò là máy chủ GATT. Hãy xem BluetoothGattServer
để biết thêm thông tin.