android - अलार्म प्रबंधक एंड्रॉइड में सही समय पर अलार्म को ट्रिगर नहीं करता




calendar alarmmanager android-pendingintent android-alarms (2)

मैं निम्न के रूप में कैलेंडर वर्ग का उपयोग कर अलार्म को निर्धारित किया है

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY,1);
cal.getTimeInMillis();  
cal.set(Calendar.MINUTE,05);
long TriggerMillis = cal.getTimeInMillis();

AlarmManager aManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);      
aManager.set(AlarmManager.RTC_WAKEUP, TriggerMillis,pIntent);

जहां पिंटेंट एक अलार्म ट्रिगर होने पर आगे बढ़ने का एक लंबित उद्देश्य है।

घटना कुछ सेकंड के विलंब से ट्रिगर करता है। क्या इस कार्य के लिए कैलेंडर वर्ग का उपयोग करने में कोई भी समस्या है कोई सुझाव?

TIA ..


Answers

आपके पास दो समस्याएं हैं:

  1. यह एक सेवा के साथ एक _WAKEUP अलार्म सीधे उपयोग करने के लिए विश्वसनीय नहीं है केवल विश्वसनीय पैटर्न में शामिल हैं WakefulBroadcastReceiver , मेरी WakefulIntentService , या उन पंक्तियों के साथ कुछ, जहां PendingIntent BroadcastReceiver PendingIntent होगा

  2. यदि आपका android:targetSdkVersion 19 या अधिक है, और आप एक API स्तर 19+ डिवाइस पर चल रहे हैं, तो set() अयोग्य है। आदर्श रूप से, आप अपने अलार्म इवेंट के पावर हिट को कम करने के लिए, इसे अयोग्य, या शायद setWindow() का उपयोग करने की अनुमति दे सकते हैं। यदि यह बिल्कुल सटीक क्षण में हो, तो आपको setExact() का उपयोग करने की आवश्यकता होगी। setWindow() और setExact() एपीआई स्तर 19 के लिए नया होने के बाद से, setWindow() द्वारा पुराने उपकरणों पर set() करने के लिए आपको वापस गिरने की आवश्यकता होगी। Build.VERSION.SDK_INT और तदनुसार शाखाएं।


इसके अलावा आप वाई-फाई एडाप्टर के मैक पते पर विचार कर सकते हैं। इस प्रकार पुनः प्राप्त किया गया:

WifiManager wm = (WifiManager)Ctxt.getSystemService(Context.WIFI_SERVICE);
return wm.getConnectionInfo().getMacAddress();

मैनिफेस्ट में android.permission.ACCESS_WIFI_STATE अनुमति की आवश्यकता है।

वाई-फाई कनेक्ट नहीं होने पर भी उपलब्ध होने की सूचना दी गई। यदि उपर्युक्त उत्तर से जो इसे अपने कई उपकरणों पर आज़माता है, तो यह अच्छा होगा।

कुछ उपकरणों पर, यह वाई-फाई बंद होने पर उपलब्ध नहीं है।

नोट: एंड्रॉइड 6.x से, यह लगातार नकली मैक पता देता है: 02:00:00:00:00:00





android calendar alarmmanager android-pendingintent android-alarms