Ekran ayarlarını yapma

Android, uygulamaların desteklenen donanımlarda ekran ayarlarını yapmasına olanak tanıyan API'ler içerir. Android TV OS'te uygulamalar, ideal izleme deneyimi için kare hızını ve renk profilini eşleştirerek içeriğin mümkün olan en iyi biçimde gösterilmesini sağlamak amacıyla bu özellikten yararlanabilir.

İçerik kare hızını eşleştir

Bir videonun kare hızı, ekranın yenileme hızıyla eşleşmediğinde kullanıcılar, kare hızı dönüşümünden kaynaklanan rahatsız edici hareket titremesi kusurları yaşayabilir. Bu durum özellikle yavaş kaydırma çekimlerinde belirgindir. Bu nedenle, içeriğin kare hızı hakkında çerçeveyi bilgilendirmek ve video içeriğinin kesintisiz olmayan bir kare hızı geçişi için uygun olup olmadığını bildirmek üzere Surface.setFrameRate API'yi kullanın.

Daha fazla bilgi için kare hızı kılavuzunu okuyun.

Tercih edilen resim profillerini eşleştirme

Android 16'daki MediaQuality API, geliştiricilerin resim profillerini kontrol etmesine olanak tanır.

Örnek senaryolardan bazıları şunlardır:

  • Geliştiriciler, daha geniş bir dinamik aralıkla hazırlanan filmler ve TV dizileri için içerik üreticinin amaçladığı şekilde doğru bir şekilde görüntülenmesi amacıyla Film Yapımcısı modunu isteyebilir. Daha yüksek renk doğruluğuna sahip bir sinema profili, parlaklığı artırmak için gölgelerdeki ince ayrıntıları ortaya çıkarır.
  • Genellikle dar bir dinamik aralıkla hazırlanan ve gün ışığında izlenen canlı spor etkinlikleri, renk doğruluğu yerine parlaklığı tercih eden bir profilden yararlanabilir.
  • Oyun geliştiriciler, oyuncuların ekranlarından en iyi performansı alabilmeleri için minimum görüntü işleme özelliğine sahip düşük gecikmeli bir profil isteyebilir.

Sistem resim profili seçme

Resim profili seçmeden önce cihazın bu profili desteklediğini doğrulamanız önemlidir.

Aşağıdaki snippet'te, desteklenen tüm resim profillerini sorgulamak ve spor profili uygulamak için getAvailablePictureProfiles'ın nasıl kullanılacağı gösterilmektedir:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA) {
    val mediaQualityManager: MediaQualityManager =
        context.getSystemService(MediaQualityManager::class.java)
    val profiles = mediaQualityManager.getAvailablePictureProfiles(null)
    for (profile in profiles) {
        // If we have a system sports profile, apply it to our media codec
        if (profile.profileType == PictureProfile.TYPE_SYSTEM &&
            profile.name == NAME_SPORTS
        ) {
            val bundle = Bundle().apply { 
                putParcelable(MediaFormat.KEY_PICTURE_PROFILE_INSTANCE, profile)
            }
            mediaCodec.setParameters(bundle)
        }
    }
}

Belirli bir profili ada göre almak için getPictureProfile kullanın:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA) {
    val profile = mediaQualityManager.getPictureProfile(
        PictureProfile.TYPE_SYSTEM, NAME_SPORTS, null
    )
}

Bir profilin kullanılabilir olup olmadığını sorgulamanız gerekmiyorsa profiller, MediaFormat.KEY_PICTURE_PROFILE_INSTANCE kullanılarak doğrudan kimlikleriyle bir MediaCodec'e sağlanabilir.

Desteklenen profiller cihaza göre farklılık gösterse de aşağıdaki bilinen sistem profili kimlikleriyle eşleştirme yapabilirsiniz:

const val NAME_STANDARD: String = "standard"
const val NAME_VIVID: String = "vivid"
const val NAME_SPORTS: String = "sports"
const val NAME_GAME: String = "game"
const val NAME_MOVIE: String = "movie"
const val NAME_ENERGY_SAVING: String = "energy_saving"
const val NAME_USER: String = "user"