Thiết lập Bluetooth

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:

  1. 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ột Context. Hãy sử dụng ngữ cảnh này để lấy thực thể của dịch vụ hệ thống BluetoothManager. Việc gọi BluetoothManager#getAdapter sẽ cung cấp cho bạn đối tượng BluetoothAdapter. Nếu getAdapter() 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
    }
    
  2. 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ọi startActivityForResult(), truyền thao tác theo ý định ACTION_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_STATEEXTRA_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_OFFSTATE_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.

Lưu ý: Việc bật khả năng phát hiện sẽ tự động bật Bluetooth. Nếu định bật tính năng phát hiện thiết bị một cách nhất quán trước khi thực hiện hoạt động Bluetooth, thì bạn có thể bỏ qua bước 2 trong các bước trước đó.

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ị Bluetoothkế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ủ GATTchuyển dữ liệu BLE.