2013-01-23 27 views
10

मेरे पास एक चल रहा लाइव वॉलपेपर है और कैनवास पर परिवर्तन प्रदर्शित करने के लिए SCREEN_ON ईवेंट पर प्रतिक्रिया दें। हालांकि कुछ फोनों पर उपयोगकर्ता एक अलग लॉकस्क्रीन और होमस्क्रीन वॉलपेपर (टचविज़, कुछ एक्सपीरिया डिवाइस) सेट कर सकता है। जब उपयोगकर्ता ने लॉकस्क्रीन पर एक अलग वॉलपेपर सेट किया है तो मेरा लाइव वॉलपेपर नहीं दिखाया गया है।पता लगाएं कि अलग-अलग घर- और लॉकस्क्रीन वॉलपेपर सेट हैं

गैलेक्सी एस 3 पर मैंने WallpaperService.Engine.isVisible() का उपयोग किया और यह सही ढंग से false देता है जब उपयोगकर्ता ने एक अलग लॉकस्क्रीन वॉलपेपर सेट किया है। गैलेक्सी एस 3 मिनी पर, हालांकि, यह काम नहीं करता है, क्योंकि isVisible()true देता है कि मेरा लाइव वॉलपेपर सक्रिय लॉकस्क्रीन वॉलपेपर है या नहीं।

WallpaperManager.getWallpaperInfo() या WallpaperManager.peekDrawable(), या तो काम नहीं क्योंकि getWallpaperInfo() वर्तमान लॉकस्क्रीन वॉलपेपर की परवाह किए बिना मेरी लाइव वॉलपेपर देता है, और peekDrawable() एक वैध drawable मेरे लाइव वॉलपेपर दोनों स्क्रीन के लिए सेट कर दिया जाता है, भले ही रिटर्न है। मैंने WallpaperService.Engine.onTouchEvent(..) को सुनने की कोशिश की, लेकिन लॉकस्क्रीन से टच इवेंट मेरे लाइव वॉलपेपर से नहीं निकलते हैं, क्योंकि वे अनलॉक स्लाइडर से खपत होते हैं।

क्या यह पता लगाने का कोई और तरीका है कि मेरा लाइव वॉलपेपर वर्तमान लॉकस्क्रीन वॉलपेपर है या नहीं? मैं प्रतिबिंब-हैक, कामकाज, सबकुछ ठीक कर रहा हूं जो मुझे ऐसा करने देगा।

संपादित करें: यह भी पर गैलेक्सी नोट 2 नहीं एक्सपीरिया टी LT30p

+0

क्या आपने wallpapersService.Engine.onVisibilityChanged (..) की कोशिश की है? – StarPinkER

+0

हां, 'isVisible()' केवल 'अंतिम दृश्यता'() 'पर दिया गया अंतिम मान देता है, इसलिए वे दोनों एक ही डेटा बेस – Thrakbad

+0

पर काम करते हैं क्या आप इसे हल करना समाप्त कर चुके हैं? यदि ऐसा है, तो कुछ कोड की सराहना की जाएगी –

उत्तर

2

लॉक स्क्रीन वॉलपेपर पर काम करता है, बॉट Android के AOSP संस्करण द्वारा समर्थित नहीं है। यह सुविधा पूरी तरह से OEM (सैमसंग, सोनी, एलजी, आदि) द्वारा बनाई गई है और इस प्रकार लॉकस्क्रीन वॉलपेपर से निपटने के लिए एपीआई OEM के बीच पूरी तरह अलग हैं। इसके अलावा, कुछ OEM केवल loockscreens पर लाइव वॉलपेपर का समर्थन नहीं करते हैं जबकि अन्य करते हैं।

चूंकि वे OEM एपीआईएस जोड़े गए हैं, इसलिए आपको उन तक पहुंचने के लिए प्रतिबिंब का उपयोग करना चाहिए। हालांकि, यह एक OEM डिवाइस पर काम करेगा, लेकिन एक ही कोड अन्य OEM के उपकरणों पर काम नहीं करेगा।

+0

धन्यवाद, मुझे यह सब पता है और मैं इस पल के लिए डिवाइस-विशिष्ट हैक्स के साथ ठीक हूं। – Thrakbad