Ses özellikleri

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