Chuyển đổi âm thanh

Khi người dùng sử dụng nhiều thiết bị nguồn âm thanh để thực hiện các công việc hằng ngày, ngày càng có nhiều nhu cầu về một giải pháp đơn giản hơn để quản lý việc sử dụng tai nghe trên các thiết bị. Tính năng chuyển đổi âm thanh giúp chuyển đổi liền mạch các kết nối tai nghe giữa các thiết bị dựa trên hoạt động của người dùng (ví dụ: bắt đầu xem phim) và các sự kiện ưu tiên (ví dụ: cuộc gọi đến).

Nguyên tắc về trải nghiệm người dùng

  1. Quá trình chuyển đổi kết nối phải diễn ra nhanh chóng và dựa trên thao tác của người dùng.
  2. Quá trình chuyển đổi kết nối phải minh bạch với người dùng, cho phép người dùng kiểm soát/huỷ bỏ nếu việc chuyển đổi là không mong muốn.
  3. Việc chuyển đổi phải tôn trọng quyền riêng tư của người dùng.

Vai trò

Trình tìm chuyển đổi âm thanh: Trình tìm kiếm là thiết bị nguồn âm thanh (ví dụ: điện thoại hoặc máy tính bảng), đang tìm kiếm tai nghe ở gần để kết nối khi có thể.

Nhà cung cấp bộ chuyển đổi âm thanh: Nhà cung cấp thường là tai nghe quảng cáo sự hiện diện và trạng thái kết nối để Trình tìm kiếm đưa ra quyết định chuyển đổi.

Tổng quan về các yêu cầu

Để sử dụng được tính năng chuyển đổi thông minh, Nhà cung cấp phải tuân thủ các yêu cầu sau:

Tên Mô tả Yêu cầu Bắt buộc?
Quét trang Cách chấp nhận yêu cầu kết nối mới từ Người tìm kiếm khác khi đã có kết nối.
Đối với Nhà cung cấp điểm một lần:
  • Thiết bị nguồn ban đầu sẽ tự động tạm dừng phát âm thanh khi Nhà cung cấp ngắt kết nối.
Đối với Nhà cung cấp đa điểm:
  • Ứng dụng sẽ chấp nhận yêu cầu kết nối nếu vẫn còn kết nối.
  • Nếu băng thông kết nối đã đầy, hãy ngắt kết nối kết nối ít được sử dụng gần đây nhất (ví dụ: không có sự kiện âm thanh trong thời gian dài) rồi chấp nhận yêu cầu mới đến.
Để cải thiện hiệu suất, bạn cần có chế độ quét trang có độ trễ thấp (khoảng thời gian quét không được lớn hơn 640 mili giây).
Để cân bằng giữa thời lượng pin và hiệu suất chuyển đổi, Nhà cung cấp có thể thiết lập chế độ quét trang mặc định cho hầu hết trường hợp (chế độ tiết kiệm pin, khoảng thời gian quét không được lớn hơn 1280 mili giây). Tuy nhiên, bạn nên sử dụng chế độ có độ trễ thấp trong các trường hợp sau:
  • 30 giây đầu tiên bật nguồn
  • 30 giây đầu tiên không có kết nối hoặc phân trang
  • 30 giây đầu tiên khi thiết bị ở trạng thái rảnh
Bắt buộc
Nhật ký kết nối Để chuyển về kết nối trước đó và tiếp tục phát nếu có.
Các giao tiếp thông qua API Luồng tin nhắn sẽ kích hoạt thao tác chuyển về trạng thái cũ.
Bạn phải đưa sự kiện âm thanh tạm dừng vào bản ghi để tiếp tục phát (nếu có).
Duy trì nhật ký kết nối và triển khai các API dòng tin nhắn. Bắt buộc
Trạng thái kết nối Để Người tìm kiếm đưa ra đánh giá chuyển đổi kết nối.Trạng thái kết nối bao gồm:
  • Trạng thái kết nối
  • Loại âm thanh của kết nối đang hoạt động
  • Thông tin tài khoản của kết nối đang hoạt động
  • Thiết bị đã kết nối
Đưa trạng thái kết nối vào tính năng Quảng cáo BLE và Luồng tin nhắn. Bắt buộc
Thay đổi các chức năng trong thời gian chạy Bạn có thể bật tính năng chuyển đổi âm thanh bằng cách nâng cấp chương trình cơ sở của Nhà cung cấp. Vì vậy, các chức năng cần được đồng bộ hóa giữa Trình tìm kiếm và Nhà cung cấp trong thời gian chạy. Triển khai API luồng thông báo để truy cập vào các tính năng trong thời gian chạy. Bắt buộc
Các quy tắc chuyển đổi có thể định cấu hình Cho phép Người tìm kiếm định cấu hình mức độ ưu tiên giữa yêu cầu phát trực tuyến âm thanh đang hoạt động hiện có và các yêu cầu phát trực tuyến âm thanh mới thông qua các chế độ cài đặt lựa chọn ưu tiên của người dùng.
Ví dụ: Trình chuyển đổi âm thanh có thể cung cấp chế độ cài đặt giao diện người dùng để cho phép người dùng bật/tắt tính năng tự động chuyển đổi giữa tính năng gọi và phát nội dung nghe nhìn.
Trình tìm kiếm tính năng chuyển đổi âm thanh sẽ đặt và nhận quy tắc chuyển đổi qua Dòng tin nhắn.
Chỉ dành cho Nhà cung cấp đa điểm.
Triển khai API luồng thông báo để bạn có thể định cấu hình các quy tắc chuyển đổi giữa các thiết bị được kết nối.
Không bắt buộc
Chuyển đổi thiết bị đang hoạt động Cho phép Trình tìm kiếm chuyển đổi âm thanh mô phỏng Quá trình chuyển đổi âm thanh giữa các thiết bị đã kết nối.
Ở phía Trình tìm kiếm, có thể có một giao diện người dùng để người dùng dễ dàng chuyển đổi giữa các thiết bị đã kết nối.
Chỉ dành cho Nhà cung cấp đa điểm.
Triển khai API luồng thông báo cho Trình tìm chuyển đổi âm thanh để xác định nguồn âm thanh đang hoạt động giữa các thiết bị được kết nối.
Bắt buộc
Thông báo chuyển đổi đa điểm Cho phép Trình tìm kiếm chuyển đổi âm thanh hiển thị thông báo chuyển đổi. Chỉ dành cho Nhà cung cấp đa điểm.
Triển khai API luồng thông báo để thông báo cho Trình tìm kiếm chuyển đổi âm thanh được kết nối khi có quá trình chuyển đổi đa điểm diễn ra.
Bắt buộc

Tải trọng quảng cáo

Nhà cung cấp sẽ đưa trạng thái kết nối hiện tại vào quảng cáo, được xây dựng dựa trên dữ liệu Tài khoản ghép nối nhanh được mô tả trong Quảng cáo: Khi không phát hiện được.

Lưu ý rằng phiên bản của bảng 4.2 là 0x1.

Trường trạng thái kết nối

Bạch tuộc Loại dữ liệu Mô tả Giá trị Bắt buộc?
0 uint8 Độ dài và loại trường
0bLLLLTTTT
  • L = độ dài của trạng thái kết nối tính bằng byte
  • T = loại
0bLLLL0101
  • thời lượng: khác nhau
  • loại = 0b0101
Bắt buộc
1 uint8 Trạng thái kết nối
0bHAFRSSSS
  • H = khi phát hiện đầu
  • A = khả năng kết nối
  • F = chế độ lấy nét
  • R = tự động kết nối lại
  • S = trạng thái kết nối
0bHAFRSSSS
Bắt buộc
2 uint8 Dữ liệu tuỳ chỉnh
Hiện tại, tệp này chỉ chứa loại nội dung dùng để mô tả cách sử dụng tính năng phát trực tuyến âm thanh hiện tại. Trình tìm kiếm sẽ gửi yêu cầu đó đến Nhà cung cấp.
Giá trị được gửi từ Người tìm kiếm luồng đang hoạt động đến Nhà cung cấp thông qua luồng tin nhắn. 0 nếu luồng đang hoạt động không phải từ Seeker. Bắt buộc
3 – var Thiết bị đã kết nối bitmap
Một bitmap cho biết những thiết bị nào hiện đang kết nối với Nhà cung cấp. Tất cả các thiết bị liên kết được sắp xếp theo thứ tự, một bit cho một thiết bị liên kết. Thời lượng sẽ phụ thuộc vào số lượng thiết bị liên kết của Nhà cung cấp.
Bit được ánh xạ được đặt thành 1 nếu thiết bị đang được kết nối với Provider, nếu không được kết nối sẽ là 0.
Xem nội dung Bitmap của thiết bị đã kết nối để biết thông tin chi tiết
Không bắt buộc

Bảng 4.1: Dữ liệu thô của trường trạng thái kết nối

Cờ kết nối
  • 0bH = khi phát hiện đầu

    • 1, đang phát trực tiếp
    • 0, nếu không, không ở trên đầu hoặc không có cảm biến OHD
  • 0bA = khả năng kết nối

    • 1, có kết nối
    • 0, nếu không
  • 0bF = chế độ lấy nét

    • 1, hiện đang ở chế độ tập trung, không cho phép chuyển đổi kết nối đối với việc sử dụng nội dung nghe nhìn, tức là không chuyển đổi A2DP sang A2DP
    • 0, nếu không
  • 0bR = tự động kết nối lại

    • 1, nếu kết nối hiện tại được Nhà cung cấp tự động kết nối lại, nghĩa là kết nối này không được người dùng kết nối (đối với đa điểm, nếu một trong các kết nối hiện có được tự động kết nối lại, thì kết nối đó phải được đặt thành 1)
    • 0, nếu không
Trạng thái kết nối
  • 0x0: không có kết nối
  • 0x1: phân trang
  • 0x2: đã kết nối nhưng không chuyển dữ liệu
  • 0x3: Truyền dữ liệu không phải âm thanh (chỉ khi có thể chuyển đổi, nếu không, sử dụng 0xF)
  • 0x4: Truyền trực tuyến A2DP, không áp dụng AVRCP
  • 0x5: Phát A2DP và phát AVRCP
  • 0x6: Phát trực tuyến HFP (cuộc gọi điện thoại/voip), bao gồm nhạc chuông trong và ngoài băng tần
  • 0x7: Âm thanh năng lượng thấp – phát trực tuyến nội dung nghe nhìn không cần chế độ kiểm soát
  • 0x8: Âm thanh năng lượng thấp – phát nội dung nghe nhìn trực tuyến có chức năng điều khiển
  • 0x9: Âm thanh năng lượng thấp – phát trực tuyến cuộc gọi
  • 0xA: Âm thanh năng lượng thấp – phát sóng
  • 0xF: Tạm thời tắt tính năng chuyển đổi kết nối (ví dụ: cập nhật chương trình cơ sở)
Bitmap của thiết bị được kết nối

Để tránh việc chuyển đổi kết nối không mong muốn, người tìm kiếm có thể cần biết(các) thiết bị nào đang được kết nối với tai nghe. Ví dụ: khi tai nghe được kết nối với điện thoại, người dùng không muốn bị gián đoạn do chuyển đổi kết nối khi một thành viên gia đình của họ khởi động YouTube trên máy tính bảng.

Lưu ý rằng bitmap này là ẩn danh, Trình tìm kiếm không thể biết thiết bị nào khác được liên kết với Nhà cung cấp. Ví dụ: lấy 5 thiết bị liên kết:

  • 0: máy tính xách tay (0bx0000000)
  • 1: phoneA (0b0x000000)
  • 2: phoneB (0b00x00000)
  • 3: máy tính bảng (0b000x0000)
  • 4: TV (0b0000x000)

Nếu các thiết bị đã kết nối hiện tại là máy tính xách tay và máy tính bảng, thì giá trị của bitmap sẽ là 0b10010000. Việc thay đổi thứ tự được chấp nhận nếu không thể tránh khỏi, ví dụ: khi người dùng đặt lại tai nghe về trạng thái ban đầu hoặc khi số lượng thiết bị liên kết đạt đến giới hạn trên.

Quảng cáo có thể phân giải ngẫu nhiên

Để tránh theo dõi và tôn trọng quyền riêng tư của người dùng, Nhà cung cấp nên xoay vòng và mã hoá trường bằng khoá tài khoản bằng cách sử dụng AES-CTR:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

trong đó

  1. Khoá này được lấy từ khoá tài khoản đang sử dụng, được xác định trong phần tiếp theo.

    • Khoá được tạo bởi hàm HKDF, IETF RFC 5869, bằng cách sử dụng hàm băm SHA-256.

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • Nhà cung cấp sẽ sử dụng khoá tài khoản gốc ở đây, tức là byte đầu tiên của khoá là 0x04, không có trong mẫu sử dụng.

  2. IV (vectơ đầu tiên) là dữ liệu ngẫu nhiên 2 byte của Dữ liệu khoá tài khoản có khoảng đệm bằng 0, tức là IV là concat(muối, ZEROs 14 byte).

  3. Dữ liệu thô về trạng thái kết nối được xác định trong bảng 4.1. Nếu trạng thái kết nối thay đổi, thì dữ liệu ngẫu nhiên và RPA phải được tạo lại tại cùng một khung thời gian quảng cáo.

Việc này giúp trường trạng thái kết nối đã mã hoá xoay cùng lúc với Dữ liệu khoá tài khoản xoay vòng.

Quảng cáo BLE sẽ có cấu trúc như sau:

Bạch tuộc Loại dữ liệu Mô tả Giá trị Bắt buộc?
0 uint8 Phiên bản và cờ 0x10 Bắt buộc
1 – t Dữ liệu về khoá tài khoản khác nhau Bắt buộc
t+1 - s Dữ liệu pin khác nhau Không bắt buộc
s+1var Dữ liệu có thể phân giải ngẫu nhiên khác nhau Bắt buộc nếu Danh sách khoá tài khoản không trống,
nếu không sẽ bị loại trừ.

Bảng 4.2: Quảng cáo BLE với Dữ liệu có thể phân giải ngẫu nhiên

Dữ liệu có thể phân giải ngẫu nhiên chứa:

Bạch tuộc Loại dữ liệu Mô tả Giá trị Bắt buộc?
0 uint8 Độ dài và loại trường
0bLLLLTTTT
  • L = độ dài của dữ liệu được mã hoá
  • T = loại
0bLLLL0110
  • thời lượng: khác nhau
  • loại = 0b0110
Bắt buộc
1 – var Dữ liệu đã mã hoá khác nhau Bắt buộc

Bảng 4.2.1: Dữ liệu có thể phân giải ngẫu nhiên

Ví dụ: nếu Dữ liệu có thể phân giải ngẫu nhiên chứa trường trạng thái kết nối đã mã hoá, thì kết quả được giải mã sẽ là trường trạng thái kết nối.

Để tránh can thiệp, bạn nên điều chỉnh Dữ liệu khoá tài khoản ở trên một chút khi Dữ liệu có thể phân giải ngẫu nhiên được đưa vào quảng cáo. Thông thường, khi xây dựng bộ lọc khoá tài khoản, giá trị V sẽ được tạo bằng cách kết hợp bộ lọc khoá tài khoản với một dữ liệu ngẫu nhiên. Thay vào đó, khi Dữ liệu có thể phân giải ngẫu nhiên cũng đang được quảng cáo, giá trị V sẽ được xây dựng như sau:

 V = concat(account_key, salt, random_resolvable_data)

Nếu đang quảng cáo cả Dữ liệu pin và Dữ liệu có thể phân giải ngẫu nhiên, thì V phải được cấu trúc như sau:

 V = concat(account_key, salt, battery_data, random_resolvable_data)

Khoá tài khoản đang dùng

Việc chuyển đổi kết nối sẽ dựa trên tài khoản, vì vậy, Nhà cung cấp phải đưa thông tin tài khoản của kết nối hiện tại vào quảng cáo BLE. Nếu thiết bị được kết nối hiện tại là Trình tìm chuyển đổi âm thanh, thì Nhà cung cấp phải lấy được khoá tài khoản liên kết với Trình tìm kiếm này và sử dụng khoá tài khoản này để mã hoá trường trạng thái kết nối. Nếu nguồn âm thanh đã kết nối không phải là Trình tìm chuyển đổi âm thanh, thì Nhà cung cấp phải sử dụng khoá tài khoản được sử dụng gần đây nhất.

Trước khi tính toán bộ lọc khoá tài khoản, Nhà cung cấp phải sửa đổi byte đầu tiên của khoá tài khoản để đưa một trong các kiểu sử dụng sau đây vào:

  1. 0b00000100
    Khoá tài khoản này hiện không được sử dụng.
    Đây là khoá mặc định (xem phần Khoá tài khoản).
  2. 0b00000101
    Khoá tài khoản này là khoá tài khoản được sử dụng gần đây nhất.
    Trường trạng thái kết nối được mã hoá bằng khoá tài khoản này. Không có thông tin khoá tài khoản về trạng thái kết nối hiện tại, điều đó có nghĩa là không có thiết bị nào được kết nối hoặc thiết bị đã kết nối không phải là Trình tìm chuyển đổi âm thanh.
  3. 0b00000110
    Khoá tài khoản này là khoá tài khoản đang sử dụng.
    Trường trạng thái kết nối được mã hoá bằng khoá tài khoản này và thiết bị hiện đã kết nối được liên kết với khoá tài khoản này.

Giản đồ cho tải trọng chuyển đổi âm thanh

Hình dưới đây cho thấy sơ đồ tải trọng của bộ chuyển đổi âm thanh.

Tin nhắn

Khi được kết nối, Trình tìm kiếm và Nhà cung cấp có thể sử dụng Luồng tin nhắn để đồng bộ hoá chức năng chuyển đổi Âm thanh, kích hoạt quá trình chuyển đổi kết nối, đặt và lấy lựa chọn ưu tiên chuyển đổi, thông báo về trạng thái kết nối, v.v. Chúng ta sẽ tạo một nhóm thông báo và mã tin nhắn dành riêng cho tính năng Chuyển đổi âm thanh như bên dưới.

Tên nhóm tin nhắn Giá trị
Chuyển đổi âm thanh 0x07

Thông tin bổ sung cho từng mã thông báo được trình bày trong các phần sau.

Tên mã thông báo Giá trị Chỉ đa điểm Người gửi Người trả lời Mã hoá MAC ACK (Thu hút)
Sử dụng tính năng Chuyển đổi âm thanh 0x10 N Cả hai Cả hai, thông qua mã 0x11 N Không N
Thông báo về tính năng Chuyển đổi âm thanh 0x11 N Cả hai Cả hai N
Đặt trạng thái đa điểm 0x12 Người tìm kiếm Nhà cung cấp N
Đặt lựa chọn ưu tiên về chuyển đổi 0x20 Người tìm kiếm Nhà cung cấp N
Nhận lựa chọn ưu tiên về việc chuyển đổi 0x21 Người tìm kiếm Nhà cung cấp, thông qua mã 0x22 N Không N
Thông báo lựa chọn ưu tiên chuyển đổi 0x22 Nhà cung cấp Người tìm kiếm N Không N
Chuyển đổi nguồn âm thanh đang hoạt động(sang thiết bị đã kết nối) 0x30 Người tìm kiếm Nhà cung cấp N
Chuyển về thiết bị đã ngắt kết nối 0x31 N Người tìm kiếm Nhà cung cấp N
Thông báo sự kiện chuyển đổi nhiều điểm 0x32 Nhà cung cấp Người tìm kiếm N Không N
Xem trạng thái kết nối 0x33 Người tìm kiếm Nhà cung cấp, thông qua mã 0x34 N Không N
Thông báo về trạng thái kết nối 0x34 Nhà cung cấp Người tìm kiếm Không N
Thông báo kết nối đã bắt đầu chuyển đổi âm thanh 0x40 N Người tìm kiếm Nhà cung cấp N
Cho biết đang sử dụng khoá tài khoản 0x41 N Người tìm kiếm Nhà cung cấp N
Gửi dữ liệu tuỳ chỉnh 0x42 N Người tìm kiếm Nhà cung cấp N
Đặt mục tiêu thả kết nối 0x43 Người tìm kiếm Nhà cung cấp N

Bảng 4.3: Thông báo chuyển đổi âm thanh

MAC của Thông báo chuyển đổi âm thanh

Để cung cấp phương thức xác thực tin nhắn, tất cả các tin nhắn chuyển đổi âm thanh có dữ liệu bổ sung được gửi từ Trình tìm kiếm đến Nhà cung cấp đều yêu cầu Mã xác thực tin nhắn. Khi nhận được một thông báo có MAC, thông báo đó phải được xác nhận để Trình tìm kiếm biết liệu Nhà cung cấp có phản ứng với thông báo hay không.

Nếu xác thực thông báo thành công, Nhà cung cấp sẽ gửi ACK cho thông báo:

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Xác nhận 0xFF
1 uint8 ACK (Thu hút) 0x01
2 – 3 uint16 Lượng dữ liệu bổ sung khác nhau
4 uint8 Chuyển đổi âm thanh 0x07
5 uint8 Mã tin nhắn chuyển đổi âm thanh khác nhau
6 - giây Dữ liệu bổ sung khác nhau

Nếu không gửi được thông báo, Nhà cung cấp sẽ gửi NAK cho thông báo:

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Xác nhận 0xFF
1 uint8 Không có 0x02
2 – 3 uint16 Lượng dữ liệu bổ sung 0x0003
4 uint8 Lý do bị lỗi khác nhau
5 uint8 Chuyển đổi âm thanh 0x07
6 uint8 Mã tin nhắn chuyển đổi âm thanh khác nhau

Xin lưu ý rằng nếu Nhà cung cấp là người gửi thì không bắt buộc phải có MAC.

Sử dụng chức năng Chuyển đổi âm thanh

Cả Nhà cung cấp và Trình tìm kiếm chuyển đổi âm thanh đều có thể kiểm tra xem Trình tìm kiếm/Nhà cung cấp ghép nối nhanh đã kết nối có hỗ trợ Chuyển đổi âm thanh hay không bằng cách sử dụng thông báo dưới đây:

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Sử dụng chức năng Chuyển đổi âm thanh 0x10
2 – 3 uint16 Lượng dữ liệu bổ sung 0

Bảng 4.3.1.0: Nhận khả năng chuyển đổi âm thanh

Thông báo về tính năng Chuyển đổi âm thanh

Khi nhận được mã thông báo Khả năng chuyển đổi âm thanh, Trình tìm kiếm/Nhà cung cấp chuyển đổi âm thanh sẽ phản hồi bằng một trong các cờ sau:

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Thông báo về tính năng Chuyển đổi âm thanh 0x11
2 – 3 uint16 Lượng dữ liệu bổ sung 20 nếu ký tự này được Người tìm kiếm gửi
4 nếu nguồn dữ liệu này được Nhà cung cấp gửi
4–5 uint16 Mã phiên bản chuyển đổi âm thanh Nếu giá trị khác 0 nghĩa là thiết bị này có hỗ trợ tính năng Chuyển đổi âm thanh. Mã phiên bản hiện tại (có tính năng nâng cao tính bảo mật) là 0x0102.
0x0000 hoặc không phản hồi trong 1 giây có nghĩa là tính năng Chuyển đổi âm thanh không được hỗ trợ trên thiết bị này
6–7 flags Cờ khả năng chuyển đổi âm thanh của Nhà cung cấp
Nếu đây là cờ do Trình tìm kiếm gửi, bạn nên bỏ qua 2 byte này.
khác nhau
Xem Cờ khả năng chuyển đổi âm thanh
8–15 Số chỉ dùng một lần tin nhắn
Chỉ bắt buộc khi người tìm kiếm gửi tin nhắn này
khác nhau
16–23 Mã xác thực thư
Chỉ bắt buộc khi mã này được gửi từ Người tìm kiếm
khác nhau

Bảng 4.3.1.1: Thông báo về tính năng Chuyển đổi âm thanh

Cờ cho khả năng chuyển đổi âm thanh
  1. Bit 0 (octet 6, MSB): Trạng thái chuyển đổi âm thanh

    • 1, nếu trạng thái chuyển đổi âm thanh đang bật
    • 0, nếu không
  2. Bit 1: khả năng cấu hình đa điểm

    • 1, nếu thiết bị hỗ trợ đa điểm và có thể chuyển đổi giữa chế độ bật và tắt
    • 0, nếu không (không hỗ trợ tính năng đa điểm hoặc đa điểm luôn bật)
  3. Bit 2: trạng thái hiện tại đa điểm

    • 1, nếu đa điểm đang bật
    • 0, nếu không
  4. Bit 3: phát hiện trên đầu

    • 1, nếu thiết bị này hỗ trợ tính năng phát hiện trên đầu (ngay cả khi tính năng phát hiện trên đầu hiện đã tắt)
    • 0, nếu không
  5. Bit 4: trạng thái hiện tại của tính năng phát hiện trên đầu

    • 1, nếu bạn bật tính năng phát hiện trên đầu
    • 0, nếu không (không hỗ trợ tính năng phát hiện trên đầu hoặc tắt tính năng phát hiện trên đầu)
  6. Tất cả các bit khác đều được đặt trước, mặc định là 0.

Đặt trạng thái nhiều điểm

Trên Trình tìm kiếm chuyển đổi âm thanh, chúng tôi có thể cung cấp chế độ cài đặt để người dùng bật/tắt chức năng đa điểm. Trình tìm kiếm sẽ đặt trạng thái đa điểm cho Nhà cung cấp bằng cách sử dụng thông báo dưới đây:

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Đặt trạng thái nhiều điểm 0x12
2 – 3 uint16 Lượng dữ liệu bổ sung 17
4 uint8 Trạng thái đa điểm 0: tắt đa điểm
1: bật chế độ đa điểm
5–12 Số chỉ dùng một lần tin nhắn khác nhau
13–20 Mã xác thực thư khác nhau

Bảng 4.3.1.2: Thiết lập trạng thái đa điểm

Đặt lựa chọn ưu tiên về chuyển đổi

Trình tìm kiếm chuyển đổi âm thanh có thể sửa đổi lựa chọn ưu tiên chuyển đổi của đa điểm và đặt thành Nhà cung cấp bằng cách sử dụng thông báo bên dưới:

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Đặt lựa chọn ưu tiên về chuyển đổi 0x20
2 – 3 uint16 Lượng dữ liệu bổ sung 18
4 flags Tùy chọn chuyển đổi varies
Xem cờ tuỳ chọn chuyển đổi đa điểm
5 Cài đặt chuyển đổi nâng cao
Byte này được dành riêng, giá trị mặc định là 0
khác nhau
6–13 Số chỉ dùng một lần tin nhắn khác nhau
14–21 Mã xác thực thư khác nhau

Bảng 4.3.2.0: Thiết lập tuỳ chọn chuyển đổi

Cờ tuỳ chọn chuyển đổi đa điểm
  • Bit 0 (MSB): A2DP so với A2DP (mặc định là 0)
  • Bit 1: HFP so với HFP (mặc định 0)
  • Bit 2: A2DP so với HFP (mặc định là 0)
  • Bit 3: HFP so với A2DP (mặc định là 1)
  • Bit 4 - 7: dành riêng
  • Ở trên biểu thị là "yêu cầu hồ sơ mới" so với "hồ sơ đang hoạt động hiện tại"
    • 0 do không chuyển đổi
    • 1 để chuyển đổi

Nhận lựa chọn ưu tiên về chuyển đổi

Trình tìm kiếm chuyển đổi âm thanh có thể truy vấn lựa chọn ưu tiên chuyển đổi của đa điểm từ Nhà cung cấp bằng cách sử dụng thông báo bên dưới:

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Nhận cấu hình chuyển đổi 0x21
2 – 3 uint16 Lượng dữ liệu bổ sung 0

Bảng 4.3.2.1: Chọn lựa chọn ưu tiên cho việc chuyển đổi

Thông báo về lựa chọn ưu tiên chuyển đổi

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Thông báo về lựa chọn ưu tiên chuyển đổi 0x22
2 – 3 uint16 Lượng dữ liệu bổ sung 2
4 flags Cờ tuỳ chọn chuyển đổi varies
Xem cờ tuỳ chọn chuyển đổi đa điểm
5 Cài đặt chuyển đổi nâng cao
Byte này được dành riêng, giá trị mặc định phải là 0
khác nhau

Bảng 4.3.2.2: Thông báo tuỳ chọn chuyển đổi

Chuyển nguồn âm thanh đang hoạt động (sang thiết bị đã kết nối)

Trình tìm kiếm chuyển đổi âm thanh có thể yêu cầu Trình cung cấp đa điểm chuyển đổi nguồn âm thanh đang hoạt động giữa các thiết bị được kết nối bằng thông báo bên dưới:

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Chuyển nguồn âm thanh đang hoạt động (sang thiết bị đã kết nối) 0x30
2 – 3 uint16 Lượng dữ liệu bổ sung 17
4 flags Đang chuyển đổi cờ sự kiện nguồn âm thanh đang hoạt động thay đổi
Xem chuyển đổi sự kiện nguồn âm thanh đang hoạt động
5–12 Số chỉ dùng một lần tin nhắn khác nhau
13–20 Mã xác thực thư khác nhau

Bảng 4.3.3.0: Chuyển đổi nguồn âm thanh đang hoạt động (sang thiết bị được kết nối)

Đang chuyển đổi sự kiện nguồn âm thanh đang hoạt động
  • Bit 0 (MSB): 1 chuyển sang thiết bị này, 0 chuyển sang thiết bị được kết nối thứ hai
  • Bit 1: 1 tiếp tục phát khi chuyển sang thiết bị sau khi chuyển, 0 nếu không sẽ phát. Tiếp tục phát có nghĩa là Nhà cung cấp gửi thông báo PLAY đến Trình tìm kiếm thông qua cấu hình AVRCP. Nếu trạng thái trước đó (trước khi chuyển sang trạng thái khác) không phải là PLAY, thì Nhà cung cấp nên bỏ qua cờ này.
  • Bit 2: 1 từ chối SCO khi thiết bị đã tách rời, 0 nếu không
  • Bit 3: 1 ngắt kết nối Bluetooth trên thiết bị chuyển đi, 0 nếu không ngắt kết nối Bluetooth.
  • Bit 4 – 7: dành riêng.

Trình tìm kiếm chuyển đổi âm thanh không phải lúc nào cũng biết trạng thái của mình chính xác. Do đó, Nhà cung cấp có thể nhận được thông báo "chuyển sang thiết bị này" khi Trình tìm kiếm đã là thiết bị đang hoạt động. Trong trường hợp này, để hiển thị giao diện người dùng chính xác trên Trình tìm kiếm, Nhà cung cấp có thể gửi một NAK kèm theo lý do lỗi, 0x4 – Thao tác trên thiết bị dự phòng.

Chuyển về lại (về thiết bị đã ngắt kết nối)

Nếu việc chuyển đổi kết nối là không mong muốn, người dùng có thể huỷ bỏ hoạt động chuyển đổi đó. Trong một số trường hợp nhất định, bạn nên khôi phục kết nối âm thanh để giảm thiểu tình trạng gián đoạn. Trình tìm kiếm sẽ sử dụng thông báo bên dưới để kích hoạt thao tác chuyển về:

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Chuyển về lại (về thiết bị đã ngắt kết nối) 0x31
2 – 3 uint16 Lượng dữ liệu bổ sung 17
4 uint8 Chuyển về sự kiện trước đó thay đổi
0x01: chuyển về
0x02: chuyển về vị trí cũ và tiếp tục phát
5–12 Số chỉ dùng một lần tin nhắn khác nhau
13–20 Mã xác thực thư khác nhau

Bảng 4.3.3.1: Chuyển trở lại (về thiết bị đã ngắt kết nối)

Đối với Nhà cung cấp nhiều điểm, để chuyển đổi kết nối, Nhà cung cấp có thể huỷ kết nối với một thiết bị nguồn âm thanh và tạm dừng phiên âm thanh trên nguồn âm thanh khác. Ví dụ: giả sử tai nghe đa điểm được kết nối với một máy tính bảng và một thiết bị Chuyển đổi âm thanh được hỗ trợ thứ 3. Người dùng đang xem video trên máy tính bảng khi có cuộc gọi đến trên điện thoại. Điện thoại sẽ kích hoạt nút chuyển kết nối trên tai nghe. Thao tác này cần huỷ kết nối của thiết bị thứ 3 để kết nối với điện thoại, đồng thời tạm dừng phiên phát nội dung đa phương tiện trên máy tính bảng để lấy nhạc chuông từ điện thoại. Nếu người dùng từ chối cuộc gọi, điện thoại có thể yêu cầu tai nghe "chuyển về và tiếp tục phát". Khi nhận được yêu cầu này, tai nghe phải kết nối lại với thiết bị thứ 3 rồi tiếp tục phát video đã tạm dừng trên máy tính bảng.

Thông báo sự kiện chuyển đổi nhiều điểm

Để giúp người dùng nhận biết được một sự kiện chuyển đổi nhiều điểm đang diễn ra, Trình tìm chuyển đổi âm thanh có thể hiển thị thông báo cho người dùng. Nhà cung cấp phải thông báo cho Ứng dụng chuyển đổi âm thanh đã kết nối về sự kiện chuyển đổi.

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Thông báo sự kiện chuyển đổi đa điểm
Nhà cung cấp phải gửi trình chuyển đổi âm thanh này trên mỗi công tắc, bao gồm Trình tìm kiếm chuyển đổi âm thanh sang Trình tìm kiếm chuyển đổi không phải âm thanh, Trình tìm kiếm chuyển đổi âm thanh sang Trình tìm chuyển đổi âm thanh và Trình tìm kiếm chuyển đổi âm thanh sang Trình tìm kiếm chuyển đổi âm thanh
0x32
2 – 3 uint16 Lượng dữ liệu bổ sung khác nhau
4 uint8 Lý do chuyển đổi thay đổi
0x00: Không xác định
0x01: Truyền trực tuyến A2DP
0x02: HFP
5 uint8 Thiết bị mục tiêu khác nhau
0x01: thiết bị này
0x02: một thiết bị khác đã kết nối
6 – n utf8 Tên thiết bị mục tiêu
nếu thiết bị mục tiêu là Trình tìm chuyển đổi âm thanh, sử dụng tên mà Người tìm kiếm đã gửi tới, nếu không sử dụng tên BT (nếu không có) bằng 2 byte cuối của địa chỉ thiết bị
khác nhau

Bảng 4.3.3.2: Thông báo cho sự kiện chuyển đổi đa điểm

Xem trạng thái kết nối

Trình tìm kiếm có thể nhận trạng thái kết nối hiện tại từ Nhà cung cấp:

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Xem trạng thái kết nối 0x33
2 – 3 uint16 Lượng dữ liệu bổ sung 0

Bảng 4.3.3.3: Nhận trạng thái kết nối

Sau khi nhận được thông báo này, Nhà cung cấp sẽ phản hồi bằng mã thông báo 0x34, thông báo trạng thái kết nối.

Thông báo về trạng thái kết nối

Như đã xác định trong tải trọng quảng cáo BLE, đối với Nhà cung cấp đa điểm, nếu trạng thái kết nối thay đổi, ngoại trừ việc thay đổi gói quảng cáo, thì Nhà cung cấp cũng phải thông báo cho những Người tìm kiếm được kết nối đang sử dụng cùng một khoá tài khoản về thay đổi đó. Nếu Nhà cung cấp được kết nối với Trình tìm chuyển đổi âm thanh và Trình tìm chuyển đổi không phải âm thanh, thì nếu Trình tìm chuyển đổi không phải âm thanh đang hoạt động, Nhà cung cấp cũng phải thông báo cho Trình tìm chuyển đổi âm thanh đã kết nối về trạng thái kết nối (bằng khoá tài khoản của Trình tìm kiếm).

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Thông báo về trạng thái kết nối 0x34
2 – 3 uint16 Lượng dữ liệu bổ sung khác nhau
4 uint8 Cờ thiết bị đang hoạt động khác nhau
0x00: Trình tìm kiếm này thụ động và thiết bị đang hoạt động sử dụng cùng một khoá tài khoản
0x01: Trình tìm kiếm này là thiết bị chủ động
0x02: Trình tìm kiếm này bị động và thiết bị hoạt động là Trình tìm kiếm chuyển đổi âm thanh.
5 – n Trạng thái kết nối đã mã hoá khác nhau
n+1 - n+8 Số chỉ dùng một lần tin nhắn khác nhau

Bảng 4.3.3.4: Thông báo về trạng thái kết nối

Thông báo về trạng thái kết nối đã mã hoá

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

nơi:

Thông báo về kết nối đã bắt đầu chuyển đổi Âm thanh

Nhà cung cấp công cụ chuyển đổi âm thanh có thể cần biết liệu quá trình chuyển đổi kết nối có được kích hoạt bằng Nút chuyển âm thanh để có các phản ứng khác nhau hay không, ví dụ: tắt âm báo cho các sự kiện Chuyển đổi âm thanh. Trình tìm kiếm gửi thông báo để thông báo cho Nhà cung cấp rằng kết nối này là kết nối đã bắt đầu chuyển đổi Âm thanh.

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Thông báo về kết nối đã bắt đầu chuyển đổi Âm thanh 0x40
2 – 3 uint16 Lượng dữ liệu bổ sung 17
4 uint8 Chỉ báo kết nối đã bắt đầu chuyển đổi âm thanh varies
0: kết nối này không được kích hoạt bằng tính năng Chuyển đổi âm thanh
1: đây là kết nối do Chuyển đổi âm thanh khởi tạo
5–12 Số chỉ dùng một lần tin nhắn khác nhau
13–20 Mã xác thực thư khác nhau

Bảng 4.3.4.0: Thông báo cho kết nối đã bắt đầu chuyển đổi âm thanh

Cho biết đang sử dụng khoá tài khoản

Nếu nhiều khoá tài khoản trên Trình tìm kiếm (ví dụ: nhiều người dùng) được liên kết với Nhà cung cấp, Trình tìm kiếm sẽ sử dụng thông báo bên dưới để cho biết khoá tài khoản nào đang được sử dụng.

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Cho biết đang sử dụng khoá tài khoản 0x41
2 – 3 uint16 Lượng dữ liệu bổ sung 22
4–9 utf8 Chuỗi đang sử dụng UTF8 ("đang sử dụng")
10–17 Số chỉ dùng một lần tin nhắn khác nhau
18–25 Mã xác thực thư khác nhau

Bảng 4.3.4.1: Cho biết trường hợp sử dụng khoá tài khoản

Khi nhận được thông báo này, Nhà cung cấp có thể biết khoá tài khoản nào đang được sử dụng bằng cách xác minh mã xác thực tin nhắn.

Gửi dữ liệu tuỳ chỉnh

Trình tìm kiếm nút chuyển âm thanh đang hoạt động có thể đóng gói thông tin (ví dụ: sử dụng âm thanh) của luồng âm thanh trong byte dữ liệu tuỳ chỉnh và gửi đến Nhà cung cấp bằng cách sử dụng thông báo bên dưới:

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Gửi dữ liệu tuỳ chỉnh 0x42
2 – 3 uint16 Lượng dữ liệu bổ sung 17
4 uint8 Dữ liệu tùy chỉnh khác nhau
5–12 Số chỉ dùng một lần tin nhắn khác nhau
13–20 Mã xác thực thư khác nhau

Bảng 4.3.4.2: Gửi dữ liệu tuỳ chỉnh

Khi nhận được dữ liệu tuỳ chỉnh, Nhà cung cấp sẽ cập nhật gói quảng cáo để bao gồm dữ liệu tuỳ chỉnh. Đối với Nhà cung cấp đa điểm, ứng dụng này cũng sẽ thông báo về việc thay đổi trạng thái kết nối sang một Trình tìm kiếm được kết nối khác bằng cách sử dụng cùng một khoá tài khoản.

Đặt mục tiêu thả kết nối

Trên tai nghe đa điểm, nếu kết nối ưu tiên bị ngắt không phải là kết nối ít được sử dụng gần đây nhất, thì Trình tìm kiếm chuyển đổi âm thanh có thể cho Nhà cung cấp biết cần thả thiết bị nào bằng thông báo bên dưới:

Bạch tuộc Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Đặt mục tiêu thả kết nối 0x43
2 – 3 uint16 Lượng dữ liệu bổ sung 17
4 uint8 Mục tiêu thiết bị đã kết nối sẽ bị thả khác nhau
1: thiết bị này
5–12 Số chỉ dùng một lần tin nhắn khác nhau
13–20 Mã xác thực thư khác nhau

Bảng 4.3.4.3: Thiết lập mục tiêu thả kết nối

Cách triển khai tài liệu tham khảo

Xem Thư viện SDK nhúng lân cận để tham khảo cách triển khai