بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

Alarm Manager Problem

مدیریت گفتگو
Smkm79 9 سال پیش
آخرین تغییر: 9 سال پیش

عدم اجرا شدن آلارم در گوشی های مختلف به طور همزمان

دوستان عزیز من یه پروژه دارم که اطلاعات زمان رو از رو دیتابیس میخونه و سر زمانهای مناسب یه اکتویتی رو launch  میکنه البته ناگفته نمونه که از broadcast reciever و intent service داخل برنامه استفاده میشه مشکل اینه که در گوشی های مختلف این آلارم در زمانهای یکسانی اجرا نمیشه و بعضا تا 2 دقیقه اختلاف پیش میاد آیا غیر از استفاده از AlarmManager  راه کار مناسب تری وجود داره ؟ و یا میشه که این زمان رو دقیق تر کرد؟

این نمونه کد تنظیم Alarm

  alarmIntent = PendingIntent.getBroadcast(context, ALARM_ID, intent, PendingIntent.FLAG_CANCEL_CURRENT);

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
//lollipop_mr1 is 22, this is only 23 and above
// alarmMgr.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, then.getMillis()-G.AzanDelayTime, alarmIntent);
alarmMgr.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, then.getMillis(), alarmIntent);


} else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) {
//JB_MR2 is 18, this is only 19 and above.
//alarmMgr.setExact(AlarmManager.RTC_WAKEUP, then.getMillis()-G.AzanDelayTime, alarmIntent);
alarmMgr.setExact(AlarmManager.RTC_WAKEUP, then.getMillis(), alarmIntent);
} else {
//available since api1
//alarmMgr.set(AlarmManager.RTC_WAKEUP, then.getMillis()-G.AzanDelayTime, alarmIntent);
alarmMgr.set(AlarmManager.RTC_WAKEUP, then.getMillis(), alarmIntent);
}

 

نظرات

Smkm79 9 سال پیش
...........

پاسخ‌ها 3

زکریا 9 سال پیش

سلام از این استفاده کن ان شاء الله مشکلت برطرف بشه

 
alarmIntent = PendingIntent.getBroadcast(context, ALARM_ID, intent, PendingIntent.FLAG_CANCEL_CURRENT)

if (Build.VERSION.SDK_INT >= 21) {

am.setAlarmClock(new AlarmManager.AlarmClockInfo(then.getMillis(), alarmIntent), alarmIntent);

}else if (Build.VERSION.SDK_INT >= 19) {

am.setExact(AlarmManager.RTC_WAKEUP,then.getMillis(), alarmIntent);

}else {

am.set(AlarmManager.RTC_WAKEUP,then.getMillis(), alarmIntent);
}

نظرات

Smkm79 9 سال پیش

سلام یعنی منظرتون اینه که با استفاده تابع sealarmclock  تو ورژن های جدید اون مشکل حل میشه؟

تست میکنم ببینم چی مشه.

نظرات

زکریا 9 سال پیش

بله از api 21 و بالاتر احتمال تاخیر وجود داره برا همین از setAlarmClock استفاده کردم که مشکل برطرف شده


نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .