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 oynatır; ancak, projeksiyon modundaki mobil cihazlarda (ör. Android Auto), uygulamalar sürüş yönlerini diğer medya akışlarıyla karıştıramaz.

Audio Attribute API'sini kullanan uygulamalar, ses sistemine kullanım (kaynak neden çalıyor), içerik türü (kaynağın ne çalıyor), bayraklar (kaynağın nasıl çalınması gerektiği) dahil olmak üzere belirli bir ses kaynağı hakkında ayrıntılı bilgiler sağlar. 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/görüntü 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_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

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

İç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ü sağlamak isteğe bağlı olsa da, bir film akışı hizmeti için CONTENT_TYPE_MUSIC veya bir müzik oynatma uygulaması için CONTENT_TYPE_MOVIE kullanmak gibi içerik türü bilindiğinde tür bilgilerini eklemelisiniz.

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ürleriyle ilgili ayrıntılar için, ses özniteliği API'sine bakın.

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 önceki sürümlerde, uygulamalar eski akış türlerini (örneğin AudioSystem.STREAM_MUSIC ) veya AudioAttributes kullanarak ses oluşturma nedenini bildirebilir. Android 9'da AudioAttributes.usage değerleri HAL düzeyinde Contexts olarak özetlenir.

HAL ses bağlamları AudioAttributes kullanımı
MÜZİK MEDYA
SES KOMUTU USAGE_ASSISTANT
NAVİGASYON ASSISTANCE_NAVIGATION_GUIDANCE
ARAMAK 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

Herhangi bir örnek için aşağıdaki CONTEXT_NUMBER değerlerinden birini sağlayabilirsiniz:

  • 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 STREAM_SYSTEM_ENFORCED ihtiyaçlarını karşılamak için kullanın (kamera deklanşör seslerini zorlamak 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 bayraklarla ilgili ayrıntılar için, ses özniteliği API'sine bakın.

Örnek

Bu örnekte, AudioAttributes.Builder AudioTrack AudioAttributes

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 özniteliklerini 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 (@gizle) STREAM_BLUETOOTH_SCO
FLAG_AUDIBILITY_ENFORCED (@gizle) STREAM_SYSTEM_ENFORCED
CONTENT_TYPE_SONIFICATION
USAGE_VOICE_COMMUNICATION_SIGNALLING
(@gizle) 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 Sesi .