I am writing an app to tracking the route history on Google map. It will get current location of the device every 5 minutes and send data to server via webservice.
This code to call the BroadcastReceiver from MainActivity
manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class);
intent.putExtra("USERNAME", mUsername);
intent.putExtra("DB_NAME", mDBName);
intent.putExtra("DB_IP", mDBIP);
intent.putExtra("DB_USER", mDBUsername);
intent.putExtra("DB_PASS", mDBPassword);
intent.putExtra("SERVER_IP", mServerIP);
mAlarmIntent = PendingIntent.getActivity(getApplicationContext(), REQUEST_CODE, intent, 0);
int mTimeRepeat = 300 * 1000; // repeat every 5 minutes
int mTimeStart = 5 * 1000;
manager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + mTimeStart, mTimeRepeat, mAlarmIntent);
In BroadcastReceiver, I get the lat-long and invoke webservice.
public class AlarmReceiver extends BroadcastReceiver {
private static final String TAG = "Alarm Receiver";
private String mUsername = "";
private String mDBName = "";
private String mDBIP = "";
private String mDBUsername = "";
private String mDBPassword = "";
private String mServerIP = "";
private Context context;
private static AsyncHttpClient sClient = new AsyncHttpClient();
@Override
public void onReceive(final Context context, Intent intent) {
this.context = context;
mUsername = intent.getStringExtra("USERNAME");
mDBIP = intent.getStringExtra("DB_IP");
mDBName = intent.getStringExtra("DB_NAME");
mDBUsername = intent.getStringExtra("DB_USER");
mDBPassword = intent.getStringExtra("DB_PASS");
mServerIP = intent.getStringExtra("SERVER_IP");
if (Utility.checkLocationPermission(context)) {
try {
GPSTracker mGPS = new GPSTracker(context);
// check if GPS enabled
if (mGPS.canGetLocation()) {
double latitude = mGPS.getLatitude();
double longitude = mGPS.getLongitude();
// more code here
Problem is the app works fine when I keep my phone awake, if the phone sleep, it didn't work. I want this send data even when the phone sleep, how can I do that ?