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çeriğin 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üşümünden kaynaklanan rahatsız edici hareket titremelerini deneyimleyebilir. Bu durum özellikle yavaş kamera hareketleri sırasında belirgindir. Bu nedenle, çerçeveyi içeriğin kare hızı hakkında bilgilendirmek ve video içeriğinin kare hızı geçişinin kesintisiz olup olmadığını belirtmek için SurfaceControl.Transaction.setFrameRate() API'yi kullanmak önemlidir.

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 senaryolar şunlardır:

  • Daha geniş dinamik aralıkla mastering işlemi uygulanan filmler ve TV dizileri için geliştiriciler, içeriğin içerik üreticinin amaçladığı şekilde doğru şekilde gösterilmesi amacıyla Film Yapımcısı modunu isteyebilir. Daha yüksek renk doğruluğuna sahip sinema profili, parlaklığı artırarak gölgelerdeki ince ayrıntıları ortaya çıkarır.
  • Genellikle dar bir dinamik aralık kullanılarak mastering işlemi uygulanan ve gün ışığında izlenen canlı spor müsabakaları, renk doğruluğu yerine parlaklığa öncelik veren bir profilden yararlanabilir.
  • Oyun geliştiriciler, oyuncuların ekranlarından en iyi performansı alabilmeleri için minimum resim işleme özelliğine sahip düşük gecikmeli bir profil isteyebilir.

Sistem resmi profili seçme

Resimli profil seçmeden önce cihazın bu özelliği destekleyip desteklemediğini doğrulamanız önemlidir.

Aşağıdaki snippet'te, desteklenen tüm resim profillerini sorgulamak ve spor profili uygulamak için getAvailablePictureProfiles() işlevinin 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)
        }
    }
}

Adıyla belirli bir profili almak için getPictureProfile() simgesini 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 MediaFormat.KEY_PICTURE_PROFILE_INSTANCE kullanılarak profiller doğrudan kimliklerine göre 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"