package com.alrubaye.mytracker; import android.app.IntentService; import android.app.Service; import android.content.Context; import android.content.Intent; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.IBinder; import android.support.annotation.Nullable; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; /** * Created by hussienalrubaye on 9/26/16. */ public class MyServie extends Service { public static boolean IsRunning=false; DatabaseReference databaseReference; public static Location location; TrackLocation trackLocation; @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); IsRunning=true; databaseReference= FirebaseDatabase.getInstance().getReference(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { GlobalInfo globalInfo= new GlobalInfo(this); globalInfo.LoadData(); trackLocation = new TrackLocation(); LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, trackLocation); databaseReference.child("Users").child(GlobalInfo.PhoneNumber). child("Updates").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if (location==null)return; databaseReference.child("Users"). child(GlobalInfo.PhoneNumber).child("Location").child("lat") .setValue( location.getLatitude()); databaseReference.child("Users"). child(GlobalInfo.PhoneNumber).child("Location").child("lag") .setValue( location.getLongitude()); DateFormat df= new SimpleDateFormat("yyyy/MM/dd HH:MM:ss"); Date date= new Date(); databaseReference.child("Users"). child(GlobalInfo.PhoneNumber).child("Location"). child("LastOnlineDate") .setValue(df.format(date).toString()); } @Override public void onCancelled(DatabaseError databaseError) { } }); return START_NOT_STICKY; } public class TrackLocation implements LocationListener { public boolean isRunning=false; public TrackLocation(){ isRunning=true; location=new Location("not defined"); location.setLatitude(0); location.setLongitude(0); } @Override public void onLocationChanged(Location location) { MyServie.location=location; } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } } }