2012-04-27 23 views
7

मेरी गतिविधि आंशिक वेक लॉक के साथ चलती है क्योंकि यह लगातार ब्लूटूथ डेटा प्राप्त कर रही है। जाग लॉक इस तरह स्थापित है:आंशिक वेक लॉक के दौरान स्क्रीन को कैसे चालू करें

powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock"); 
    wakeLock.acquire(); 

जब कुछ घटनाएं होती हैं तो मैं प्रदर्शन पर जाना चाहता हूं ताकि उपयोगकर्ता स्थिति देख सकें। मैं चाहता हूं कि डिस्प्ले स्वचालित रूप से चालू हो, न कि उपयोगकर्ता कीप्रेस द्वारा। हालांकि ऐसा करने के सभी प्रयास विफल रहे हैं। जब आंशिक वेक लॉक के साथ चलते समय डिस्प्ले बंद हो जाता है, तो मेरे प्रदर्शन को वापस चालू करने का प्रयास करता है और उपयोगकर्ता को वर्तमान गतिविधि को देखने में विफल रहता है। खिड़की के लिए

PowerManager NewPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    NewPowerManager.userActivity(1, false); 

स्थापना झंडे:

Window win = getWindow(); 
    win.setFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

और यहां तक ​​कि सक्रिय करने वाले लॉक को छोड़ता है और एक और है कि स्क्रीन पर बारी चाहिए शुरू करने:

if (wakeLock != null) 
    { 
     wakeLock.release(); // release the wakelock 
    } 
PowerManager.WakeLock TempWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | 
    PowerManager.ACQUIRE_CAUSES_WAKEUP, "TempWakeLock"); 
    // tried | PowerManager.ON_AFTER_RELEASE to no avail 
    TempWakeLock.acquire(); 

मैं उपयोगकर्ता गतिविधि faking की कोशिश की है क्या ऐसा कुछ है जो मैं यहां याद कर रहा हूं? मैं एक नई गतिविधि खोलने की कोशिश नहीं कर रहा हूं, लेकिन केवल उपयोगकर्ता को अपना वर्तमान दिखा रहा हूं। क्या कोई और ऐसा करने में सक्षम है? किसी भी मदद के लिए धन्यवाद जो आप मुझे दे सकते हैं।

उत्तर

9

मैं आखिरकार एचटीसी में लांस से कुछ डेमो कोड देखने के बाद इस मुद्दे को हल करने में सक्षम था (वैसे धन्यवाद)।

रहस्य ACQUIRE_CAUSES_WAKEUP सेट के साथ अतिरिक्त पूर्ण जागने वाला लॉक बनाने के लिए प्रतीत होता है। मैं मूल आंशिक वेक लॉक जारी नहीं करता हूं, लेकिन जब मैं डिस्प्ले चालू करना चाहता हूं तो मैं नया पूर्ण जागरूक ताला बना देता हूं, मेरी चीजें करता हूं, फिर नया पूर्ण जाग लॉक छोड़ देता हूं। यह वास्तव में काम करता है!

PowerManager TempPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock TempWakeLock = TempPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | 
PowerManager.ON_AFTER_RELEASE, "TempWakeLock"); 
TempWakeLock.acquire(); 

// do the work that needs the visible display... 

// Release the newest wakelock and fall back to the old one 
TempWakeLock.release(); 

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

  • कोई संबंधित समस्या नहीं^_^