2011-02-15 42 views
11

के शीर्ष पर दिखाई देने वाली गतिविधि कैसे बना सकता हूं, जबकि स्क्रीन लॉक होने पर मुझे आने वाली सी 2 डीएम अधिसूचना मिल रही है। मैं स्क्रीन को जागृत करना चाहता हूं और एक गतिविधि का उपयोग कर लॉक स्क्रीन के शीर्ष पर अधिसूचना संदेश प्रदर्शित करना चाहता हूं।मैं लॉक स्क्रीन

Intent new_intent= new Intent().setClass(context, EIAlertDialog.class);   
new_intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
new_intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
context.startActivity(new_intent); 

और अधिसूचना गतिविधि के onCreate विधि के भीतर, मैं स्क्रीन को इस प्रकार है:: मैं अपने C2DM BroadcastReceiver से अधिसूचना गतिविधि के रूप में इस की शुरूआत कर रहा हूँ

PowerManager powerManager= (PowerManager)getSystemService(Context.POWER_SERVICE); 
if (!powerManager.isScreenOn()) { 
    mWakeLock= powerManager.newWakeLock(
        PowerManager.FULL_WAKE_LOCK | 
        PowerManager.ACQUIRE_CAUSES_WAKEUP, 
        "My Tag") 
    mWakeLock.acquire(); 
} 

स्क्रीन उठ जाता है, लेकिन जब तक मैं स्क्रीन अनलॉक नहीं करता तब तक अधिसूचना गतिविधि दिखाई नहीं दे रही है।

मुझे एहसास है कि मैं नीचे दिए गए कोड के साथ लॉक स्क्रीन से बच सकता हूं, लेकिन यह वांछित नहीं है। मैं चाहता हूं कि उपयोगकर्ता फोन अनलॉक करे, केवल तभी जब वह अधिसूचना को पढ़ने/जवाब देने में रूचि रखता है।

getWindow().addFlags(
    WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
    WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON 
); 
+2

ऐसा लगता है कि आप Android का उपयोग कर रहे हैं।एंड्रॉइड टैग जोड़ने के लिए एक अच्छा विचार होगा ताकि लोग आपका प्रश्न देख सकें। – f20k

+0

@ f20k, हाँ यह एंड्रॉइड है, thx –

उत्तर

0

बिजली प्रबंधक गलत है, इसका उपयोग करने के लिए झंडे का सही तरीका है।

आपके अनुरोध मुझसे विवादित ध्वनि करते हैं: आप कहते हैं कि आप लॉक स्क्रीन के शीर्ष पर गतिविधि दिखाना चाहते हैं (वास्तव में हम ऐसा नहीं करते हैं, हम लॉक स्क्रीन को छुपाते हैं ताकि गतिविधि देखी जा सके), जबकि उसी समय जब आप चाहते हैं कि उपयोगकर्ता को डिवाइस को अनलॉक करना होगा।

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

आपको अपने ऐप के लिए समझने वाली विंडो झंडे के जो भी संयोजन का उपयोग करना चाहिए। आप उनके विभिन्न संयोजनों के बीच काफी उचित व्यवहार प्राप्त कर सकते हैं। इन्हें अलार्म घड़ी, इनकमिंग कॉल यूआई इत्यादि के लिए उपयोग किया जाता है।

+0

मैं आईफोन व्यवहार की नकल करने की कोशिश कर रहा हूं। जब फोन सो जाता है, तो आने वाली अधिसूचना फोन को जगाती है और पॉपअप में अधिसूचना प्रदर्शित करती है, लेकिन फोन को अनलॉक नहीं करती है। यदि उपयोगकर्ता फोन को अनलॉक करता है, तो अधिसूचना के लिए लक्षित ऐप खोला जाता है। –

+0

इसलिए मैं चाहता हूं कि उपयोगकर्ता डिवाइस को अनलॉक करने से पहले अधिसूचना को देख सके, बस स्टेटस बार में नहीं, टोस्ट संदेश की तरह। –

1

जहां तक ​​मुझे पता है यह संभव नहीं है। ऐसा लगता है कि आप आईओएस अनुभवों को दोहराने की कोशिश कर रहे हैं। आपको एहसास होना चाहिए कि एंड्रॉइड के अपने सम्मेलन हैं और उनका उल्लंघन करना कुछ ऐसा नहीं है जो आपको हल्के ढंग से करना चाहिए।

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

भले ही यह संभव हो, आपको इससे निपटने में और अधिक समस्याएं होंगी। प्रत्येक लॉक स्क्रीन अलग होती है, निर्माता इसे अनुकूलित और कर सकते हैं ताकि आपको कोई गारंटी न हो कि फोन को अनलॉक करने के तरीके में आपकी गतिविधि नहीं मिलेगी।

0

अपनी गतिविधि में इस प्रयास करें

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 

    boolean screenOn = pm.isScreenOn();//check id screen is on 

    if(!screenOn){//if not turn it on or wkaeup the screen 

     final PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "Screen On"); 
     wl.acquire(); 
     Toast.makeText(getBaseContext(), "This is WAKEUP SCREEN", Toast.LENGTH_SHORT).show(); 
     Thread timer = new Thread(){ 
      public void run(){ 
       try { 
        sleep(5000); 
       } catch (InterruptedException e) { 
        // TODO: handle exception 
       }finally{ 
        wl.release();// release wakelock important 
       } 
      } 
     }; 
     timer.start(); 
    } 

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);//keep the activity running under lock screen.. 

आशा इस मदद करता है

+0

क्या आपको यकीन है कि यह काम करता है? –

+0

हाँ, मैं इसे अपने ऐप में उपयोग कर रहा हूं। हालांकि 'वेक लॉक' सेवा में है। –

+0

एंड्रॉइड 5 या नए पर काम नहीं करता है – trampster

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