Android में ऐसे एपीआई शामिल हैं जिनकी मदद से, ऐप्लिकेशन उन डिवाइसों पर डिसप्ले की सेटिंग में बदलाव कर सकते हैं जिन पर ये एपीआई काम करते हैं. Android TV OS पर, ऐप्लिकेशन इस सुविधा का फ़ायदा उठा सकते हैं. इससे यह पक्का किया जा सकता है कि कॉन्टेंट सबसे अच्छे फ़ॉर्मैट में दिखे. इसके लिए, फ़्रेमरेट और कलर प्रोफ़ाइल को मैच किया जाता है, ताकि देखने का अनुभव बेहतर हो.
डिसप्ले और कॉन्टेंट की फ़्रेम दर एक बराबर सेट करें
जब किसी वीडियो का फ़्रेमरेट, डिसप्ले के रीफ़्रेश रेट से मेल नहीं खाता है, तो फ़्रेमरेट बदलने की वजह से उपयोगकर्ताओं को मोशन जडर आर्टफ़ैक्ट दिख सकते हैं. यह समस्या, धीरे-धीरे पैन किए जाने वाले शॉट में खास तौर पर दिखती है. इसलिए, Surface.setFrameRate() API का इस्तेमाल करके, फ़्रेमवर्क को कॉन्टेंट के फ़्रेम रेट के बारे में सूचना दें. साथ ही, यह बताएं कि वीडियो कॉन्टेंट, बिना रुकावट के फ़्रेम रेट बदलने की सुविधा के लिए ज़रूरी शर्तें पूरी करता है या नहीं.
ज़्यादा जानकारी के लिए, फ़्रेम रेट गाइड पढ़ें.
पसंदीदा फ़ोटो प्रोफ़ाइलों से मैच करना
Android 16 में MediaQuality API की मदद से, डेवलपर को पिक्चर प्रोफ़ाइलों को कंट्रोल करने की सुविधा मिलती है.
इसके कुछ उदाहरण यहां दिए गए हैं:
- ज़्यादा डाइनैमिक रेंज वाली फ़िल्मों और टीवी सीरीज़ के लिए, डेवलपर फ़िल्ममेकर मोड का अनुरोध कर सकते हैं. इससे कॉन्टेंट को ठीक उसी तरह से दिखाया जा सकेगा जैसा कि क्रिएटर ने दिखाया था. सिनेमा प्रोफ़ाइल में रंगों को ज़्यादा सटीक तरीके से दिखाया जाता है. इससे रोशनी बढ़ाने के लिए, परछाइयों में मौजूद बारीकियां दिखती हैं.
- खेल-कूद के इवेंट अक्सर कम डाइनैमिक रेंज में रिकॉर्ड किए जाते हैं और इन्हें दिन के उजाले में देखा जाता है. इसलिए, इन्हें ऐसी प्रोफ़ाइल से फ़ायदा मिल सकता है जिसमें रंग की सटीक जानकारी के बजाय चमक को प्राथमिकता दी जाती है.
- गेम डेवलपर, कम लेटेंसी वाली प्रोफ़ाइल का अनुरोध कर सकते हैं. इसमें इमेज प्रोसेसिंग कम से कम होती है, ताकि खिलाड़ियों को डिसप्ले से बेहतर परफ़ॉर्मेंस मिल सके.
सिस्टम की किसी फ़ोटो को प्रोफ़ाइल के तौर पर चुनना
पिक्चर प्रोफ़ाइल चुनने से पहले, यह पुष्टि करना ज़रूरी है कि डिवाइस पर यह सुविधा काम करती हो.
यहां दिए गए स्निपेट में, getAvailablePictureProfiles() का इस्तेमाल करके, सभी फ़ोटो प्रोफ़ाइलों के बारे में क्वेरी करने और स्पोर्ट्स प्रोफ़ाइल लागू करने का तरीका बताया गया है:
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)
}
}
}
नाम के हिसाब से कोई प्रोफ़ाइल पाने के लिए, getPictureProfile() का इस्तेमाल करें:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA) {
val profile = mediaQualityManager.getPictureProfile(
PictureProfile.TYPE_SYSTEM, NAME_SPORTS, null)
}
अगर आपको यह क्वेरी करने की ज़रूरत नहीं है कि कोई प्रोफ़ाइल उपलब्ध है या नहीं, तो MediaFormat.KEY_PICTURE_PROFILE_INSTANCE का इस्तेमाल करके, प्रोफ़ाइल को सीधे तौर पर MediaCodec को उसके आईडी से उपलब्ध कराया जा सकता है.
डिवाइस के हिसाब से, इस्तेमाल की जा सकने वाली प्रोफ़ाइलें अलग-अलग हो सकती हैं. हालांकि, यहां दिए गए सिस्टम प्रोफ़ाइल आईडी से मिलान किया जा सकता है:
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"