Trước khi ứng dụng của bạn có thể giao tiếp qua Bluetooth hoặc Bluetooth năng lượng thấp, bạn cần xác minh rằng Bluetooth được hỗ trợ trên thiết bị và nếu có, hãy đảm bảo rằng đã bật Bluetooth. Xin lưu ý rằng bước kiểm tra này chỉ cần thiết nếu thuộc tính android:required
trong mục nhập tệp kê khai <uses-feature.../>
được đặt thành false
.
Nếu Bluetooth không được hỗ trợ, bạn nên tắt mọi tính năng Bluetooth một cách linh hoạt. Nếu Bluetooth được hỗ trợ nhưng bị tắt, thì bạn có thể yêu cầu người dùng bật Bluetooth mà không cần rời khỏi ứng dụng.
Bước đầu tiên là thêm quyền truy cập Bluetooth vào tệp kê khai để sử dụng các API sau.
Sau khi có các quyền, bạn có thể thiết lập Bluetooth theo 2 bước bằng cách sử dụng BluetoothAdapter
:
Tải
BluetoothAdapter
.BluetoothAdapter
là yêu cầu bắt buộc đối với mọi hoạt động Bluetooth.BluetoothAdapter
đại diện cho bộ chuyển đổi Bluetooth của riêng thiết bị (Đài Bluetooth). Để cóBluetoothAdapter
, trước tiên, bạn cần có mộtContext
. Hãy sử dụng ngữ cảnh này để lấy thực thể của dịch vụ hệ thốngBluetoothManager
. Việc gọiBluetoothManager#getAdapter
sẽ cung cấp cho bạn đối tượngBluetoothAdapter
. NếugetAdapter()
trả về giá trị rỗng, tức là thiết bị không hỗ trợ Bluetooth.Ví dụ:
Kotlin
val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java) val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter() if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Java
BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Bật Bluetooth.
Tiếp theo, bạn cần đảm bảo rằng bạn đã bật Bluetooth. Gọi
isEnabled()
để kiểm tra xem Bluetooth hiện đã bật hay chưa. Nếu phương thức này trả về giá trị false (sai) thì Bluetooth đã tắt. Để yêu cầu bật Bluetooth, hãy gọistartActivityForResult()
, truyền thao tác theo ý địnhACTION_REQUEST_ENABLE
. Lệnh gọi này đưa ra yêu cầu bật Bluetooth thông qua phần cài đặt hệ thống (mà không cần dừng ứng dụng của bạn).Ví dụ:
Kotlin
if (bluetoothAdapter?.isEnabled == false) { val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT) }
Java
if (!bluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); }
Một hộp thoại sẽ xuất hiện, yêu cầu người dùng cấp quyền bật Bluetooth, như minh hoạ trong hình 1. Nếu người dùng cấp quyền, hệ thống sẽ bắt đầu bật Bluetooth và tiêu điểm sẽ quay lại ứng dụng của bạn sau khi quá trình này hoàn tất (hoặc không thành công).
Hình 1. Hộp thoại bật Bluetooth.
Hằng số REQUEST_ENABLE_BT
được truyền đến startActivityForResult()
là một số nguyên được xác định cục bộ và phải lớn hơn hoặc bằng 0. Hệ thống sẽ truyền lại hằng số này cho bạn trong quá trình triển khai onActivityResult()
dưới dạng tham số requestCode
.
Nếu bật Bluetooth thành công, hoạt động của bạn sẽ nhận được mã kết quả RESULT_OK
trong lệnh gọi lại onActivityResult()
. Nếu Bluetooth không được bật do xảy ra lỗi (hoặc do người dùng phản hồi "Từ chối") thì mã kết quả sẽ là RESULT_CANCELED
.
Nếu muốn, ứng dụng của bạn cũng có thể theo dõi ý định truyền tin ACTION_STATE_CHANGED
. Ý định này sẽ được hệ thống truyền đi bất cứ khi nào trạng thái Bluetooth thay đổi. Thông báo truyền tin này chứa các trường bổ sung EXTRA_STATE
và EXTRA_PREVIOUS_STATE
, lần lượt chứa các trạng thái Bluetooth mới và cũ. Các giá trị có thể có cho những trường bổ sung này là STATE_TURNING_ON
, STATE_ON
, STATE_TURNING_OFF
và STATE_OFF
.
Việc theo dõi thông báo truyền tin này có thể hữu ích nếu ứng dụng của bạn cần phát hiện các thay đổi về thời gian chạy được thực hiện đối với trạng thái Bluetooth.
Sau khi bật Bluetooth trên thiết bị, bạn có thể sử dụng cả Bluetooth cũ và Bluetooth năng lượng thấp.
Đối với Bluetooth phiên bản cũ, bạn có thể tìm thiết bị Bluetooth và kết nối với thiết bị Bluetooth.
Đối với Bluetooth năng lượng thấp, bạn có thể tìm thiết bị BLE, kết nối với máy chủ GATT và chuyển dữ liệu BLE.