আমি আমার নিজের প্রকল্পে এই সমস্যাটি প্রোগ্রাম করেছিলাম। নীচে কোড আমি ব্যবহার করছি
AlarmManager.ELAPSED_REALTIME_WAKEUP
একটি নির্দিষ্ট সময়ে অ্যালার্ম সেট করতে। ভেরিয়েবল 'ইন্টেন্টনাম' এই অ্যালার্মটি রিসিভার করতে ইন্টেন্টফিল্টারে ব্যবহৃত হয়। কারণ আমি এই ধরণের অনেক অ্যালার্ম ফায়ার করছি। যখন আমি সমস্ত অ্যালার্ম বাতিল করি। আমি বাতিল পদ্ধতি ব্যবহার। নীচে দেওয়া
// এলার্ম রাখা এবং যখন প্রয়োজন বাতিল করতে
public static ArrayList<String> alarmIntens = new ArrayList<String>();
//
public static String setAlarm(int hour, int minutes, long repeatInterval,
final Context c) {
Time nowTime = new Time();
nowTime.setToNow();
Time startTime = new Time(nowTime);
startTime.hour = hour;
startTime.minute = minutes;
long spanToStart = TimeUtils.spanInMillis(nowTime, startTime);
intentName = "AlarmBroadcast_" + nowTime.toString();
Intent intent = new Intent(intentName);
alarmIntens.add(intentName);
PendingIntent pi = PendingIntent.getBroadcast(c, alarms++, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) c
.getSystemService(Context.ALARM_SERVICE);
long elapsedRealTime = SystemClock.elapsedRealtime();
Time t1 = new Time();
t1.set(elapsedRealTime);
t1.second=0;
elapsedRealTime = t1.toMillis(true);
if (!(repeatInterval == -1))
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
elapsedRealTime + spanToStart, repeatInterval, pi);
else
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, elapsedRealTime
+ spanToStart, pi);
স্প্যান ফাংশনটি এটি যেখানে:
public static long spanInMillis(Time startTime, Time endTime) {
long diff = endTime.toMillis(true) - startTime.toMillis(true);
if (diff >= 0)
return diff;
else
return AlarmManager.INTERVAL_DAY - Math.abs(diff);
}
অ্যালার্ম বাতিল ফাংশন এটি।
public static void cancel(Context c) {
AlarmManager am = (AlarmManager) c
.getSystemService(Context.ALARM_SERVICE);
for (Iterator<String> iterator = alarmIntens.iterator(); iterator
.hasNext();) {
String intentName = (String) iterator.next();
Intent intent = new Intent(intentName);
PendingIntent pi = PendingIntent.getBroadcast(c, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
am.cancel(pi);
iterator.remove();
}
}