Android में ऐसे एपीआई शामिल हैं जिनकी मदद से, ऐप्लिकेशन काम करने वाले हार्डवेयर पर डिसप्ले की सेटिंग में बदलाव कर सकते हैं. Android TV OS पर, ऐप्लिकेशन इस सुविधा का फ़ायदा उठाकर यह पक्का कर सकते हैं कि कॉन्टेंट सबसे बेहतर फ़ॉर्मैट में दिखे. इसके लिए, वे कॉन्टेंट देखने के बेहतरीन अनुभव के लिए, फ़्रेम रेट और कलर प्रोफ़ाइल को मैच करते हैं.
डिसप्ले और कॉन्टेंट की फ़्रेम दर एक बराबर सेट करें
जब किसी वीडियो का फ़्रेम रेट, डिसप्ले के रीफ़्रेश रेट से मेल नहीं खाता है, तो उपयोगकर्ताओं को फ़्रेम रेट के बदलाव की वजह से, मॉशन जडर आर्टफ़ैक्ट का अप्रिय अनुभव मिल सकता है. यह खास तौर पर, धीमी गति से पैन किए गए शॉट के दौरान दिखता है. इस वजह से, कॉन्टेंट के फ़्रेम रेट के बारे में फ़्रेमवर्क को सूचना देने और यह बताने के लिए कि वीडियो कॉन्टेंट, बिना किसी रुकावट के फ़्रेम रेट स्विच करने की ज़रूरी शर्तें पूरी करता है या नहीं, SurfaceControl.Transaction.setFrameRate()
एपीआई का इस्तेमाल करना ज़रूरी है.
ज़्यादा जानकारी के लिए, फ़्रेम रेट की गाइड पढ़ें.
पसंदीदा फ़ोटो प्रोफ़ाइलों को मैच करना
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"