Ses Özellikleri

Ses oynatıcılar, ses sisteminin belirtilen kaynak için yönlendirme, ses düzeyi ve odak kararlarını nasıl ele aldığını tanımlayan öznitelikleri destekler. Uygulamalar, bir ses çalmaya nitelikler ekleyebilir (bir akış hizmeti tarafından çalınan müzik veya yeni bir e-posta için bildirim gibi), ardından ses kaynağı niteliklerini, ses sisteminin miksaj kararları vermek ve uygulamaları bilgilendirmek için nitelikleri kullandığı çerçeveye iletebilir. sistemin durumu hakkında.

Android 4.4 ve önceki sürümlerde çerçeve, yalnızca ses akışı türünü kullanarak karıştırma kararları verdi. Ancak, bu tür kararları akış türüne dayandırmak, birden çok uygulama ve cihaz arasında kaliteli çıktı üretmek için çok sınırlayıcıydı. Örneğin, bir mobil cihazda, bazı uygulamalar (ör. Google Haritalar) STREAM_MUSIC akış türünde yol tarifi oynattı; ancak, projeksiyon modundaki mobil cihazlarda (yani Android Auto), uygulamalar sürüş yönlerini diğer medya akışlarıyla karıştıramaz.

Kullanılması Ses Özellik API , uygulamalar, (kaynak nasıl oynanması gerektiğini) ayrıntılı (kaynak oynuyor neden) kullanımı da dahil olmak üzere, belirli bir ses kaynağıyla ilgili bilgi, içerik türü (kaynak ne çaldığını), bayraklarıyla ses sistemi sağlamak ve bağlamlar (Android 9'da yeni). Sözdizimi:

AudioAttributes {
    mUsage
    mContentType
    mSource
    mFlags
    mTags / mFormattedTags / mBundle    (key value pairs)
}
  • Kullanımı. Kaynağın neden çaldığını belirtir ve yönlendirme, odak ve ses düzeyi kararlarını kontrol eder.
  • İçerik türü. Kaynağın ne çaldığını belirtir (müzik, film, konuşma, sonifikasyon, bilinmeyen).
  • Bağlam. Audio HAL'a özetlenen kullanım değerleri.
  • Bayraklar. Kaynağın nasıl oynatılacağını belirtir. İşitilebilirlik denetimi (bazı ülkelerde kamera deklanşör sesleri gerekir) ve donanım ses/video senkronizasyonu desteği içerir.

Dinamik işleme için uygulamalar film, müzik ve konuşma içeriği arasında ayrım yapmalıdır. Ses yüksekliği ve tepe örnek değeri gibi verilerin kendisiyle ilgili bilgiler de önemli olabilir.

Nitelikleri kullanma

Kullanım, sesin neden çalındığı ve sesin ne için kullanıldığı hakkında bilgi sağlayarak akışın kullanıldığı bağlamı belirtir. Kullanım bilgileri, bir akış türünden daha anlamlıdır ve platformların veya yönlendirme ilkelerinin hacmi veya yönlendirme kararlarını iyileştirmesine olanak tanır.

Herhangi bir örnek için aşağıdaki kullanım değerlerinden birini sağlayın:

  • 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_ANINDA
  • USAGE_NOTIFICATION_COMMUNICATION_DELAYED
  • USAGE_NOTIFICATION_EVENT
  • USAGE_ASSISTANCE_ACCESSIBILITY
  • USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
  • USAGE_ASSISTANCE_SONIFICATION
  • USAGE_GAME
  • USAGE_VIRTUAL_SOURCE
  • USAGE_ASSISTANT

Ses özniteliği kullanım değerleri birbirini dışlar. Örnekler için, bakınız USAGE_MEDIA ve USAGE_ALARM tanımları; İstisnalar için, bakınız AudioAttributes.Builder tanımı.

İçerik türü

İçerik türü, sesin ne olduğunu tanımlar ve film, konuşma veya bip/zil sesi gibi içeriğin genel kategorisini ifade eder. Ses çerçevesi, ses işleme sonrası bloklarını seçici olarak yapılandırmak için içerik türü bilgilerini kullanır. İçerik türünü besleyen isteğe iken İçerik türü kullanmak gibi, bilinen her nekadar Tür bilgileri içermelidir CONTENT_TYPE_MOVIE hizmeti veya akışı bir film için CONTENT_TYPE_MUSIC bir müzik çalma uygulaması için.

Herhangi bir örnek için aşağıdaki içerik türü değerlerinden birini sağlayın:

  • CONTENT_TYPE_UNKNOWN (varsayılan)
  • CONTENT_TYPE_MOVIE
  • CONTENT_TYPE_MUSIC
  • CONTENT_TYPE_SONIFICATION
  • CONTENT_TYPE_SPEECH

Ses özniteliği içerik türü değerleri birbirini dışlar. İçerik türleri hakkında ayrıntılı bilgi için, bkz ses nitelik API .

bağlamlar

Android'deki her ses, sorumlu uygulama ve sesi oluşturma nedeni ile tanımlanır; ve Android cihaz, sesin nasıl sunulacağını belirlemek için bu bilgileri kullanır. Android 8.x ve alt yılında Uygulamalar, eski akışı türlerini (örneğin kullanarak ses oluşturma nedenini bildirebilirsiniz AudioSystem.STREAM_MUSIC ) ya da AudioAttributes . Android 9'da, AudioAttributes.usage değerleri Bağlamlarda olarak HAL düzeyinde kısaltılır.

HAL ses bağlamları AudioAttributes kullanımı
MÜZİK MEDYA
SES KOMUTU USAGE_ASSISTANT
NAVİGASYON ASSISTANCE_NAVIGATION_GUIDANCE
ARAMA VOICE_COMMUNICATION
ZİL SESİ NOTIFICATION_RINGTONE
BİLDİRİM BİLDİRİM
ALARM ALARM
SYSTEM_SOUND ASSISTANCE_SONIFICATION
BİLİNMEYEN BİLİNMEYEN

Aşağıdakilerden birini sağlayabilmektedir CONTEXT_NUMBER herhangi örneğin değerler:

  • MUSIC_CONTEXT // Müzik çalma
  • NAVIGATION_CONTEXT // Navigasyon yönleri
  • VOICE_COMMAND_CONTEXT // Sesli komut oturumu
  • CALL_RING_CONTEXT // Sesli arama çalıyor
  • CALL_CONTEXT // Sesli arama
  • ALARM_CONTEXT // Android'den alarm sesi
  • NOTIFICATION_CONTEXT // Bildirimler
  • SYSTEM_SOUND_CONTEXT // Kullanıcı etkileşim sesleri (düğme tıklamaları vb.)

Bayraklar

Bayraklar, ses çerçevesinin efektleri ses çalmaya nasıl uygulayacağını belirtir. Bir örnek için aşağıdaki bayraklardan bir veya daha fazlasını sağlayın:

  • FLAG_AUDIBILITY_ENFORCED . Sistemden sesin duyulabilirliğini sağlamasını ister. Eski ihtiyaçlarını karşılamak üzere kullanın STREAM_SYSTEM_ENFORCED (örneğin kamera deklanşör sesleri zorlayarak gibi).
  • HW_AV_SYNC . Sistemden, donanım A/V senkronizasyonunu destekleyen bir çıkış akışı seçmesini ister.

Ses özelliği bayrakları münhasır değildir ve birleştirilebilir. Bu bayraklar hakkında ayrıntılı bilgi için bakınız ses nitelik API .

Örnek

Bu örnekte, AudioAttributes.Builder tanımlayan AudioAttributes yeni tarafından kullanılacak AudioTrack örneği:

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

uyumluluk

Uygulama geliştiricileri, Android 5.0 ve sonraki sürümleri için uygulamalar oluştururken veya güncellerken ses özelliklerini kullanmalıdır. Ancak, niteliklerden yararlanmak için uygulamalar gerekli değildir; yalnızca eski akış türlerini işleyebilir veya niteliklerden habersiz kalabilirler (yani, oynattığı içerik hakkında hiçbir şey bilmeyen genel bir medya oynatıcı).

Bu gibi durumlarda çerçeve, eski ses akışı türlerini otomatik olarak ses özelliklerine çevirerek eski cihazlar ve Android sürümleriyle geriye dönük uyumluluğu korur. Ancak çerçeve, cihazlar, üreticiler veya Android sürümleri arasında bu eşlemeyi zorunlu kılmaz veya garanti etmez.

Uyumluluk eşlemeleri:

Android 5.0 ve üstü Android 4.4 ve önceki sürümler
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

Kullanımdan kaldırılan akış türleri

Android 9, otomotiv kullanımı için aşağıdaki akış türlerini kullanımdan kaldırır:

  • STREAM_DEFAULT
  • STREAM_VOICE_CALL
  • STREAM_SYSTEM
  • STREAM_RING
  • STREAM_MUSIC
  • STREAM_ALARM
  • STREAM_NOTIFICATION
  • STREAM_BLUETOOTH_SCO
  • STREAM_SYSTEM_ENFORCED
  • STREAM_DTMF
  • STREAM_TTS
  • STREAM_ACCESSIBILITY

Daha fazla ayrıntı için bkz Otomotiv Audio .