Chuyển đổi âm thanh

Vì 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ông việc hằng ngày, thì nhu cầu tìm một giải pháp đơn giản hơn để quản lý tai nghe đang gia tăng sử dụng trên nhiều thiết bị. Công tắc â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 ưu tiên sự kiệ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 vào thao tác 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 để người dùng có thể kiểm soát/huỷ kích hoạt nếu việc chuyển đổi là không mong muốn.
  3. Quá trình chuyển đổi phải tôn trọng quyền riêng tư của người dùng.

Vai trò

Audio Switch Seeker (Trình tìm kiếm công tắc âm thanh): Thiết bị này 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 công tắc â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 để Người 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 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 từ một Trình tìm kiếm khác khi đã có 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 bị ngắt kết nối.
Đối với Nhà cung cấp đa điểm:
  • Nếu vẫn còn kết nối, ứ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 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 đến mới.
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.
Để 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ể đặt chế độ quét trang mặc định cho hầu hết các trường hợp (chế độ công suất thấp, 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:
  • Bật nguồn 30 giây đầu tiên
  • 30 giây đầu tiên khi 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ó thể.
Việc chuyển trở lại sẽ được kích hoạt bởi thông tin liên lạc qua API Luồng tin nhắn.
Sự kiện âm thanh đang tạm dừng phải được đưa vào bản ghi để tiếp tục phát nếu có.
Duy trì lịch sử kết nối và triển khai các API Luồng thông báo. Bắt buộc
Trạng thái kết nối Để Người tìm kiếm có thể đánh giá việc 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 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ở trên 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à Nhà cung cấp trong thời gian chạy. Triển khai API Luồng thư để truy cập các tính năng trong 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 ứng dụng Seeker định cấu hình mức độ ưu tiên giữa các 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 âm thanh mới thông qua phần 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 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 tính năng gọi và phát nội dung nghe nhìn.
Người tìm kiếm công cụ chuyển đổi âm thanh sẽ thiết lập và tải quy tắc chuyển đổi thông qua Luồng thông báo.
Chỉ Nhà cung cấp đa điểm.
Triển khai API Luồng thông báo để giúp quy tắc chuyển đổi giữa các thiết bị được kết nối có thể định cấu hình.
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 công cụ 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ông tắc â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ỉ Nhà cung cấp đa điểm.
Triển khai API Luồng thông báo cho Trình tìm kiếm công tắc â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 công tắc âm thanh hiển thị thông báo chuyển. Chỉ Nhà cung cấp đa điểm.
Triển khai API Luồng thông báo để thông báo cho Trình 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

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

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

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ộ tám 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, dữ liệu này chỉ chứa loại nội dung dùng để mô tả mức 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 bản sao đó đến Nhà cung cấp.
Giá trị này được gửi từ Người tìm kiếm luồng tin nhắn hiện đang hoạt động đến Nhà cung cấp thông qua luồng tin nhắn. 0 nếu luồng truyền trực tuyến đang hoạt động không phải từ Seeker. Bắt buộc
3 – var Bitmap của thiết bị đã kết nối
Một bitmap để cho biết thiết bị nào hiện đang kết nối với Trì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. Độ dài sẽ tuỳ thuộc vào số lượng thiết bị liên kết của Nhà cung cấp.
Bit được ánh xạ sẽ được đặt thành 1 nếu thiết bị đang được kết nối với Nhà cung cấp, nếu không thì là 0.
Xem Bitmap thiết bị đã kết nối để biết 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, hiện đang có mặt
    • 0, nếu không thì không được đeo trên đầu hoặc không có cảm biến OHD
  • 0bA = khả năng kết nối sẵn có

    • 1, hiện có kết nối
    • 0, nếu không thì
  • 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 nội dung nghe nhìn sử dụng, tức là không chuyển A2DP sang A2DP
    • 0, nếu không thì
  • 0bR = tự động kết nối lại

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

Đề xuất Nhà cung cấp âm thanh năng lượng thấp 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ừ khi Nhà cung cấp rõ ràng không hỗ trợ một loại ngữ cảnh nhất định) và ánh xạ loại ngữ cảnh sang trạng thái kết nối như dưới đây.

  • 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 tình huống kết hợp loại bối cảnh Âm thanh năng lượng thấp, chẳng hạn như phát nội dung nghe nhìn trong thì 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 (gọi) cho trường hợp trên thay vì 0x8 (nội dung đa phương tiện).

Định dạng bitmap trên 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ị mà tai nghe hiện đang kết nối. Ví dụ: khi tai nghe được kết nối với điện thoại, nên người dùng không muốn bị gián đoạn bởi khi một trong các thành viên gia đình bắt đầu dùng YouTube trên máy tính bảng.

Lưu ý rằng bitmap này ẩn danh, Người tìm kiếm không thể biết bitmap nào khác thiết bị được liên kết với Nhà cung cấp. Ví dụ: hãy 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, giá trị của bitmap sẽ là 0b10010000. Việc thay đổi đơn đặt hàng có thể chấp nhận được nếu là 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 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 phải xoay vòng và mã hoá trường bằng 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ởi hàm HKDF, IETF RFC 5869, sử dụng SHA-256 hàm băm.

        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 tại đây, tức là byte đầu tiên của khoá là 0x04, không được đưa vào 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 khóa tài khoản có 0 khoảng đệm, 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 giá trị trạng thái kết nối thay đổi, dữ liệu ngẫu nhiên và RPA cần được tạo lại ở cùng một khung thời gian quảng cáo.

Điều này làm cho 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 sẽ xoay vòng.

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

Bộ tám 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+1s Dữ liệu về 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, 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ộ tám 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 dữ liệu đã 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 một kết nối đã mã hoá trường trạng thái, kết quả được giải mã sẽ là trường trạng thái kết nối.

Để tránh bị 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 có thể phân giải ngẫu nhiên được đưa vào quảng cáo. Thông thường, khi tạo bộ lọc khoá tài khoản, giá trị V được tạo ra bằng cách kết hợp tài khoản bộ lọc chính có thêm muối. Thay vào đó, khi Dữ liệu có thể phân giải ngẫu nhiên cũng được được quảng cáo, thì giá trị V sẽ được tạo là:

 V = concat(account_key, salt, random_resolvable_data)

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

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

Khoá tài khoản đang được 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 bao gồm thông tin tài khoản của kết nối hiện tại trong quảng cáo BLE. Nếu thiết bị hiện đã kết nối là Thiết bị tìm công tắc âm thanh, Nhà cung cấp phải có thể để lấy khoá tài khoản liên kết với Người 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à Âm thanh chuyển đổi Người tìm kiếm, Nhà cung cấp sẽ 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 của khoá tài khoản để đưa một trong các khoá sau đây vào mẫu sử dụng:

  1. 0b00000100
    Bạn chưa dùng khoá tài khoản này.
    Đâ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 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 chính của tài khoản về trạng thái kết nối hiện tại, có thể là không thiết bị đã kết nối hoặc thiết bị được kết nối không phải là Người tìm kiếm công cụ chuyển đổi â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à trường hiện tại thiết bị thông minh nào được liên kết với khoá tài khoản này.

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

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

Tin nhắn

Khi được kết nối, Người tìm kiếm và Nhà cung cấp có thể sử dụng Luồng tin nhắn để đồng bộ hoá Âm thanh chức năng chuyển đổi, kích hoạt nút chuyển kết nối, thiết lập và nhận nút chuyển thông báo trạng thái kết nối, v.v. Chúng tôi tạo một nhóm thông báo và các mã tin nhắn cụ thể 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 chi tiết bổ sung về từng mã thông báo được trình bày trong các phần sau.

Tên mã tin nhắn Giá trị Chỉ đa điểm Người gửi Người trả lời Mã hóa MAC Đánh bóng thành công
Xem 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
Khả năng thông báo của công cụ Chuyển đổi âm thanh 0x11 Không Cả hai Cả hai Không
Đặt trạng thái đa điểm 0x12 Người 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 Người 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 Người tìm kiếm Nhà cung cấp, qua mã 0x22 Không Không Không
Lựa chọn ưu tiên về việc chuyển đổi thông báo 0x22 Nhà cung cấp Người 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 Người tìm kiếm Nhà cung cấp Không
Chuyển trở lại 0x31 Không Người tìm kiếm Nhà cung cấp Không
Thông báo về sự kiện công tắc đa điểm 0x32 Nhà cung cấp Người tìm kiếm Không Không Không
Xem trạng thái kết nối 0x33 Người tìm kiếm Nhà cung cấp, qua mã 0x34 Không Không Không
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 Không
Thông báo cho kết nối đã khởi tạo tính năng chuyển đổi âm thanh 0x40 Không Người tìm kiếm Nhà cung cấp Không
Hiển thị khoá tài khoản đang sử dụng 0x41 Không Người tìm kiếm Nhà cung cấp Không
Gửi dữ liệu tuỳ chỉnh 0x42 Không Người tìm kiếm Nhà cung cấp Không
Đặt mục tiêu thả kết nối 0x43 Người 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 Thông báo chuyển đổi âm thanh

Để cung cấp xác thực thông báo, tất cả thông báo Chuyển đổi âm thanh có bổ sung dữ liệu được gửi từ Trình tìm kiếm đến Nhà cung cấp cần có Mã xác thực thư. Thời gian một thông báo có MAC được nhận thì thông báo đó phải được xác nhận để Người tìm kiếm biết liệu Nhà cung cấp đã thể hiện cảm xúc với tin nhắn hay chưa.

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

Bộ tám Loại dữ liệu Mô tả Giá trị
0 uint8 Xác nhận 0xFF
1 uint8 Đánh bóng thành công 0x01
2–3 uint16 Thời 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ộ tám Loại dữ liệu Mô tả Giá trị
0 uint8 Xác nhận 0xFF
1 uint8 NAK 0x02
2–3 uint16 Thời 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

Lưu ý: Nếu Nhà cung cấp là người gửi thì không bắt buộc phải sử dụng MAC.

Nhận chức năng chuyển đổi âm thanh

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

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

Bảng 4.3.1.0: Nhận chức 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 thông báo nhận chức năng chuyển đổi âm thanh , thì Trình tìm kiếm/Nhà cung cấp công tắc âm thanh sẽ phản hồi bằng một trong các yêu cầu sau cờ:

Bộ tám 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 Thời lượng dữ liệu bổ sung 20 nếu nội dung này là do Người tìm kiếm gửi
4 nếu nội dung này do Nhà cung cấp gửi
4–5 uint16 Mã phiên bản chuyển đổi âm thanh Giá trị khác 0 có 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 tăng cường bảo mật) là 0x0102.
Nếu bạn nhận được 0x0000 hoặc không có phản hồi sau 1 giây, thì 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 Trình cung cấp
Nếu cờ này do Trình tìm kiếm gửi, thì 2 byte này sẽ được bỏ qua.
thay đổi
Xem Các cờ về chức năng chuyển đổi âm thanh
8–15 Số chỉ dùng một lần của 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 bởi 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ờ chức 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 thì
  2. Bit 1: khả năng định cấu hình đa điểm

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

    • 1, nếu điểm đa điểm đang bật
    • 0, nếu không thì
  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 là đã tắt)
    • 0, nếu không thì
  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 tính năng phát hiện góc nhìn ngang được bật
    • 0, nếu không (không hỗ trợ phát hiện trên đầu hoặc phát hiện trên đầu bị vô hiệu hoá)
  6. Tất cả các bit khác được dành riêng, mặc định là 0.

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

Trên ứng dụng Tìm công tắc â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 thành Nhà cung cấp thông qua thông báo bên dưới:

Bộ tám 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 Thời lượng 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 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ề việc chuyển đổi

Người tìm kiếm công tắc âm thanh có thể điều chỉnh lựa chọn chuyển đổi ưu tiên của chế độ đa điểm và chế độ cài đặt mã đó cho Nhà cung cấp bằng thông báo dưới đây:

Bộ tám 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 Thời lượng dữ liệu bổ sung 18
4 flags Lựa chọn chuyển đổi ưu tiên thay đổi
Xem cờ lựa chọn ưu tiê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 lựa chọn ưu tiên chuyển đổi

Cờ lựa chọn ưu tiê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 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
  • Phần trên được thể hiện là "yêu cầu hồ sơ mới" so với "hồ sơ hiện đang hoạt động"
    • 0 khi không chuyển đổi
    • 1 để chuyển đổi

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

Người tìm kiếm có thể truy vấn tuỳ chọn chuyển đổi của đa điểm từ Nhà cung cấp thông qua thông báo bên dưới:

Bộ tám 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 Thời lượng dữ liệu bổ sung 0

Bảng 4.3.2.1: Nhận lựa chọn ưu tiên về việc chuyển đổi

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

Bộ tám 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 khi chuyển đổi 0x22
2–3 uint16 Thời lượng dữ liệu bổ sung 2
4 flags Đang chuyển đổi cờ lựa chọn ưu tiên thay đổi
Xem cờ lựa chọn ưu tiê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 về lựa chọn ưu tiên chuyển đổi

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

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

Bộ tám 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 Thời lượng dữ liệu bổ sung 17
4 flags Chuyển đổi cờ sự kiện nguồn âm thanh đang hoạt động thay đổi
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 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ị đã kết nối)

Đang chuyển đổi sự kiện nguồn âm thanh đang hoạt động
  • Bit 0 (MSB): 1 công tắc cho 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 trên công tắc sang thiết bị sau khi chuyển, 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 cho Người 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ông hoạt động) PLAY thì Nhà cung cấp phải bỏ qua cờ này.
  • Bit 2: 1 từ chối SCO trên thiết bị tắt, 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.
  • Bit 4 – 7: dành riêng.

Người 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 nên có thể để Nhà cung cấp nhận được "chuyển sang thiết bị này" thông báo khi Người tìm kiếm là đã có thiết bị đang hoạt động. Trong trường hợp này, để hiển thị đúng giao diện người dùng trên Seeker, Nhà cung cấp có thể gửi NAK kèm theo lý do lỗi, 0x4 – Hành động dự phòng trên thiết bị.

Đối với Nhà cung cấp dịch vụ âm thanh năng lượng thấp có nhiều thành viên được thiết lập, Nhà cung cấp đó phải ngắt kết nối tất cả các thành viên khỏi Trình tìm kiếm, nếu không ngăn xếp bluetooth của Người tìm kiếm sẽ kết nối lại với Nhà cung cấp.

Chuyển trở lại (thành 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ỏ việc chuyển đổi và trong 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. Người tìm kiếm sẽ sử dụng thông báo bên dưới để kích hoạt chuyển đổi trở lại:

Bộ tám Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Chuyển trở lại (thành thiết bị đã ngắt kết nối) 0x31
2–3 uint16 Thời lượng dữ liệu bổ sung 17
4 uint8 Chuyển lại sự kiện thay đổi
0x01: chuyển về lại
0x02: chuyển về 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 (để ngắt kết nối thiết bị)

Đối với Nhà cung cấp đa điểm, để thực hiện việc chuyển đổi kết nối, Nhà cung cấp có thể bỏ 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 thiết bị còn lại nguồn âm thanh. 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à thiết bị chuyển đổi âm thanh được hỗ trợ thứ 3. Người dùng đang xem video trên chiếc máy tính bảng khi có cuộc gọi đến trên điện thoại của họ. Điện thoại sẽ kích hoạt công tắc kết nối trên tai nghe cần thả để kết nối với điện thoại, trong khi cũng tạm dừng nội dung nghe nhì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ứ ba và tiếp tục phát video tạm dừng trên máy tính bảng.

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

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

Bộ tám Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Thông báo về sự kiện công tắc đa điểm
Nhà cung cấp nên gửi sự kiện này trên mọi công tắc, bao gồm cả Trình tìm kiếm công tắc sang âm thanh không phải Công tắc, Trình tìm kiếm công tắc không phải Thiết bị chuyển đổi âm thanh và Trình tìm công tắc chuyển đổi âm thanh sang Trình tìm công tắc âm thanh
0x32
2–3 uint16 Thời lượng dữ liệu bổ sung khác nhau
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 Âm thanh năng lượng thấp, việc xem xét mối liên kết giữa Loại ngữ cảnh âm thanh năng lượng thấp và Trạng thái kết nối có thể hữu ích. Ví dụ: trạng thái kết nối tương ứng với Trợ lý thoại là 0x9(Âm thanh năng lượng thấp – truyền trực tuyến cuộc gọi). Vì vậy, lý do chuyển đổi do Trợ lý thoại khởi tạo phải là 0x02.
thay đổi
0x00: Không 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ị đã kết nối khác
6 – n utf8 Tên thiết bị mục tiêu
nếu thiết bị mục tiêu là Người tìm kiếm công tắc âm thanh, sử dụng tên mà Trình tìm kiếm được gửi đến, nếu không sử dụng tên BT, nếu không có, sử dụng 2 byte cuối cùng của địa chỉ
khác nhau

Bảng 4.3.3.2: Thông báo về sự kiện công tắc đa điểm

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

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

Bộ tám 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 Thời 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 tin nhắn này, Nhà cung cấp sẽ phản hồi bằng mã tin nhắn 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ư đã định nghĩa 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, 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 liên quan đến thay đổi này. Nếu Nhà cung cấp đã được kết nối có Trình tìm kiếm chuyển đổi âm thanh và Trình tìm kiếm chuyển đổi không phải Âm thanh, nếu nút chuyển Trình tìm kiếm đang hoạt động, Nhà cung cấp cũng sẽ thông báo cho Âm thanh được kết nối chuyển đổi Người tìm kiếm về trạng thái kết nối (sử dụng khoá tài khoản của Người tìm kiếm).

Bộ tám 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 Thời lượng dữ liệu bổ sung khác nhau
4 uint8 Cờ thiết bị đang hoạt động khác nhau
0x00: thiết bị này là thiết bị thụ động và thiết bị đang hoạt động đang sử dụng cùng một khoá tài khoản
0x01: thiết bị này là thiết bị đang hoạt động
0x02: thiết bị này là thiết bị thụ động, còn thiết bị đang hoạt động không phải là thiết bị 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)

trong đó:

Thông báo cho kết nối đã bắt đầu sử dụng tính năng Chuyển đổi âm thanh

Nhà cung cấp công cụ chuyển đổi âm thanh có thể cần biết quá trình chuyển đổi kết nối có được kích hoạt hay không bằng tính năng chuyển đổi âm thanh để thể hiện nhiều phản ứng, ví dụ: tắt âm báo cho Âm thanh chuyển đổi sự kiện. Người tìm kiếm gửi thông báo để thông báo cho Nhà cung cấp rằng là kết nối được khởi tạo bằng Công tắc âm thanh.

Bộ tám Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Thông báo cho kết nối đã bắt đầu sử dụng tính năng Chuyển đổi âm thanh 0x40
2–3 uint16 Thời 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 thay đổi
0: đây là kết nối không được kích hoạt bằng Công tắc âm thanh
1: đây là kết nối được kích hoạt bằng công cụ Chuyển đổi âm thanh
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 về việc kết nối dùng tính năng chuyển đổi âm thanh

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

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

Bộ tám 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 được sử dụng 0x41
2–3 uint16 Thời lượng dữ liệu bổ sung 22
4–9 utf8 Chuỗi đang được 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 khoá tài khoản có sử dụng

Sau khi nhận được tin nhắn 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 công tắc âm thanh đang hoạt động có thể gói thông tin (ví dụ: âm thanh sử dụng) luồng âm thanh trong byte dữ liệu tuỳ chỉnh rồi gửi đến Nhà cung cấp bằng cách sử dụng thông báo bên dưới:

Bộ tám 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 Thời 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

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

Đặt đích thả kết nối

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

Bộ tám Loại dữ liệu Mô tả Giá trị
0 uint8 Chuyển đổi âm thanh 0x07
1 uint8 Đặt đích thả kết nối 0x43
2–3 uint16 Thời lượng dữ liệu bổ sung 17
4 uint8 Thiết bị mục tiêu được kết nối sẽ bị thả thay đổi
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 đích thả kết nối

Triển khai tệp đối chiếu

Xem Thư viện SDK nhúng lân cận để triển khai tệp tham chiếu