Chuyển đổi âm thanh

Khi người dùng ngày càng sử dụng nhiều thiết bị nguồn âm thanh để thực hiện các tác vụ hàng ngày, 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ị ngày càng tăng. Nút chuyển âm thanh 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 được ưu tiên (ví dụ: cuộc gọi đến).

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

  1. Việc chuyển đổi kết nối phải nhanh chóng và dựa trên hành động của người dùng.
  2. Việc 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ỷ nếu không muốn chuyển đổi.
  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 kiếm nút chuyển âm thanh: Trình tìm kiếm là một thiết bị nguồn âm thanh (ví dụ: điện thoại hoặc máy tính bảng), tìm kiếm tai nghe ở gần để kết nối khi có thể.

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

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

Để thực hiện 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 Để chấp nhận yêu cầu kết nối mới của một Người tìm kiếm khác khi đã có mối kết nối.
Đối với Nhà cung cấp một điểm:
  • Thiết bị nguồn ban đầu sẽ tự động tạm dừng phát âm thanh khi Nhà cung cấp đang ngắt kết nối.
Đối với Nhà cung cấp nhiều điểm:
  • Nếu vẫn có kết nối, thì ứng dụng sẽ chấp nhận yêu cầu kết nối.
  • Nếu băng thông kết nối đã đầy, hãy ngắt 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 một thời gian dài) và chấp nhận yêu cầu mới đến.
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ải thiện hiệu suất.
Để đánh đổi giữa thời lượng pin và hiệu suất chuyển đổi, Nhà cung cấp có thể có chế độ quét trang mặc định trong hầu hết các 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 phải sử dụng chế độ độ trễ thấp trong các trường hợp sau:
  • 30 giây đầu tiên khi 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 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ó.
Thao tác chuyển về sẽ được kích hoạt bằng thông tin liên lạc qua API Luồng thông báo.
Sự kiện tạm dừng âm thanh phải được đưa 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 API Luồng tin nhắn. Bắt buộc
Trạng thái kết nối Để Trình tìm kiếm thực hiện việc đá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
  • (Các) thiết bị đã kết nối
Bao gồm trạng thái kết nối trong Luồng tin nhắn và quảng cáo BLE. Bắt buộc
Thay đổi về chức năng thời gian chạy Bạn có thể bật nút chuyển âm thanh bằng cách nâng cấp phần mềm trên Trình cung cấp. Vì vậy, các chức năng cần được đồng bộ hoá giữa Trình tìm kiếm và Trì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 chức năng thời gian chạy. Bắt buộc
Quy tắc chuyển đổi có thể định cấu hình Cho phép trình 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 và yêu cầu phát trực tuyến âm thanh mới thông qua chế độ cài đặt lựa chọn ưu tiên của người dùng.
Ví dụ: trình tìm kiếm nút chuyển âm thanh có thể cung cấp các 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 phát trực tuyến nội dung đa phương tiện và gọi điện.
Trình tìm kiếm nút chuyển đổi âm thanh sẽ thiết lập và nhận quy tắc chuyển đổi thông qua Luồng tin nhắn.
Chỉ dành cho Nhà cung cấp đa điểm.
Triển khai API Luồng tin nhắn để có thể định cấu hình các quy tắc chuyển đổi giữa các thiết bị đã 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 việc chuyển đổi âm thanh giữa các thiết bị đã kết nối.
Bên Trình tìm kiếm chuyển đổi âm thanh, 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 kiếm nút chuyển âm thanh để xác định nguồn âm thanh đang hoạt động giữa các thiết bị đã 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 nút 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 đã kết nối khi quá trình chuyển đổi đa điểm đang diễn ra.
Bắt buộc

Trọng tải quảng cáo

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

Xin 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

Octet 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
  • length: biến đổi
  • type = 0b0101
Bắt buộc
1 uint8 Trạng thái kết nối
0bHAFRSSSS
  • H = phát hiện trên đầu
  • A = tình trạ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, chỉ chứa loại nội dung dùng để mô tả mức sử dụng nội dung 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ị này được gửi từ Trình tìm kiếm của luồng đang hoạt động hiện tại đến Nhà cung cấp thông qua luồng thông báo. 0 nếu luồng đang hoạt động hiện tại không phải từ trình phát. Bắt buộc
3 – var Bitmap thiết bị đã kết nối
Bitmap cho biết những thiết bị hiện đang kết nối với Nhà cung cấp. Tất 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. Độ dài sẽ phụ thuộc vào số lượng thiết bị liên kết của Nhà cung cấp.
Bit được liên kết được đặt thành 1 nếu thiết bị hiện đang kết nối với Nhà cung cấp, nếu không thì được đặt thành 0.
Xem Bitmap 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 = phát hiện vùng đầu

    • 1, đang ở trên đầu
    • 0, nếu không, không có trên đầu hoặc không có cảm biến OHD
  • 0bA = tình trạng kết nối

    • 1, có kết nối
    • 0, nếu không
  • 0bF = chế độ tập trung

    • 1, hiện tại, ở chế độ tập trung, bạn không được phép chuyển đổi kết nối để sử dụng nội dung đa phương tiện, tức là không được 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à người dùng không kết nối (đối với nhiều đ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ì bạn phải đặt giá trị này 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 có dữ liệu nào được chuyển
  • 0x3: Chuyển dữ liệu không phải âm thanh (chỉ khi có thể chuyển đổi, nếu không, hãy sử dụng 0xF)
  • 0x4: Truyền trực tuyến A2DP, không áp dụng AVRCP
  • 0x5: Phát trực tuyến 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 cả nhạc chuông trong băng tần và không trong băng tần
  • 0x7: Âm thanh LE – phát trực tuyến nội dung nghe nhìn mà không có chế độ điều khiển
  • 0x8: Âm thanh LE – phát trực tuyến nội dung nghe nhìn có thể điều khiển
  • 0x9: Âm thanh LE – truyền phát cuộc gọi
  • 0xA: Âm thanh LE – truyền tin
  • 0xF: Tạm thời tắt nút chuyển kết nối (ví dụ: cập nhật chương trình cơ sở)
Loại ngữ cảnh và trạng thái kết nối của âm thanh LE

Đề xuất Nhà cung cấp âm thanh LE nên xử lý tất cả các loại ngữ cảnh được chỉ định trong Số được chỉ định 6.12.3 (trừ phi Nhà cung cấp không hỗ trợ một loại ngữ cảnh nhất định một cách rõ ràng) và liên kết loại ngữ cảnh với trạng thái kết nối như bên dưới.

  • Trò chuyện: 0x9
  • Nội dung nghe nhìn: 0x8
  • Trò chơi: 0x7
  • Hướng dẫn: 0x7
  • Trợ lý thoại: 0x9
  • Trực tiếp: 0x9
  • Hiệu ứng âm thanh: 0x2
  • Thông báo: 0x2
  • Nhạc chuông: 0x9
  • Cảnh báo: 0x7
  • Chuông báo khẩn cấp: 0x9

Đối với trường hợp loại ngữ cảnh LE Audio kết hợp, chẳng hạn như phát nội dung nghe nhìn trong cuộc gọi, Nhà cung cấp sẽ sử dụng trạng thái kết nối có mức độ ưu tiên cao nhất, tức là sử dụng 0x9 (cuộc gọi) cho trường hợp trên thay vì 0x8 (nội dung nghe nhìn).

Bitmap thiết bị đã kết nối

Để tránh chuyển đổi kết nối không mong muốn, Trình tìm kiếm có thể cần biết tai nghe hiện đang kết nối với(những) thiết bị nào. 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 khi chuyển đổi kết nối khi một thành viên gia đình khởi động YouTube trên máy tính bảng.

Xin lưu ý rằng bitmap này là ẩn danh, Trình tìm kiếm không thể biết những 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ị hiện đang kết nố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. Bạn có thể chấp nhận việc thay đổi thứ tự 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 ngẫu nhiên có thể phân giải

Để tránh việc 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 theo khoá tài khoản bằng AES-CTR:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

trong đó

  1. Khoá đượ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ằng hàm HKDF, IETF RFC 5869, 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 ban đầu tại đâ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ơ ban đầu) là dữ liệu ngẫu nhiên 2 byte của Dữ liệu khoá tài khoản có giá trị đệm bằng 0, tức là IV là concat(salt, 14-byte ZEROs).

  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ì bạn phải tạo lại muối và RPA trong cùng một khung thời gian quảng cáo.

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

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

Octet 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 khoá tài khoản thay đổi Bắt buộc
t+1 - s Dữ liệu pin thay đổi Không bắt buộc
s+1 - var Dữ liệu ngẫu nhiên có thể phân giải thay đổi Bắt buộc nếu Danh sách khoá tài khoản không trống,
nếu không thì sẽ bị Loại trừ.

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

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

Octet 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 đã mã hoá
  • T = loại
0bLLLL0110
  • length: biến đổi
  • type = 0b0110
Bắt buộc
1 – var Dữ liệu đã mã hoá thay đổi Bắt buộc

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

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

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

 V = concat(account_key, salt, random_resolvable_data)

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

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

Khoá tài khoản đang sử dụng

Việc chuyển đổi kết nối 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ị đang kết nối là Trình tìm kiếm nút chuyển âm thanh, thì Nhà cung cấp sẽ có thể lấy khoá tài khoản được 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 được kết nối không phải là Trình tìm kiế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 những mẫu sử dụng sau vào:

  1. 0b00000100
    Khoá tài khoản này không được sử dụng.
    Đây là khoá mặc định (xem 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 này có thể có nghĩa là không có thiết bị nào được kết nối hoặc thiết bị được kết nối không phải là Trình tìm công tắc âm thanh.
  3. 0b00000110
    Khoá tài khoản này là khoá tài khoản đang được 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ị đang kết nối được liên kết với khoá tài khoản này.

Sơ đồ cho trọng tải của nút chuyển đổi âm thanh

Hình dưới đây cho thấy sơ đồ về tải trọng của nút chuyển Â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 thông báo để đồng bộ hoá tính năng chuyển đổi âm thanh, kích hoạt nút chuyển kết nối, đặt và nhận lựa chọn ưu tiên chuyển đổi, thông báo trạng thái kết nối, v.v. Chúng ta tạo một nhóm thông báo và các mã thông báo dành riêng cho nút chuyển Â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 chi tiết bổ sung về từng mã thông báo được đưa vào các phần sau.

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

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

MAC của Tin nhắn chuyển đổi âm thanh

Để xác thực thông báo, tất cả thông báo 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 thông báo. Khi nhận được thông báo có MAC, bạn phải xác nhận để Người 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:

Octet Loại dữ liệu Mô tả Giá trị
0 uint8 Xác nhận 0xFF
1 uint8 ACK 0x01
2 – 3 uint16 Độ dài dữ liệu bổ sung thay đổi
4 uint8 Chuyển đổi âm thanh 0x07
5 uint8 Mã thông báo chuyển đổi âm thanh thay đổi
6 – giây Dữ liệu khác thay đổi

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

Octet Loại dữ liệu Mô tả Giá trị
0 uint8 Xác nhận 0xFF
1 uint8 NAK 0x02
2 – 3 uint16 Độ dài dữ liệu bổ sung 0x0003
4 uint8 Lý do bị lỗi thay đổi
5 uint8 Chuyển đổi âm thanh 0x07
6 uint8 Mã thông báo chuyển đổi âm thanh thay đổi

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

Nhận khả năng của nút chuyển đổi âm thanh

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

Octet Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Nhận khả năng của nút chuyển đổi âm thanh 0x10
2 – 3 uint16 Độ dài dữ liệu bổ sung 0

Bảng 4.3.1.0: Nhận chức năng của công tắc âm thanh

Khả năng thông báo của nút chuyển đổi âm thanh

Sau khi nhận được mã thông báo get capability of Audio switch (lấy chức năng của nút chuyển Âm thanh), Trình tìm kiếm/Trình cung cấp nút chuyển Âm thanh sẽ phản hồi bằng một trong các cờ sau:

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

Bảng 4.3.1.1: Khả năng thông báo của nút chuyển đổi âm thanh

Cờ chức năng chuyển đổi âm thanh
  1. Bit 0 (octet 6, MSB): Trạng thái nút chuyển âm thanh

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

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

    • 1, nếu tính năng đ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 đã đeo tai nghe (ngay cả khi tính năng phát hiện đã đeo tai nghe hiện đang 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 đang đeo

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

Đặt trạng thái đa điểm

Trên Trình tìm kiếm nút chuyển â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 nhiều điểm. Trình tìm kiếm sẽ đặt trạng thái nhiều điểm cho Nhà cung cấp bằng cách sử dụng thông báo bên dưới:

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

Bảng 4.3.1.2: Đặt trạng thái đa điểm

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

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

Octet 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ề việc chuyển đổi 0x20
2 – 3 uint16 Độ dài dữ liệu bổ sung 18
4 flags Lựa chọn ưu tiên về việc chuyển đổi khác nhau
Xem cờ tuỳ chọn chuyển đổi nhiều điểm
5 Chế độ cài đặt chuyển đổi nâng cao
Byte này được đặt trước, giá trị mặc định là 0
thay đổi
6 – 13 Số chỉ dùng một lần của tin nhắn thay đổi
14 – 21 Mã xác thực thông báo thay đổi

Bảng 4.3.2.0: Thiết lập lựa chọn ưu tiên chuyển đổi

Cờ tuỳ chọn chuyển đổi nhiều đ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 là 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 là "yêu cầu hồ sơ mới" so với "hồ sơ đang hoạt động hiện tại"
    • 0 nếu không chuyển
    • 1 để chuyển đổi

Lấy lựa chọn ưu tiên về việc chuyển đổi

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

Octet 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 Độ dài dữ liệu bổ sung 0

Bảng 4.3.2.1: Lấy lựa chọn ưu tiên chuyển đổi

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

Octet 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 Độ dài dữ liệu bổ sung 2
4 flags Chuyển đổi cờ lựa chọn ưu tiên khác nhau
Xem cờ tuỳ chọn chuyển đổi nhiều điểm
5 Chế độ cài đặt chuyển đổi nâng cao
Byte này được đặt trước, giá trị mặc định phải là 0
thay đổi

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

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

Trình tìm kiếm công tắc âm thanh có thể yêu cầu 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ị đã kết nối bằng cách sử dụng thông báo dưới đây:

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

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

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ị thứ hai được kết nối
  • Bit 1: 1 tiếp tục phát khi chuyển sang thiết bị sau khi chuyển đổi, 0 nếu không. 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 hồ sơ 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à CHƠI, thì Nhà cung cấp sẽ bỏ qua cờ này.
  • Bit 2: 1 từ chối SCO trên thiết bị đã chuyển, 0 nếu không
  • Bit 3: 1 ngắt kết nối Bluetooth khi chuyển sang thiết bị khác, 0 nếu không.
  • Bit 4 – 7: được đặt trước.

Trình tìm kiếm chuyển đổi âm thanh không phải lúc nào cũng biết chính xác trạng thái của mình, vì vậy, 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 NAK kèm theo lý do lỗi là 0x4 – Hành động thừa trên thiết bị.

Đối với Nhà cung cấp âm thanh LE có nhiều thành viên trong nhóm, Nhà cung cấp phải ngắt kết nối tất cả thành viên khỏi Trình tìm kiếm, nếu không, ngăn xếp Bluetooth của Trình tìm kiếm sẽ kết nối lại với Nhà cung cấp.

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

Nếu không muốn chuyển đổi kết nối, người dùng có thể huỷ 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 sự 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 việc chuyển về:

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

Bảng 4.3.3.1: Chuyển 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 thứ ba được hỗ trợ. 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 một nút chuyển kết nối trên tai nghe. Nút chuyển này cần phải ngắt 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 nghe nhìn trên máy tính bảng để nhận 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 và 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 đa điểm

Để người dùng biết về sự kiện chuyển đổi nhiều điểm đang diễn ra, Trình tìm kiếm nút chuyển â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 Trình tìm kiếm nút chuyển Âm thanh đã kết nối về sự kiện chuyển đổi.

Octet 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 nhiều điểm
Nhà cung cấp phải gửi sự kiện này trên mọi nút chuyển, bao gồm cả Trình tìm kiếm nút chuyển âm thanh sang Trình tìm kiếm nút chuyển không phải âm thanh, Trình tìm kiếm nút chuyển không phải âm thanh sang Trình tìm kiếm nút chuyển âm thanh và Trình tìm kiếm nút chuyển âm thanh sang Trình tìm kiếm nút chuyển âm thanh
0x32
2 – 3 uint16 Độ dài dữ liệu bổ sung thay đổi
4 uint8 Lý do chuyển đổi
Giá trị này phải được xác định dựa trên Trạng thái kết nối. Đối với các trường hợp sử dụng LE Audio, bạn nên xem xét mối liên kết giữa Loại ngữ cảnh LE Audio và trạng thái kết nối. Ví dụ: trạng thái kết nối tương ứng với Trợ lý thoại là 0x9(âm thanh LE – truyền trực tuyến cuộc gọi). Do đó, lý do chuyển đổi cho một nút chuyển do Trợ lý thoại khởi tạo phải là 0x02.
thay đổi
0x00: Chưa xác định
0x01: Nội dung nghe nhìn (ví dụ: truyền trực tuyến A2DP, truyền trực tuyến nội dung nghe nhìn LEA)
0x02: Cuộc gọi (ví dụ: truyền trực tuyến HFP, truyền trực tuyến cuộc gọi LEA)
5 uint8 Thiết bị mục tiêu thay đổi
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 kiếm nút chuyển âm thanh, sử dụng tên mà Trình tìm kiếm đã gửi đến, nếu không thì sử dụng tên BT, nếu không áp dụng thì sử dụng 2 byte cuối cùng của địa chỉ
thay đổi

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

Nhận 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:

Octet Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Nhận trạng thái kết nối 0x33
2 – 3 uint16 Độ dài dữ liệu bổ sung 0

Bảng 4.3.3.3: Lấy 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 trạng thái kết nối

Như đã xác định trong trọng tải 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, Nhà cung cấp cũng phải thông báo cho Trình tìm kiếm đã 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 kiếm nút chuyển Âm thanh và Trình tìm kiếm nút chuyển không phải Âm thanh, nếu Trình tìm kiếm nút chuyển không phải Âm thanh đang hoạt động, thì Nhà cung cấp cũng phải thông báo cho Trình tìm kiếm nút chuyển Âm thanh đã kết nối về trạng thái kết nối (sử dụng khoá tài khoản của Trình tìm kiếm).

Octet Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Thông báo trạng thái kết nối 0x34
2 – 3 uint16 Độ dài dữ liệu bổ sung thay đổi
4 uint8 Cờ thiết bị đang hoạt động thay đổi
0x00: Trình tìm kiếm này là thụ động và thiết bị đang hoạt động đang 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ị đang hoạt động
0x02: Trình tìm kiếm này là thụ động và thiết bị đang hoạt động không phải là Trình tìm kiếm nút chuyển Âm thanh.
5 – n Trạng thái kết nối được mã hoá thay đổi
n+1 - n+8 Số chỉ dùng một lần của tin nhắn thay đổi

Bảng 4.3.3.4: 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 được mã hoá

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

trong đó:

Thông báo về kết nối do tính năng Chuyển đổi âm thanh khởi tạo

Nhà cung cấp nút chuyển âm thanh có thể cần biết liệu việc chuyển đổi kết nối có được kích hoạt bằng nút chuyển âm thanh hay không để có các phản ứng khác nhau, ví dụ: tắt âm báo cho các sự kiện nút chuyển âm thanh. Trình tìm kiếm sẽ 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 do công tắc Âm thanh khởi tạo.

Octet 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 do tính năng Chuyển đổi âm thanh khởi tạo 0x40
2 – 3 uint16 Độ dài dữ liệu bổ sung 17
4 uint8 Chỉ báo kết nối do công tắc âm thanh khởi tạo thay đổi
0: kết nối này không được kích hoạt bằng Công tắc âm thanh
1: đây là kết nối do Công tắc âm thanh khởi tạo
5 – 12 Số chỉ dùng một lần của tin nhắn thay đổi
13 – 20 Mã xác thực thông báo thay đổi

Bảng 4.3.4.0: Thông báo về kết nối do công tắc âm thanh khởi tạo

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

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, thì 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.

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

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

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 thông báo.

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ụ: mức sử dụng âm thanh) của luồng âm thanh trong byte dữ liệu tuỳ chỉnh và gửi thông tin đó đến Nhà cung cấp bằng cách sử dụng thông báo bên dưới:

Octet 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 Độ dài dữ liệu bổ sung 17
4 uint8 Dữ liệu tùy chỉnh thay đổi
5 – 12 Số chỉ dùng một lần của tin nhắn thay đổi
13 – 20 Mã xác thực thông báo thay đổi

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

Sau 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 để đưa dữ liệu tuỳ chỉnh vào. Đối với Nhà cung cấp nhiều điểm, ứng dụng cũng phải thông báo về việc thay đổi trạng thái kết nối cho một Trình tìm kiếm khác đã kết nối bằng cùng một khoá tài khoản.

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

Trên tai nghe đa điểm, nếu kết nối ưu tiên cần 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 nút chuyển âm thanh có thể cho Nhà cung cấp biết thiết bị nào cần ngắt bằng cách sử dụng thông báo bên dưới:

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

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