آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

Alarm Manager Problem

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

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

دوستان عزیز من یه پروژه دارم که اطلاعات زمان رو از رو دیتابیس میخونه و سر زمانهای مناسب یه اکتویتی رو 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);
}

 

0 0
........... (9 سال پیش)
0 0
FLAG_UPDATE_RECENT (9 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
زکریا  9 سال پیش
0 0

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

 
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 سال پیش
0 0

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

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

پاسخ به سوال 
زکریا  9 سال پیش
0 0

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



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