Ses özellikleri

Ses çalarlar, ses sisteminin belirtilen kaynak için yönlendirme, ses düzeyi ve odaklanma kararlarını nasıl ele aldığını tanımlayan özellikleri destekler. Uygulamalar, ses oynatmaya özellikler ekleyebilir (ör. bir yayın hizmeti tarafından çalınan müzik veya yeni e-posta bildirimi) ve ardından ses kaynağı özelliklerini çerçeveye aktarabilir. Ses sistemi, karıştırma kararları almak ve uygulamaları sistemin durumu hakkında bilgilendirmek için bu özellikleri kullanır.

Android 4.4 ve önceki sürümlerde çerçeve, yalnızca ses akışı türünü kullanarak karıştırma kararları veriyordu. Ancak bu tür kararların yayın türüne göre alınması, birden fazla uygulama ve cihazda kaliteli sonuçlar elde etmek için çok sınırlayıcıydı. Örneğin, mobil cihazlarda bazı uygulamalar (ör. Google Haritalar) STREAM_MUSIC akış türüne yol tarifleri oynatıyordu. Ancak, yansıtma modundaki mobil cihazlarda (ör. Android Auto) uygulamalar yol tariflerini diğer medya akışlarıyla karıştıramaz.

Uygulamalar, Audio Attribute API'yi kullanarak ses sistemine belirli bir ses kaynağıyla ilgili ayrıntılı bilgiler sağlar. Bu bilgiler arasında kullanım (kaynağın neden çaldığı), içerik türü (kaynağın çaldığı içerik), işaretler (kaynağın nasıl çalınması gerektiği) ve bağlamlar (Android 9'da yeni) yer alır. Söz dizimi:

AudioAttributes {
    mUsage
    mContentType
    mSource
    mFlags
    mTags / mFormattedTags / mBundle    (key value pairs)
}
  • Kullanım. Kaynağın neden oynatıldığını belirtir ve yönlendirme, odaklanma ve ses seviyesi kararlarını kontrol eder.
  • İçerik türü. Kaynağın çaldığı içeriği belirtir (müzik, film, konuşma, seslendirme, bilinmiyor).
  • Bağlam. Ses HAL'ine soyutlanmış kullanım değerleri.
  • İşaretler. Kaynağın nasıl oynatılması gerektiğini belirtir. Sesli iletişim zorunluluğu (bazı ülkelerde kamera deklanşör sesleri gereklidir) ve donanım ses/video senkronizasyonu desteği içerir.

Dinamik işleme için uygulamaların film, müzik ve konuşma içeriğini ayırt etmesi gerekir. Ses seviyesi ve tepe örnek değeri gibi verilerle ilgili bilgiler de önemlidir.

Özellikleri kullanma

Kullanım, sesin neden çalındığı ve ne için kullanıldığı hakkında bilgi sağlayarak akışla ilgili bağlamı belirtir. Kullanım bilgileri, akış türünden daha açıklayıcıdır ve platformların veya yönlendirme politikalarının ses düzeyi ya da yönlendirme kararlarını hassaslaştırmasına 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 özelliği kullanım değerleri birbirini dışlar. Örnekler için USAGE_MEDIA ve USAGE_ALARM tanımlarına, istisnalar için ise AudioAttributes.Builder tanımına bakın.

İçerik türü

İçerik türü, sesin ne olduğunu tanımlar ve içeriğin genel kategorisini (ör. film, konuşma veya bip/zil sesi) ifade eder. Ses çerçevesi, ses sonrası işleme bloklarını seçerek yapılandırmak için içerik türü bilgilerini kullanır. İçerik türünü belirtmek isteğe bağlıdır ancak içerik türü bilindiğinde tür bilgilerini eklemeniz gerekir (ör. film yayını hizmeti için CONTENT_TYPE_MOVIE, müzik çalma uygulaması için CONTENT_TYPE_MUSIC).

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

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

İşitsel özellik içerik türü değerleri birbirini dışlar. İçerik türleri hakkında ayrıntılı bilgi edinmek için ses özelliği API'sine bakın.

Bağlamlar

Android'deki her ses, sorumlu uygulama ve sesin oluşturulma nedeni ile tanımlanır. Android cihaz, sesi nasıl sunacağını belirlemek için bu bilgileri kullanır. Android 8.x ve önceki sürümlerde uygulamalar, eski akış türlerini (ör. AudioSystem.STREAM_MUSIC) veya AudioAttributes kullanarak ses oluşturma nedenini bildirebilir. Android 9'da AudioAttributes.usage değerleri, HAL düzeyinde bağlamlar olarak soyutlanır.

HAL ses bağlamları AudioAttributes kullanımı
MÜZİK MEDYA
VOICE_COMMAND USAGE_ASSISTANT
NAVIGATION ASSISTANCE_NAVIGATION_GUIDANCE
ARA VOICE_COMMUNICATION
RINGTONE NOTIFICATION_RINGTONE
BİLDİRİM BİLDİRİM
ALARM ALARM
SYSTEM_SOUND ASSISTANCE_SONIFICATION
BİLİNMİYOR BİLİNMİYOR

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

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

Bayraklar

İşaretler, ses çerçevesinin ses oynatmaya efektleri nasıl uyguladığını belirtir. Bir örnek için aşağıdaki işaretlerden birini veya daha fazlasını sağlayın:

  • FLAG_AUDIBILITY_ENFORCED. Sistemden sesin duyulabilir olmasını ister. Eski STREAM_SYSTEM_ENFORCED'ün ihtiyaçlarını gidermek için kullanın (ör. kamera deklanşör seslerini zorunlu kılma).
  • HW_AV_SYNC. Sistemden donanım A/V senkronizasyonunu destekleyen bir çıkış akışı seçmesini ister.

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

Örnek

Bu örnekte AudioAttributes.Builder, yeni bir AudioTrack örneği tarafından kullanılacak AudioAttributes değerini tanımlar:

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ştiriciler, Android 5.0 ve sonraki sürümler için uygulama oluştururken veya güncellerken ses özelliklerini kullanmalıdır. Ancak uygulamaların özelliklerden yararlanması gerekmez.Yalnızca eski akış türlerini işleyebilir veya özelliklerden haberdar olmayabilir (ör. oynattığı içerik hakkında hiçbir şey bilmeyen genel bir medya oynatıcı).

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

Uyumluluk eşlemeleri:

Android 5.0 ve sonraki sürümler 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

Desteği sonlandırılan akış türleri

Android 9, otomotiv kullanımı için aşağıdaki akış türlerinin desteğini sonlandırıyor:

  • 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 bilgi için Automotive Audio başlıklı makaleyi inceleyin.