दिलचस्प पोस्ट
उद्देश्य-सी में वास्तव में क्या सुपर है? ब्राउज़र के प्रोटोकॉल संचालकों को कैसे पता चलेगा? एंड्रॉइड 6.0 मार्शमोलो (एपीआई 23) पर पदावनत हो चुके कॉन्ट्रैक्ट (इंट आईडी) निर्धारित अनुभाग हेडर के साथ UITableView चेतावनी: सीएसआरएफ टोकन प्रामाणिकता रेल को सत्यापित नहीं किया जा सकता मुख्य कार्य की वापसी मूल्य सीमा कोणीय एनजी-वर्ग अगर-अन्य अभिव्यक्ति संसाधनों से बिटमैप इमेज असाइन करें। छवि। स्रोत पर? ES6 WeakMap के वास्तविक उपयोग क्या हैं? UIImage पर एक रंग पारदर्शी बनाने के लिए कैसे? एंड्रॉइड सभी संपर्क प्राप्त करें html5 – कैनवास तत्व – एकाधिक परतें पायथन, मेटप्ललिब, सबप्लॉट: अक्ष रेंज कैसे सेट करें? अन्य बिंदु (2 डी) के बारे में एक बिंदु घूम रहा है डेक्स निष्पादित करने में असमर्थ: एकाधिक डीएक्स फ़ाइलों को परिभाषित करें

एंड्रॉइड अलार्म मैनेजर फोन नहीं चल रहा है

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

अलार्म सेट करने के लिए मेरा कोड:

Calendar alarmTime = Calendar.getInstance(); alarmTime.set(Calendar.HOUR_OF_DAY, alarm.hour); alarmTime.set(Calendar.MINUTE, alarm.minute); alarmTime.set(Calendar.SECOND, 0); if (alarmTime.before(now)) alarmTime.add(Calendar.DAY_OF_MONTH, 1); Intent intent = new Intent(ctxt, AlarmReceiver.class); intent.putExtra("alarm", alarm); PendingIntent sender = PendingIntent.getBroadcast(ctxt, alarm.id, intent, PendingIntent.FLAG_UPDATE_CURRENT); alarmManager.set(AlarmManager.RTC_WAKEUP, alarmTime.getTimeInMillis(), sender); 

मेरा प्रसारण रिसीवर:

 @Override public void onReceive(Context context, Intent intent) { try { Bundle bundle = intent.getExtras(); final Alarm alarm = (Alarm) bundle.getSerializable("alarm"); Intent newIntent; if (alarm.type.equals("regular")) { newIntent = new Intent(context, RegularAlarmActivity.class); } else if (alarm.type.equals("password")) { newIntent = new Intent(context, PasswordAlarmActivity.class); } else if (alarm.type.equals("movement")) { newIntent = new Intent(context, MovementAlarmActivity.class); } else { throw new Exception("Unknown alarm type"); } newIntent.putExtra("alarm", alarm); newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(newIntent); } catch (Exception e) { Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show(); Log.e("AlarmReceiver", Log.getStackTraceString(e)); } } 

यह कोड डिवाइस को नहीं जगाता। हालांकि, जब मैं इसे वापस फिर से चालू करता हूं, तो वे प्रदर्शित होते हैं। मुझे उन्हें स्क्रीन चालू करने की आवश्यकता है। क्या आप इस समस्या से मेरी सहायता कर सकते हैं?

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड अलार्म मैनेजर फोन नहीं चल रहा है"

मुझे एक ऐसी ही समस्या थी और इसका समाधान WakeLocker का उपयोग करना था यह किया जाना चाहिए (प्राथमिकता रिसीवर में पहली चीज़ के रूप में), या अलार्म प्राप्त होने पर डिवाइस जाग जायेगा, लेकिन context.startActivity(newIntent) से पहले फिर से context.startActivity(newIntent)context.startActivity(newIntent) ; कहा जाता है। (मैंने ऐसा व्यवहार भी किया है जब ऐसा नहीं होता है, तो यह थोड़ा मनमानी लगता है) तो आसान और त्वरित उत्तर: इस स्रोत कोड के साथ वॉकलॉकर नामक एक नई कक्षा बनाएं:

 package mypackage.test; import android.content.Context; import android.os.PowerManager; public abstract class WakeLocker { private static PowerManager.WakeLock wakeLock; public static void acquire(Context ctx) { if (wakeLock != null) wakeLock.release(); PowerManager pm = (PowerManager) ctx.getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, MainActivity.APP_TAG); wakeLock.acquire(); } public static void release() { if (wakeLock != null) wakeLock.release(); wakeLock = null; } } 

और अपने रिसीवर कॉल में WakeLocker.acquire(context); पहली बात के रूप में अतिरिक्त: यह भी WakeLocker.release(); कॉल करने के लिए साफ हो जाएगा WakeLocker.release(); एक बार अपने अलार्म अपनी बात किया है

सबसे अधिक संभावना है, अलार्म डिवाइस जाग रहा है। हालांकि, AlarmManager प्रसारण स्क्रीन को चालू नहीं करेगा, और आपकी गतिविधि को शुरू होने से पहले उपकरण अच्छी तरह से सो सकते हैं।

आपको onReceive() को कॉल करने से पहले WakeLock को प्राप्त करने की आवश्यकता होगी, और उपयोगकर्ता को आपकी गतिविधि का जवाब देने के बाद WakeLock रिलीज करना होगा।

सेवाओं के लिए (शायद गतिविधि के लिए भी काम करता है), अपने अलार्म रीसेवर को WakefulBroadcastReceiver से WakefulBroadcastReceiver , यह आपके लिए WAKE_LOCK प्राप्त करता है, जबकि आशय संसाधित किया जा रहा है।

WakefulBroadcastReceiver डॉक्स – https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html

डिवाइस जाग मार्गदर्शिका रखें – https://developer.android.com/training/scheduling/wakelock.html