12/08/2018, 14:45

Tổng quan về Bluetooth Smart hay Bluetooth Low Energy(BLE) – Part 2 Sử dụng BLE trong lập trình Android.

I. Tổng quan Android 4.3 (API Level 18) cung cấp API cho các lập trình viên, có thể thao tác với phần cứng Bluetooth thông qu BLE, điều này cho phép chúng ta phát triển các ứng dụng dùng BLE để trao đổi thông tin với các thiết bị BLE xung quanh. Như chúng ta đã biết, trong tương tác BLE, thiết ...

I. Tổng quan

Android 4.3 (API Level 18) cung cấp API cho các lập trình viên, có thể thao tác với phần cứng Bluetooth thông qu BLE, điều này cho phép chúng ta phát triển các ứng dụng dùng BLE để trao đổi thông tin với các thiết bị BLE xung quanh. Như chúng ta đã biết, trong tương tác BLE, thiết bị có thể đóng vai trò là central hoặc peripheral, khi Android 4.3 ra đời, một thiết bị Android chỉ có thể đóng vai trò là central, tuy nhiên Google đã có môt thay đổi lớn khi ra mắt Android 5.0, vẫn giữ khả năng như cũ, tuy nhiên tại version này một thiết bị Android còn có thể đóng vai trò là một peripheral.

II. BLE Permisssions.

Để sử dụng BLE trong ứng dụng, chúng ta phải xin cấp phát quyền sử dụng, đơn giản bằng cách config lai file AndroidManifest.xml, chúng ta sẽ thêm đoạn code dưới Nếu chúng ta muốn chắc chắc rằng, ứng dụng này chỉ được chạy trên những thiết bị hỗ trợ BLE thì có thể thêm đọn code sau: Một trường hợp nữa đó là, nếu chúng ta vẫn muôn ứng dụng chạy được trên những thiết bị không hỗ trợ BLE thì có thể thay biết required = “false”, và khi ứng dụng khởi động, có thể dung đoạn code sau để kiểm thiết bị này có hỗ trợ BLE hay không.

III. BluetoothAdapter

Đối tượng đầu tiên chúng ta phải tiếp cận khi sử dụng BLE trên Android đó là BluetoothAdapter, đây chính là đối tượng mổ phỏng các chức năng căn bản của một thiết bị BLE như khởi tạo quá trình tìm kiếm các thiết bị BLE xung quanh, lấy ra danh sách các thiết bị đã được kết nối trước đó, tạo một remote control đến thiết BLE xung quanh thông MAC address… Đoạn code dưới đây, mô phỏng cách tạo một đối tượng BluetoothAdapter thông qua getSystemService() Sauk hi đã có trong tay đối tượng mBluetoothAdapter, việc tiếp theo sẽ phải làm đó là kiểm tra xem BLE đã được khởi chạy chưa. Khi BLE được khởi chạy, khi vào Setting -> Bluetooth sẽ có trạng thái như thế này:

IV. Scan thiết bị xung quanh

Trên Android 4.3 việc scan thiết bị được thực hiện thông qua hàm startLEScan() của đối tượng BLEAdapter, hàm này nhận vào một đối tượng BluetoothAdapter.LeScanCallback, đối tượng “hứng” kết quả của việc scan đó. Đoạn code phía dưới demo việc chúng ta start hoặc stop quá trình scan. Tuy nhiên, có một sử thay đổi api trên Android 5.0, chúng ta không sử dụng trực tiếp startLeScan() của BluetoothAdapter nữa, việc này được chuyển giao cho BluetoothLeScanner, đoạn code sau sẽ mô tả việc này. Một điều lưu ý đó là BluetoothLeScanner cho phép thiết lập ScanFilter, do đó chúng ta có thể scan những thiết bị thoả mãn điều kiện mà chúng ta mong muốn. BluetoothLeScanner sử dụng hàm startScan(), giống như BluetoothAdapter, tuy nhiện khác nhau ở số lượng param truyền vào. Cuối cùng ta nói đến callback của StartScan() trên cả hai trường hợp trên. Đối với Andoird 4.3 thì khi một thiết bị được phát hiện, thì hệ thống sẽ thông báo cho chúng ta thông qua ILeScanCallback.OnLeScan Đối với các thiết bị 5.0 trở lên, do api đã thay đổi nên callback sẽ được trả qua Android.Bluetooth.LE.ScanCallback Như vậy, bạn đã làm quen với việc sử dụng BLE đã scan thiết bị xung quanh, ở phần tiếp theo sẽ nói đến việc trao đổi thông tin qua GATT profile trên các thiết bị Android.

0