दिलचस्प पोस्ट
छद्म यादृच्छिक संख्या जनरेटर – घातीय वितरण Request.UrlReferrer null? ASP.NET MVC 4 अनुप्रयोग कॉलिंग रिमोट वेबएपीआई वाईएक्स इंस्टॉलर का उन्नयन कैसे लागू करें? Web.xml में url- पैटर्न क्या है और सबलेट को कॉन्फ़िगर कैसे करें AngularJS – UI- राउटर – डायनेमिक दृश्य को कॉन्फ़िगर कैसे करें I ऑरेकल में अनुक्रम। एनटेवल के साथ टेबल बनाएं एसक्यूएल सर्वर में चुनिंदा बयान में गतिशील के बिना चर के साथ चर का उपयोग करें जावा में अस्थिर क्षेत्रों और सिंक्रनाइज़ किए गए ब्लॉक वाले रिश्ते से पहले – और गैर-वाष्पशील चर पर उनका असर होता है? Django गतिशील मॉडल फ़ील्ड इनकमिंग कॉल से फोन नंबर कैसे प्राप्त करें? JFreeChart MouseListener चार्ट तत्वों को हल नहीं करता है सी ++ चेतावनी: स्ट्रिंग निरंतर से 'चार *' के लिए पदावनत रूपांतरण क्या विशेष रूप से eval के खतरों (पार्स (…)) हैं? जावास्क्रिप्ट का उपयोग कर छवि के रूप में एक बाइट सरणी प्रदर्शित करना

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

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

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

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)); } } 

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

Solutions Collecting From Web of "एंड्रॉइड अलार्म मैनेजर फोन नहीं चल रहा है"

मुझे एक ऐसी ही समस्या थी और इसका समाधान 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