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"