2012-08-25 9 views
10

मुझे एक दृश्य मिला है जो कई उपकरणों पर हार्डवेयर तेज है। उस दृश्य में मुझे यह जांचने में सक्षम होना चाहिए कि हार्डवेयर त्वरण का उपयोग किया जाता है या नहीं। 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() में ले जाया और अब यह सही तरीके से रिपोर्ट करता है। मैं अभी भी सोच रहा हूं कि मेरे विचार में एक बेहतर जगह है कि मैं इस चेक को स्थानांतरित कर सकता हूं।

+0

मुझे उत्सुकता है, क्या आपने LAYER_TYPE_HARDWARE, LAYER_TYPE_SOFTWARE और LAYER_TYPE_NONE के बीच का अंतर पता लगाया है? –

उत्तर

2

मैं थोड़ी देर के लिए इस पर विचार कर रहा हूं। यह देखने के लिए अच्छा लगा कि समस्या क्या थी। दस्तावेज सही ढंग से इसका वर्णन करता है लेकिन यह बहुत स्पष्ट नहीं है। "यह दिखाता है: यह सच है दृश्य एक खिड़की को जुड़ा हुआ है और खिड़की हार्डवेयर त्वरित है अगर"

0

डायने Hackborn इस पोस्ट में उल्लेख के रूप में: https://groups.google.com/forum/#!topic/android-developers/vAH0HAZg0uU

आप isHardwareAccelerated() की जाँच करनी चाहिए के बाद देखने से जुड़ा था खिड़की - उदाहरण के लिए ATAttachedToWindow() में!

संबंधित मुद्दे