2014-04-14 8 views
7

प्रोग्राम से बेहतर रूप से नींद से एंड्रॉइड फोन (याद करने के लिए निलंबित) कैसे जगाया जाए? मैं किसी भी वाकेलॉक को हासिल नहीं करना चाहता, जिसका मतलब है कि फोन सीपीयू अक्षम के साथ "वास्तविक" नींद में जाता है। मुझे लगता है कि मैं किसी प्रकार की आरटीसी (वास्तविक समय घड़ी) तंत्र का उपयोग कर सकता हूं?नींद से एंड्रॉइड फोन कैसे जगाया जाए?

क्या किसी के पास कोई उदाहरण है?

धन्यवाद।

+0

जब आप इसे उठाना चाहते हैं? एक निश्चित टाइमआउट के बाद? एक निश्चित तारीख और समय पर? –

+0

क्या आपको कोई समाधान मिला? क्या आपको कोई जवाब उपयोगी लगता है? – bendaf

+0

कृपया अगर आपको अपने प्रश्न का उत्तर नीचे से एक स्वीकार करता है, या अपना प्रश्न संशोधित करता है तो मैं आपको और अधिक मदद कर सकता हूं। – bendaf

उत्तर

0

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

आप यहाँ उस के बारे में पढ़ सकते हैं: https://groups.google.com/forum/#!topic/android-developers/5--QRAPlFL0

+1

हमम ..., मैंने अलार्ममेनगर की कोशिश की और ऐसा लगता है कि फोन फोन को "असली" नींद (कोई वाकेलॉक) में नहीं जगाएगा। – jiawen

+1

नींद मोड में फ़ोन को कैसे जगाया जाए। –

+0

@jiawen AlarmManager सेट() के बजाय setAAllowWhileIdle() या setExactAndAllowWhileIdle() का उपयोग करेगा। डिवाइस सोए जाने पर भी इस तरह से सेट अलार्म ब्रैडकास्ट किया जाएगा। – Karthiksrndrn

7

आदेश गतिविधि कराने के लिए उपकरण को सक्रिय करें और एक पासवर्ड/कड़ी चोट की आवश्यकता नहीं, आप केवल कुछ ही झंडे जोड़ने की जरूरत है।

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | 
    WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
    WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, 
    WindowManager.LayoutParams.FLAG_FULLSCREEN | 
    WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
    WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

यह होगा wake up आपकी ऐप्लिकेशन गतिविधि: कि पाने के लिए, अपने कोड में शामिल हैं।

1

मैं सिर्फ एक आवेदन जो ऐसा कर सकते हैं लिखा था, यहाँ कुछ उदाहरण कोड है: पहले, मैं एक AlarmManager बना सकते हैं और एक विशेष समय के लिए अलार्म सेट:

AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR_OF_DAY, 15); 
calendar.set(Calendar.MINUTE, 30); 
calendar.set(Calendar.SECOND, 0); 
// if the time is before now then add one day to it 
if(calendar.getTimeInMillis() < System.currentTimeMillis()) 
    calendar.setTimeInMillis(calendar.getTimeInMillis()+86400000); 
manager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 0); 

मैं एक BroadcastReciever जरूरत इस प्राप्त करने के लिए अलार्म। इसके लिए मैं अपने प्रकट में डाल करने के लिए है:

<application ...> 
    <receiver android:name="hu.bendaf.example.AlarmReceiver"/> 
... 
</application> 

और मैं भी AlarmReciever वर्ग है, जो recieve पर अपने मुख्य गतिविधि शुरू होता है:

public class AlarmReceiver extends BroadcastReceiver { 
    public static final String WAKE = "Wake up"; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     //Starting MainActivity 
     Intent myAct = new Intent(context, MainActivity.class); 
     myAct.putExtra(WAKE, true); 
     myAct.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(myAct); 
    } 
} 

और मेरी गतिविधि के onCreate समारोह में मेरे पास है:

// Wake up phone if needed 
if(getIntent().hasExtra(AlarmReceiver.WAKE) && getIntent().getExtras().getBoolean(AlarmReceiver.WAKE)){ 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
         WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
         WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, 
         WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
         WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
         WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
} 

यह कोड अगले 15:30:00 (या तो यह आज या कल) पर मेरा फोन उठता है।

+0

क्या केवल स्टैंडबाय से अलार्म जागरूकता है, या निलंबन मोड से भी? – ransh

+0

जैसा कि यह उत्तर कहता है http://stackoverflow.com/a/5120225/3162918 यह नींद मोड में भी काम करने की गारंटी है। यही कारण था कि मेरे परीक्षणों ने भी पुष्टि की, अलार्म हर स्थिति में अपने फोन को ऐप जाग रहा था, सिवाय इसके कि इसे बंद कर दिया गया था। – bendaf

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