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. EskiSTREAM_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.