Ekran ayarlarını yapma

Android, uygulamaların desteklenen donanımlarda ekran ayarlarını düzenlemesine 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çeriklerin mümkün olan en iyi biçimde gösterilmesini sağlamak amacıyla bu özellikten yararlanabilir.

İçerik kare hızıyla 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üştürme işleminden kaynaklanan hoş olmayan hareket titremesi artefaktları yaşayabilir. Bu durum, özellikle yavaş kaydırma çekimlerinde belirgindir. Bu nedenle, çerçeve hızını çerçeveye bildirmek ve video içeriğinin sorunsuz olmayan bir çerçeve hızı geçişine uygun olup olmadığını belirtmek için SurfaceControl.Transaction.setFrameRate() API'sini kullanmak önemlidir.

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

Tercih edilen resim profillerini eşleştirme

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

Örnek senaryolar:

  • Daha geniş bir dinamik aralıkla ustalaşmış filmler ve TV dizileri için geliştiriciler, içeriklerin yapımcının amaçladığı şekilde doğru bir şekilde gösterilmesi amacıyla Filmmaker Modu'nu isteyebilir. Daha fazla renk doğruluğu sunan sinema profili, parlaklığı artırmak için gölgelerdeki ince ayrıntıları ortaya çıkarır.
  • Genellikle dar bir dinamik aralıkla ustalaşılmış ve gün ışığında izlenen canlı spor etkinlikleri, renk doğruluğundan ziyade parlaklığa öncelik veren bir profilden yararlanabilir.
  • Oyun geliştiriciler, oyuncuların ekranlarından en iyi performansı alabilmeleri için minimum görüntü işleme ile düşük gecikme süreli profil isteyebilir.

Sistem resmi 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() öğesinin 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 MediaCodec'e sağlanabilir.

Desteklenen profiller cihaza göre değişebilir ancak 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"