मुझे एक दृश्य मिला है जो कई उपकरणों पर हार्डवेयर तेज है। उस दृश्य में मुझे यह जांचने में सक्षम होना चाहिए कि हार्डवेयर त्वरण का उपयोग किया जाता है या नहीं। According to Android SDK documentation, यह View.isHardwareAccelerated()
का उपयोग कर किया गया है। दिलचस्प बात यह है कि हार्डवेयर त्वरण का समर्थन करने वाले उपकरणों पर परीक्षण करते समय, यह विधि हमेशा झूठी होती है, भले ही दृश्य वास्तव में हार्डवेयर त्वरित हो रहे हों। (मैंने इसे निश्चित रूप से सत्यापित किया है) यह अधिक भ्रमित हो जाता है:View.isHardwareAccelerated() हमेशा झूठा
यदि मैं View.getLayerType()
पर कॉल करता हूं तो मुझे लगता है कि यह हमेशा View.LAYER_TYPE_NONE
पर सेट होता है। अगर मैं पर कॉल करता हूं तो मैं प्रभावी ढंग से हार्डवेयर त्वरण को अक्षम कर सकता हूं। मैं इसे View.setLayerType(View.LAYER_TYPE_HARDWARE)
या View.setLayerType(View.LAYER_TYPE_NONE)
पर कॉल करके पुनः सक्षम कर सकता हूं। View.LAYER_TYPE_NONE
हार्डवेयर त्वरण सक्षम क्यों करेगा ???
एचडब्ल्यू त्वरण का समर्थन करने वाले उपकरणों के लिए, ऐसा लगता है कि मैं जांच कर स्थिति देख सकता हूं कि View.LAYER_TYPE_SOFTWARE
सेट है या नहीं, हालांकि मुझे संदेह है कि यह विधि उन डिवाइसों पर काम नहीं करेगी जो एचडब्ल्यू त्वरण का समर्थन नहीं करते हैं। मैं जानना चाहता हूं कि मैं View.isHardwareAccelerated()
का दुरुपयोग कर रहा हूं या यदि यह बस टूटा हुआ है।
संपादित करें: मुझे लगता है कि मैं समस्या को समझने के लिए थोड़ा करीब हूं। यह सवाल भी मददगार था:
Detect Hardware Acceleration at Runtime: Android
मेरे काम कर रहे सिद्धांत नहीं करता है दृश्य अभी तक पता है कि क्या यह हार्डवेयर त्वरित या नहीं है जब यह निर्माता कहा जाता है, जो है, जहां मैं अपने जांच कर रहा हूँ है। यदि ऐसा है, तो मैं सोच रहा हूं कि मैं अपनी कक्षा में क्या ओवरराइड कर सकता हूं जो दृश्य को बढ़ाता है जो मुझे हार्डवेयर त्वरण की सफलतापूर्वक जांच करने की अनुमति देगा। मुझे संदेह है कि View.onSizeChanged(...)
काम करेगा, लेकिन मैं ऐसा कुछ उपयोग करने से बचना चाहता हूं जिसे संभावित रूप से कई बार कहा जा सकता है।
संपादित करें # 2: ऐसा लगता है कि यह था। मैंने अपनी जांच View.onSizeChanged()
में ले जाया और अब यह सही तरीके से रिपोर्ट करता है। मैं अभी भी सोच रहा हूं कि मेरे विचार में एक बेहतर जगह है कि मैं इस चेक को स्थानांतरित कर सकता हूं।
मुझे उत्सुकता है, क्या आपने LAYER_TYPE_HARDWARE, LAYER_TYPE_SOFTWARE और LAYER_TYPE_NONE के बीच का अंतर पता लगाया है? –