Android menyertakan API yang memungkinkan aplikasi menyesuaikan setelan tampilan pada hardware yang didukung. Di Android TV OS, aplikasi dapat memanfaatkan hal ini untuk memastikan bahwa konten ditampilkan dalam format terbaik, dengan mencocokkan kecepatan frame dan profil warna untuk pengalaman menonton yang ideal.
Menyesuaikan kecepatan frame konten
Jika kecepatan frame video tidak cocok dengan kecepatan refresh layar,
pengguna dapat mengalami artefak judder gerakan yang tidak menyenangkan dari konversi
kecepatan frame. Hal ini sangat terlihat selama pengambilan gambar panning lambat. Oleh karena
itu, gunakan API Surface.setFrameRate untuk memberi tahu
framework tentang kecepatan frame konten dan untuk memberi sinyal apakah konten video
memenuhi syarat untuk pengalihan kecepatan
frame yang tidak lancar.
Untuk mengetahui informasi selengkapnya, baca panduan kecepatan frame.
Mencocokkan profil gambar pilihan
MediaQuality API di Android 16 memungkinkan developer mengontrol profil gambar.
Beberapa contoh skenario mencakup:
- Untuk film dan serial TV yang di-master dengan rentang dinamis yang lebih luas, developer mungkin meminta mode Filmmaker untuk menampilkan konten secara akurat seperti yang diinginkan kreator. Profil bioskop dengan akurasi warna yang lebih tinggi menonjolkan detail halus dalam bayangan untuk meningkatkan kecerahan.
- Acara olahraga live, yang sering kali di-master dengan rentang dinamis sempit dan ditonton di siang hari, dapat memanfaatkan profil yang lebih mengutamakan kecerahan daripada akurasi warna.
- Developer game dapat meminta profil latensi rendah dengan pemrosesan gambar minimal agar pemain bisa mendapatkan performa terbaik dari layar mereka.
Memilih profil gambar sistem
Sebelum memilih profil gambar, penting untuk memvalidasi terlebih dahulu bahwa perangkat mendukungnya.
Cuplikan berikut menunjukkan cara menggunakan
getAvailablePictureProfiles untuk mengkueri semua
profil gambar yang didukung dan menerapkan profil olahraga:
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) } } }
Untuk mendapatkan profil tertentu berdasarkan nama, gunakan
getPictureProfile:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA) { val profile = mediaQualityManager.getPictureProfile( PictureProfile.TYPE_SYSTEM, NAME_SPORTS, null ) }
Jika Anda tidak perlu mengkueri apakah profil tersedia, profil dapat
disediakan langsung oleh ID-nya ke MediaCodec menggunakan
MediaFormat.KEY_PICTURE_PROFILE_INSTANCE.
Meskipun profil yang didukung mungkin berbeda menurut perangkat, Anda dapat mempertimbangkan untuk mencocokkan dengan ID profil sistem yang diketahui berikut:
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"