Tổng quan về Bluetooth

Nền tảng Android hỗ trợ ngăn xếp mạng Bluetooth, cho phép thiết bị trao đổi dữ liệu không dây với các thiết bị Bluetooth khác. Khung ứng dụng cung cấp quyền truy cập vào chức năng Bluetooth thông qua các API Bluetooth. Các API này cho phép ứng dụng kết nối với các thiết bị Bluetooth khác, tạo điều kiện cho các tính năng không dây điểm nối và đa điểm.

Khi sử dụng API Bluetooth, ứng dụng có thể thực hiện những việc sau:

  • Quét tìm các thiết bị Bluetooth khác.
  • Truy vấn bộ điều hợp Bluetooth cục bộ cho các thiết bị Bluetooth đã ghép nối.
  • Thiết lập các kênh RFCOMM.
  • Kết nối với các thiết bị khác thông qua tính năng khám phá dịch vụ.
  • Chuyển dữ liệu sang và từ thiết bị khác.
  • Quản lý nhiều kết nối.

Chủ đề này tập trung vào Bluetooth cũ. Bluetooth cũ là lựa chọn phù hợp cho các hoạt động tốn nhiều pin hơn, bao gồm cả việc phát trực tuyến và giao tiếp giữa các thiết bị. Đối với các thiết bị Bluetooth có yêu cầu sử dụng pin thấp, hãy cân nhắc sử dụng kết nối Bluetooth năng lượng thấp.

Tài liệu này mô tả nhiều hồ sơ Bluetooth và giải thích cách sử dụng các API Bluetooth để hoàn thành 4 nhiệm vụ chính cần thiết để giao tiếp bằng Bluetooth:

  • Đang thiết lập Bluetooth.
  • Tìm các thiết bị đã được ghép nối hoặc khả dụng trong khu vực địa phương.
  • Đang kết nối thiết bị.
  • Chuyển dữ liệu giữa các thiết bị.

Để xem bản minh hoạ cách sử dụng các API Bluetooth, hãy xem ứng dụng mẫu Trò chuyện qua Bluetooth.

Thông tin cơ bản

Để các thiết bị hỗ trợ Bluetooth truyền dữ liệu giữa nhau, trước tiên các thiết bị đó phải tạo thành một kênh liên lạc bằng quy trình ghép nối. Một thiết bị (tức là một thiết bị có thể phát hiện) sẽ sẵn sàng xử lý các yêu cầu kết nối đến. Một thiết bị khác tìm thiết bị có thể tìm thấy bằng quy trình khám phá dịch vụ. Sau khi thiết bị tìm thấy chấp nhận yêu cầu ghép nối, hai thiết bị sẽ hoàn tất quá trình liên kết, trong đó chúng trao đổi khoá bảo mật. Thiết bị lưu các khoá này vào bộ nhớ đệm để sử dụng sau này. Sau khi quá trình ghép nối và liên kết hoàn tất, hai thiết bị sẽ trao đổi thông tin. Khi phiên hoàn tất, thiết bị đưa ra yêu cầu ghép nối sẽ huỷ kênh đã liên kết với thiết bị có thể tìm thấy. Tuy nhiên, 2 thiết bị vẫn liên kết với nhau nên chúng có thể tự động kết nối lại trong phiên sau này, miễn là chúng vẫn nằm trong phạm vi của nhau và không thiết bị nào loại bỏ liên kết.

Để sử dụng các API Bluetooth, bạn phải 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 BluetoothAdapterxác định xem có Bluetooth trên thiết bị hay không. Nếu có Bluetooth, bạn cần thực hiện 3 bước để kết nối:

Một số thiết bị dùng hồ sơ Bluetooth cụ thể để khai báo dữ liệu mà ứng dụng cung cấp.

Các lớp và giao diện chính

Tất cả API Bluetooth đều có trong gói android.bluetooth. Sau đây là các lớp và giao diện bạn cần có để tạo kết nối Bluetooth:

BluetoothAdapter
Đại diện cho bộ chuyển đổi Bluetooth cục bộ (Đài phát thanh Bluetooth). BluetoothAdapter là điểm truy cập cho tất cả hoạt động tương tác qua Bluetooth. Bằng cách này, bạn có thể khám phá các thiết bị Bluetooth khác, truy vấn danh sách thiết bị đã liên kết (đã ghép nối), tạo thực thể cho BluetoothDevice bằng địa chỉ MAC đã biết và tạo một BluetoothServerSocket để nghe thông tin liên lạc từ các thiết bị khác.
BluetoothDevice
Đại diện cho một thiết bị Bluetooth từ xa. Hãy sử dụng phương thức này để yêu cầu kết nối với một thiết bị từ xa thông qua BluetoothSocket hoặc truy vấn thông tin về thiết bị, chẳng hạn như tên, địa chỉ, lớp và trạng thái liên kết.
BluetoothSocket
Đại diện cho giao diện của cổng Bluetooth (tương tự như Socket của TCP). Đây là điểm kết nối cho phép ứng dụng trao đổi dữ liệu với một thiết bị Bluetooth khác bằng InputStreamOutputStream.
BluetoothServerSocket
Đại diện cho một ổ cắm máy chủ mở để lắng nghe các yêu cầu đến (tương tự như TCP ServerSocket). Để kết nối hai thiết bị, một thiết bị phải mở một cổng máy chủ bằng lớp này. Khi một thiết bị Bluetooth từ xa gửi yêu cầu kết nối với thiết bị này, thiết bị sẽ chấp nhận kết nối rồi trả về một BluetoothSocket đã kết nối.
BluetoothClass
Mô tả các đặc điểm và chức năng chung của thiết bị Bluetooth. Đây là tập hợp các thuộc tính chỉ có thể đọc xác định các lớp và dịch vụ của thiết bị. Mặc dù thông tin này cung cấp gợi ý hữu ích về loại thiết bị, nhưng các thuộc tính của lớp này không nhất thiết phải mô tả tất cả các cấu hình và dịch vụ Bluetooth mà thiết bị hỗ trợ.
BluetoothProfile
Giao diện đại diện cho hồ sơ Bluetooth. Cấu hình Bluetooth là thông số kỹ thuật của giao diện không dây để giao tiếp dựa trên Bluetooth giữa các thiết bị. Một ví dụ là hồ sơ rảnh tay. Để thảo luận thêm về hồ sơ, hãy xem bài viết Hồ sơ Bluetooth.
BluetoothHeadset
Cung cấp tính năng hỗ trợ tai nghe Bluetooth dùng được với điện thoại di động. Cấu hình này bao gồm cả cấu hình Tai nghe Bluetooth và cấu hình Rảnh tay (phiên bản 1.5).
BluetoothA2dp
Xác định cách phát âm thanh chất lượng cao từ thiết bị này sang thiết bị khác qua kết nối Bluetooth bằng Cấu hình phân phối âm thanh nâng cao (A2DP).
BluetoothHealth
Đại diện cho một proxy Hồ sơ thiết bị sức khoẻ kiểm soát dịch vụ Bluetooth.
BluetoothHealthCallback
Một lớp trừu tượng mà bạn dùng để triển khai lệnh gọi lại BluetoothHealth. Bạn phải mở rộng lớp này và triển khai các phương thức gọi lại để nhận thông tin cập nhật về những thay đổi đối với trạng thái đăng ký của ứng dụng và trạng thái kênh Bluetooth.
BluetoothHealthAppConfiguration
Đại diện cho cấu hình ứng dụng mà ứng dụng Bluetooth Health bên thứ ba đăng ký để giao tiếp với thiết bị theo dõi Bluetooth từ xa.
BluetoothProfile.ServiceListener
Giao diện thông báo cho các ứng dụng giao tiếp liên quy trình (IPC) BluetoothProfile khi các ứng dụng này đã được kết nối hoặc ngắt kết nối khỏi dịch vụ nội bộ chạy một hồ sơ cụ thể.