I have a scenario, where I do get Gps coordinates on every 5 minutes. For this I am using Alarm manager. But I got sucked since yesterday as Alarm Manager triggered only once and it’s not repeating afterward.
Here is the code below
MainActivity.Class
enter code here
private void setAlarm() {
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, LocationAlarmReceiver.class);
intent.setAction("com.mhz.evs.ACTION_FETCH_LOCATION"+System.currentTimeMillis());
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_IMMUTABLE|FLAG_UPDATE_CURRENT );
long interval = AlarmManager.INTERVAL_FIFTEEN_MINUTES / 3; // 5 minutes in milliseconds
long triggerAtMillis = System.currentTimeMillis() + interval;
if (alarmManager != null) {
alarmManager.setExactAndAllowWhileIdle ( AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
}
}
LocationReceiver.Class
public class LocationAlarmReceiver extends BroadcastReceiver
{ Context context;
@Override
public void onReceive(Context context, Intent intent) {
this.context=context;
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Intent alarmIntent = new Intent(context, LocationAlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_IMMUTABLE);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.MINUTE, 1);
if (alarmManager != null) {
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 5 * 60 * 1000, pendingIntent);
}
} else {
Toast.makeText(context,"Triggered",Toast.LENGTH_SHORT).show();
Intent serviceIntent = new Intent(context, LocationService.class);
context.startService(serviceIntent);}
}
Manifest.Class
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
<uses-permission android:name="android.permission.USE_EXACT_ALARM"/>
<receiver
android:name=".Receivers.LocationAlarmReceiver" android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.mhz.evs.ACTION_FETCH_LOCATION"/>
</intent-filter>
</receiver>
<service android:name=".Services.LocationService" android:exported="true" android:enabled="true"/>
Code is working fine for one time only but its not repeating again on every 5 minutes. If someone faced the exact issue and resolved it could guide me would be a great help.