Thuộc tính âm thanh

Trình phát âm thanh hỗ trợ các thuộc tính giúp xác định cách hệ thống âm thanh xử lý định tuyến, âm lượng và tiêu điểm cho nguồn được chỉ định. Đơn đăng ký có thể đính kèm các thuộc tính vào bản phát âm thanh (chẳng hạn như nhạc do dịch vụ phát trực tuyến hoặc thông báo cho một email mới), sau đó chuyển âm thanh các thuộc tính nguồn cho khung, trong đó hệ thống âm thanh sử dụng các thuộc tính đó để đưa ra các quyết định kết hợp và thông báo cho ứng dụng về trạng thái của hệ thống.

Trong Android 4.4 trở xuống, khung này đưa ra các quyết định kết hợp chỉ sử dụng loại luồng âm thanh. Tuy nhiên, việc quyết định như vậy đối với loại sự kiện phát trực tiếp cũng quá hạn chế tạo ra đầu ra chất lượng trên nhiều ứng dụng và thiết bị. Ví dụ: trên thiết bị di động, một số ứng dụng (ví dụ: Google Maps) được phát chỉ đường lái xe trên loại luồng STREAM_MUSIC; tuy nhiên, trên thiết bị di động ở chế độ chiếu (ví dụ: Android Auto), các ứng dụng không thể kết hợp chế độ lái xe với các luồng nội dung nghe nhìn khác.

Sử dụng Âm thanh API thuộc tính, các ứng dụng cung cấp cho hệ thống âm thanh thông tin chi tiết thông tin về một nguồn âm thanh cụ thể, bao gồm cả thông tin về mức sử dụng (lý do nguồn đó là đang phát), loại nội dung (nguồn đang phát gì), cờ (cách nguồn đang phát) sẽ được phát) và ngữ cảnh (tính năng mới trong Android 9). Cú pháp:

AudioAttributes {
    mUsage
    mContentType
    mSource
    mFlags
    mTags / mFormattedTags / mBundle    (key value pairs)
}
  • Mục đích sử dụng. Chỉ định lý do phát nội dung nguồn và các nút điều khiển các quyết định về định tuyến, trọng tâm và số lượng.
  • Loại nội dung. Chỉ định nội dung nguồn đang phát (nhạc, phim, lời nói, truyền âm thanh, không xác định).
  • Ngữ cảnh. Các giá trị sử dụng được rút gọn thành HAL âm thanh.
  • Cờ. Chỉ định cách phát nguồn. Bao gồm tính năng hỗ trợ thực thi khả năng nghe (bắt buộc phải có âm thanh màn trập của camera trong một số quốc gia) và đồng bộ hoá âm thanh/video phần cứng.

Để xử lý động, các ứng dụng phải phân biệt giữa phim, nhạc, và lời nói. Thông tin về chính dữ liệu đó cũng có thể quan trọng, chẳng hạn như độ lớn và giá trị mẫu cao nhất.

Sử dụng thuộc tính

Cách sử dụng này chỉ định ngữ cảnh mà luồng được sử dụng, cung cấp thông tin về lý do phát âm thanh và mục đích sử dụng âm thanh đó. Thông tin sử dụng có ý nghĩa hơn so với loại luồng và cho phép các nền tảng hoặc định tuyến chính sách để tinh chỉnh quyết định khối lượng hoặc định tuyến.

Cung cấp một trong các giá trị sử dụng sau đây cho mọi trường hợp:

  • SỬ DỤNG_KHÔNG_XÁC ĐỊNH
  • Hàm USAGE_MEDIA
  • GIAO_DIỆN_KHOẢNH_THƯỚC_MUA
  • Hàm USAGE_VOICE_COMMUULATION_SIGNALLING
  • GIÁ_CÔNG_GIA_SỬ DỤNG
  • SỬ DỤNG_THÔNG BÁO
  • USAGE_Thông báo_TELEPHONY_RATETONE
  • YÊU CẦU USAGE_RATIO_COMMUINATION_REQUEST
  • USAGE_INFORMATION_COMMUINATION_INSTANT
  • USAGE_RATIO_COMMUINATION_ORGANIZATION
  • SỰ KIỆN USAGE_),
  • Hàm USAGE_ASSISTANCE_ACCESSIBILITY
  • USAGE_ASSISTANCE_NAVIGATION_ hướng dẫn
  • Hàm USAGE_ASSISTANCE_SONIFICATION
  • USAGE_GAME
  • USAGE_VIRTUAL_SOURCE
  • Hàm USAGE_ASSISTANT

Các giá trị sử dụng thuộc tính âm thanh loại trừ lẫn nhau. Ví dụ: tham khảo USAGE_MEDIAUSAGE_ALARM định nghĩa; đối với các trường hợp ngoại lệ, hãy tham khảo AudioAttributes.Builder định nghĩa.

Loại nội dung

Loại nội dung xác định âm thanh là gì và thể hiện danh mục chung của nội dung như phim, bài phát biểu hoặc tiếng bíp/nhạc chuông. Khung âm thanh sử dụng thông tin loại nội dung để định cấu hình chọn lọc hậu xử lý âm thanh chặn. Mặc dù việc cung cấp loại nội dung là không bắt buộc nhưng bạn nên đưa vào loại bất cứ khi nào xác định được loại nội dung, chẳng hạn như sử dụng CONTENT_TYPE_MOVIE cho dịch vụ xem phim trực tuyến hoặc CONTENT_TYPE_MUSIC đối với ứng dụng phát nhạc.

Cung cấp một trong các giá trị loại nội dung sau đây cho mọi trường hợp:

  • CONTENT_TYPE_UNKNOWN (mặc định)
  • CONTENT_TYPE_MOVIE
  • CONTENT_TYPE_MUSIC
  • CONTENT_TYPE_SONIFICATION
  • CONTENT_TYPE_SPEECH

Các giá trị loại nội dung của thuộc tính âm thanh loại trừ lẫn nhau. Để biết thông tin chi tiết về các loại nội dung, tham chiếu đến âm thanh API [thuộc tính].

Ngữ cảnh

Mỗi âm thanh trong Android được xác định theo ứng dụng chịu trách nhiệm và lý do để tạo ra âm thanh; và thiết bị Android sử dụng thông tin này để xác định cách trình bày âm thanh. Trong Android 8.x trở xuống, các ứng dụng có thể báo cáo lý do tạo âm thanh bằng cách sử dụng các loại luồng cũ (ví dụ: AudioSystem.STREAM_MUSIC) hoặc AudioAttributes. Trong Android 9, AudioAttributes.usage giá trị được tóm tắt ở cấp HAL dưới dạng Ngữ cảnh.

Ngữ cảnh âm thanh HAL Sử dụng AudioAttributes
ÂM NHẠC NỘI DUNG NGHE NHÌN
LỆNH_NÓI_TRONG Hàm USAGE_ASSISTANT
ĐIỀU HƯỚNG ASSISTANCE_NAVIGATION_ hướng dẫn
GỌI GIAO_TRUNG_GIỚI_TIẾNG
NHẪN THÔNG_ BÁO _ TỔNG HỢP
THÔNG BÁO THÔNG BÁO
BÁO THỨC BÁO THỨC
HỆ THỐNG HỖ TRỢ_SONIFICATION
UNKNOWN (KHÔNG XÁC ĐỊNH) UNKNOWN (KHÔNG XÁC ĐỊNH)

Bạn có thể cung cấp một trong các giá trị CONTEXT_NUMBER sau cho bất kỳ thực thể:

  • MUSIC_CONTEXT // Phát nhạc
  • NAVIGATION_CONTEXT // Chỉ đường điều hướng
  • VOICE_####_CONTEXT // Phiên lệnh thoại
  • CALL_AVERAGE_CONTEXT // Cuộc gọi thoại đang đổ chuông
  • CALL_CONTEXT // Cuộc gọi thoại
  • ALARM_CONTEXT // Âm thanh báo thức từ Android
  • INFORMATION_CONTEXT // Thông báo
  • SYSTEM_ÂM_CONTEXT // Âm thanh khi người dùng tương tác (nhấp vào nút, v.v.)

Cờ

Cờ chỉ định cách khung âm thanh áp dụng hiệu ứng cho việc phát âm thanh. Hãy cung cấp ít nhất một cờ sau đây cho một thực thể:

  • FLAG_AUDIBILITY_ENFORCED. Yêu cầu hệ thống để đảm bảo khả năng nghe của âm thanh. Dùng để giải quyết nhu cầu về quyền cũ STREAM_SYSTEM_ENFORCED (chẳng hạn như buộc phát âm thanh màn trập của máy ảnh).
  • HW_AV_SYNC. Yêu cầu hệ thống chọn một luồng đầu ra có hỗ trợ đồng bộ hoá A/V phần cứng.

Cờ thuộc tính âm thanh là không độc quyền và có thể kết hợp với nhau. Để biết thông tin chi tiết về những cờ này, hãy tham khảo âm thanh API [thuộc tính].

Ví dụ

Trong ví dụ này, AudioAttributes.Builder xác định AudioAttributes dành cho AudioTrack mới thực thể:

AudioTrack myTrack = new AudioTrack(
  new AudioAttributes.Builder()
 .setUsage(AudioAttributes.USAGE_MEDIA)
    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
    .build(),
  myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);

Khả năng tương thích

Nhà phát triển ứng dụng nên sử dụng các thuộc tính âm thanh khi tạo hoặc cập nhật dành cho Android 5.0 trở lên. Tuy nhiên, các ứng dụng không được bắt buộc để tận dụng các thuộc tính; họ có thể xử lý các loại sự kiện phát trực tiếp cũ chỉ hoặc không nhận ra các thuộc tính (ví dụ: một trình phát nội dung đa phương tiện chung chung không bất kỳ thông tin gì về nội dung video đang phát).

Trong những trường hợp như vậy, khung này sẽ duy trì khả năng tương thích ngược với thiết bị và bản phát hành Android bằng cách tự động dịch luồng âm thanh cũ cho các thuộc tính âm thanh. Tuy nhiên, khung này không thực thi hoặc đảm bảo việc ánh xạ này trên các thiết bị, nhà sản xuất hoặc bản phát hành Android.

Ánh xạ khả năng tương thích:

Android 5.0 trở lên Android 4.4 trở xuống
CONTENT_TYPE_SPEECH
USAGE_VOICE_COMMUNICATION
STREAM_VOICE_CALL
CONTENT_TYPE_SONIFICATION
USAGE_ASSISTANCE_SONIFICATION
STREAM_SYSTEM
CONTENT_TYPE_SONIFICATION
USAGE_NOTIFICATION_RINGTONE
STREAM_RING
CONTENT_TYPE_MUSIC
USAGE_UNKNOWN
USAGE_MEDIA
USAGE_GAME
USAGE_ASSISTANCE_ACCESSIBILITY
USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
STREAM_MUSIC
CONTENT_TYPE_SONIFICATION
USAGE_ALARM
STREAM_ALARM
CONTENT_TYPE_SONIFICATION
USAGE_NOTIFICATION
USAGE_NOTIFICATION_COMMUNICATION_REQUEST
USAGE_NOTIFICATION_COMMUNICATION_INSTANT
USAGE_NOTIFICATION_COMMUNICATION_DELAYED
USAGE_NOTIFICATION_EVENT
STREAM_NOTIFICATION
CONTENT_TYPE_SPEECH (@ẩn) STREAM_BLUETOOTH_SCO
FLAG_AUDIBILITY_ENFORCED (@ẩn) STREAM_SYSTEM_ENFORCED
CONTENT_TYPE_SONIFICATION
USAGE_VOICE_COMMUNICATION_SIGNALLING
(@ẩn) STREAM_DTMF

Các loại luồng không dùng nữa

Android 9 sẽ ngừng sử dụng các loại luồng sau cho sử dụng cho ô tô:

  • STREAM_MẶC ĐỊNH
  • STREAM_VOICE_CALL
  • STREAM_SYSTEM
  • LUÔN_BIỂU NGỮ
  • STREAM_MUSIC
  • STREAM_ALARM
  • STREAM_INFORMATION
  • STREAM_BLUETOOTH_SCO
  • STREAM_SYSTEM_ENFORCED
  • STREAM_DTMF
  • STREAM_TTS
  • KHẢ NĂNG TIẾP CẬN LUỒNG

Để biết thêm thông tin, hãy xem Âm thanh ô tô.