Ses oynatıcıları, ses sisteminin belirtilen kaynak için yönlendirme, ses seviyesi ve odak kararlarını nasıl ele aldığını tanımlayan nitelikleri destekler. Uygulamalar, ses çalma işlemine öznitelikler ekleyebilir (bir akış hizmeti tarafından çalınan müzik veya yeni bir e-posta bildirimi gibi), ardından ses kaynağı özniteliklerini, ses sisteminin miksaj kararları vermek ve uygulamaları bilgilendirmek için öznitelikleri kullandığı çerçeveye aktarabilir. Sistemin durumu hakkında.
Android 4.4 ve önceki sürümlerde çerçeve, yalnızca ses akışı türünü kullanarak miksaj kararları veriyordu. Ancak bu tür kararları akış türüne dayandırmak, birden fazla uygulama ve cihazda kaliteli çıktı üretmek için fazlasıyla sınırlayıcıydı. Örneğin, bir mobil cihazda bazı uygulamalar (ör. Google Haritalar), STREAM_MUSIC akış türünde yol tarifini oynatıyordu; ancak projeksiyon modundaki (örn. Android Auto) mobil cihazlarda uygulamalar, yol tariflerini diğer medya akışlarıyla karıştıramaz.
Audio Attribute API'yi kullanarak uygulamalar, ses sistemine belirli bir ses kaynağı hakkında kullanım (kaynağın neden oynatıldığı), içerik türü (kaynağın ne çaldığı), bayraklar (kaynağın nasıl oynatılması gerektiği) dahil olmak üzere 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 oynatıldığını belirtir ve yönlendirme, odak ve ses seviyesi kararlarını kontrol eder.
- İçerik türü . Kaynağın ne çaldığını belirtir (müzik, film, konuşma, sonifikasyon, bilinmiyor).
- Bağlam . Kullanım değerleri Ses HAL'ine özetlenmiştir.
- Bayraklar . Kaynağın nasıl oynatılması gerektiğini belirtir. İşitilebilirlik uygulaması (bazı ülkelerde kamera deklanşör sesi gereklidir) ve donanım ses/video senkronizasyonu desteğini içerir.
Dinamik işleme için uygulamaların film, müzik ve konuşma içeriğini birbirinden ayırması gerekir. Ses yüksekliği ve en yüksek örnek değeri gibi verinin kendisi hakkındaki bilgiler de önemli olabilir.
Nitelikleri kullan
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 politikalarının hacmi veya 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 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 içeriğin film, konuşma veya bip/zil sesi gibi genel kategorisini ifade eder. Ses çerçevesi, ses son işleme 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, içerik türü bilindiğinde tür bilgilerini eklemelisiniz (örneğin, bir film akışı hizmeti için CONTENT_TYPE_MOVIE
veya bir müzik oynatma uygulaması için CONTENT_TYPE_MUSIC
kullanılması gibi).
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 özelliği içerik türü değerleri birbirini dışlar. İçerik türleriyle ilgili ayrıntılar 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; ve Android cihazı, sesin nasıl sunulacağını belirlemek için bu bilgiyi kullanır. Android 8.x ve önceki sürümlerde uygulamalar, eski akış türlerini (örn. AudioSystem.STREAM_MUSIC
) veya AudioAttributes
kullanarak ses oluşturma nedenini bildirebilir. Android 9'da AudioAttributes.usage
değerleri HAL düzeyinde Contexts olarak soyutlanı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İ | BİLDİRİ |
ALARM | ALARM |
SYSTEM_SOUND | ASSISTANCE_SONIFICATION |
BİLİNMEYEN | BİLİNMEYEN |
Herhangi bir örnek için aşağıdaki CONTEXT_NUMBER
değerlerden birini sağlayabilirsiniz:
- MUSIC_CONTEXT // Müzik çalma
- NAVIGATION_CONTEXT // Gezinme yönleri
- VOICE_COMMAND_CONTEXT // Sesli komut oturumu
- CALL_RING_CONTEXT // Sesli çağrı ç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 oynatımına 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 duyulabilirliğini sağlamasını ister. EskiSTREAM_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 işaretlerle ilgili ayrıntılar için ses özniteliği API'sine bakın.
Örnek
Bu örnekte AudioAttributes.Builder
, yeni bir AudioTrack
örneği tarafından kullanılacak AudioAttributes
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ştiricileri, Android 5.0 ve üzeri için uygulamalar oluştururken veya güncellerken ses niteliklerini kullanmalıdır. Ancak başvuruların niteliklerden faydalanması zorunlu değildir; yalnızca eski akış türlerini işleyebilirler veya özniteliklerden habersiz kalabilirler (örneğin, yürüttüğü 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 dönüştürerek eski cihazlarla 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 veya garanti etmez.
Uyumluluk eşlemeleri:
Android 5.0 ve üzeri | Android 4.4 ve öncesi |
---|---|
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ına yönelik aşağıdaki akış türlerini kullanımdan kaldırmaktadı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 .