में सैमसंग उपकरणों पर काम नहीं कर रहा है। मैं एक ऐप विकसित करता हूं जो अलार्ममेनगर का उपयोग एक गुच्छा अलार्म (आमतौर पर लगभग 50) सेट करने के लिए करता है जिसे वर्ष के दौरान निश्चित समय पर निकाल दिया जाना चाहिए। यह वह कोड है जिसका उपयोग मैं कर रहा हूं क्योंकि 4.4 किटकैट ने अलार्ममेनगर को बदल दिया है।अलार्ममेनर लॉलीपॉप
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
long setDate = fireDate.getTime(); // it's a calendar date defined above
Intent intent = new Intent(LOCAL_DISPLAY_MESSAGE_ACTION);
PendingIntent pending = PendingIntent.getBroadcast(ctx,
id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
if (Build.VERSION.RELEASE.startsWith("6")) {
am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, setDate, pending);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
am.setExact(AlarmManager.RTC_WAKEUP, setDate, pending);
} else {
am.set(AlarmManager.RTC_WAKEUP, setDate, pending);
}
ऊपर दिए गए कोड के अलावा मैं मैनिफेस्ट में परिभाषित प्रसारण रिसीवर का उपयोग कर रहा हूं।
public class LocalReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
PushWakeLocker.acquire(context);
// do some stuff
PushWakeLocker.release();
}
}
अधिक जानकारी थाई मदद कर सकता है।
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="19" />
कुछ महीने पहले मैं केवल यह है कि सभी पर उनके स्थानीय सूचनाएं नहीं मिलता है सैमसंग उपकरणों (5.0 /5.1 एंड्रॉयड संस्करण) से बुरा समीक्षा हो रही किया गया है के बाद से। मेरा मतलब है, यह अलार्म को फायर नहीं कर रहा है, ऐसा लगता है कि डिवाइस इसे छोड़ देता है या जागता नहीं है।
परीक्षणों में, मुख्य रूप से सैमसंग एस 4 के साथ 5.0.1 के साथ, मुझे हमेशा समय पर अलार्म मिलता है, इसलिए यह मुझे पागल कर रहा है। एफवाईआई इस कोड ने हमेशा बहुत अच्छा काम किया है।
मैंने इसके बारे में बहुत कुछ शोध किया लेकिन दुर्भाग्य से मुझे कोई उपयोगी जानकारी नहीं मिली। ऐसा नहीं है कि वे देरी के साथ अलार्म प्राप्त करते हैं (जैसा कि मैंने कुछ धागे में पढ़ा है), यह है कि वे इसे बिल्कुल नहीं प्राप्त करते हैं। तो यह लॉलीपॉप और अलार्ममेनगर में ज्ञात मुद्दे के बारे में नहीं है।
मैं आपके समय की सराहना करता हूं और किसी भी सुझाव का स्वागत है!
"यह वह कोड है जिसका मैं उपयोग कर रहा हूं" - मैं 'Build.VERSION_CODES.M'' जांचने के लिए अपना 'if' बदल दूंगा। "मैं एक प्रसारण रिसीवर का उपयोग कर रहा हूं" - आपका 'वेक लॉक' अनावश्यक है, क्योंकि 'अलार्ममैनगर' द्वारा ट्रिगर किए जाने पर सिस्टम पर आपूर्ति किए गए 'वेक लॉक' में 'ऑनसेसिव()' कहा जाता है। हालांकि, जब तक कि "कुछ सामान न करें" केवल कुछ मिलीसेकंड हैं, आपको उस तर्क को 'इंटेंट सेवा' में ले जाना चाहिए और 'वेकफुल ब्रॉडकास्ट रिसीवर' का उपयोग करना चाहिए। इसके अलावा, सैमसंग (जैसे सोनी और अन्य) के पास अपना स्वयं का डोज़ मोड सेटअप प्री-6.0 है, इसलिए 'अलार्ममेनगर' अविश्वसनीय है जब तक कि आप कुछ डिवाइस-विशिष्ट श्वेतसूची में शामिल नहीं हो जाते। – CommonsWare