Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Thuộc tính âm thanh

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

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

Trong Android 4.4 trở về trước, khung thực hiện các quyết định trộn chỉ bằng cách sử dụng loại luồng âm thanh. Tuy nhiên, việc đưa ra các quyết định về loại luồng như vậy là 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 (tức là Google Maps) đã 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 (tức là Android Auto), các ứng dụng không thể kết hợp chỉ đường lái xe với các luồng phương tiện khác.

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

AudioAttributes {
    mUsage
    mContentType
    mSource
    mFlags
    mTags / mFormattedTags / mBundle    (key value pairs)
}
  • Cách sử dụng . Chỉ định lý do nguồn đang phát và kiểm soát các quyết định về định tuyến, tiêu điểm và âm lượng.
  • Loại nội dung . Chỉ định nội dung nguồn đang phát (nhạc, phim, lời nói, sonification, không xác định).
  • Bối cảnh . Giá trị sử dụng được tóm tắt thành Audio HAL.
  • Cờ . Chỉ định cách nguồn sẽ được phát. Bao gồm hỗ trợ thực thi kiểm soát âm thanh (yêu cầu âm thanh cửa trập máy ảnh ở một số quốc gia) và đồng bộ hóa âm thanh / video phần cứng.

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

Sử dụng các thuộc tính

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

Cung cấp một trong các giá trị sử dụng sau cho bất kỳ trường hợp nào:

  • USAGE_UNKNOWN
  • USAGE_MEDIA
  • USAGE_VOICE_COMMUNICATION
  • USAGE_VOICE_COMMUNICATION_SIGNALLING
  • USAGE_ALARM
  • USAGE_NOTIFICATION
  • USAGE_NOTIFICATION_TELEPHONY_RINGTONE
  • USAGE_NOTIFICATION_COMMUNICATION_REQUEST
  • USAGE_NOTIFICATION_COMMUNICATION_INSTANT
  • USAGE_NOTIFICATION_COMMUNICATION_DELAYED
  • USAGE_NOTIFICATION_EVENT
  • USAGE_ASSISTANCE_ACCESSIBILITY
  • USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
  • USAGE_ASSISTANCE_SONIFICATION
  • USAGE_GAME
  • USAGE_VIRTUAL_SOURCE
  • USAGE_ASSISTANT

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

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, lời thoại 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 có chọn lọc các khối xử lý hậu kỳ âm thanh. Mặc dù việc cung cấp loại nội dung là tùy chọn, nhưng bạn nên bao gồm thông tin loại bất cứ khi nào loại nội dung được biết, chẳng hạn như sử dụng CONTENT_TYPE_MOVIE cho dịch vụ phát trực tuyến phim hoặc CONTENT_TYPE_MUSIC cho ứng dụng phát lại nhạc.

Cung cấp một trong các giá trị kiểu nội dung sau cho bất kỳ trường hợp nào:

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

Giá trị loại nội dung thuộc tính âm thanh loại trừ lẫn nhau. Để biết chi tiết về các loại nội dung, hãy tham khảo API thuộc tính âm thanh .

Bối cảnh

Mỗi âm thanh trong Android được xác định bởi ứ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 kế thừa (ví dụ: AudioSystem.STREAM_MUSIC ) hoặc AudioAttributes . Trong Android 9, các giá trị AudioAttributes.usage được trừu tượng hóa ở cấp độ HAL dưới dạng Contexts .

Bối cảnh âm thanh HAL Sử dụng AudioAttributes
ÂM NHẠC PHƯƠNG TIỆN TRUYỀN THÔNG
RA LỆNH BẰNG GIỌNG NÓI USAGE_ASSISTANT
DẪN ĐƯỜNG ASSISTANCE_NAVIGATION_GUIDANCE
GỌI ÂM THANH GIAO TIẾP
NHẠC CHUÔNG CHUÔNG BÁO HIỆU
THÔNG BÁO THÔNG BÁO
BÁO THỨC BÁO THỨC
SYSTEM_SOUND ASSISTANCE_SONIFICATION
KHÔNG XÁC ĐỊNH 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ỳ trường hợp nào:

  • MUSIC_CONTEXT // Phát lại nhạc
  • NAVIGATION_CONTEXT // Chỉ đường điều hướng
  • VOICE_COMMAND_CONTEXT // Phiên lệnh thoại
  • CALL_RING_CONTEXT // Đổ chuông cuộc gọi thoại
  • CALL_CONTEXT // Cuộc gọi thoại
  • ALARM_CONTEXT // Âm thanh báo thức từ Android
  • NOTIFICATION_CONTEXT // Thông báo
  • SYSTEM_SOUND_CONTEXT // Âm thanh tương tác của người dùng (nhấp vào nút, v.v.)

Cờ

Cờ chỉ định cách khung âm thanh áp dụng các hiệu ứng cho việc phát lại âm thanh. Cung cấp một hoặc nhiều cờ sau cho một ví dụ:

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

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

Thí dụ

Trong ví dụ này, AudioAttributes.Builder xác định AudioAttributes sẽ được sử dụng bởi một phiên bản AudioTrack mới:

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

Các 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 ứng dụng cho Android 5.0 trở lên. Tuy nhiên, các ứng dụng không bắt buộc phải tận dụng các thuộc tính; chúng chỉ có thể xử lý các loại luồng kế thừa hoặc không biết về các thuộc tính (tức là trình phát đa phương tiện chung chung không biết gì về nội dung mà nó đang phát).

Trong những trường hợp như vậy, khung duy trì khả năng tương thích ngược với các thiết bị cũ hơn và các bản phát hành Android bằng cách tự động dịch các loại luồng âm thanh kế thừa sang các thuộc tính âm thanh. Tuy nhiên, khuôn khổ không thực thi hoặc đảm bảo á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ạ tương thích:

Android 5.0 trở lên Android 4.4 trở về trước
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 (@hide) STREAM_BLUETOOTH_SCO
FLAG_AUDIBILITY_ENFORCED (@hide) STREAM_SYSTEM_ENFORCED
CONTENT_TYPE_SONIFICATION
USAGE_VOICE_COMMUNICATION_SIGNALLING
(@hide) STREAM_DTMF

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

Android 9 không dùng các loại luồng sau để sử dụng trên ô tô:

  • STREAM_DEFAULT
  • STREAM_VOICE_CALL
  • STREAM_SYSTEM
  • STREAM_RING
  • NHẠC LUỒNG
  • STREAM_ALARM
  • STREAM_NOTIFICATION
  • STREAM_BLUETOOTH_SCO
  • STREAM_SYSTEM_ENFORCED
  • STREAM_DTMF
  • STREAM_TTS
  • STREAM_ACCESSIBILITY

Để biết thêm chi tiết, hãy xem Âm thanh Ô tô .