import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
 
 
 
public class GPSInfoService {
    private Context context;
    private LocationManager manager;
    SharedPreferences sp ;
    
    private  GPSInfoService(Context context){   
        this.context= context;
        manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
        sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
    }
    private static GPSInfoService mGPSService;
     
    public synchronized static GPSInfoService getInstance(Context context){
        if(mGPSService==null)
            mGPSService = new GPSInfoService(context);
        return mGPSService;
    }
     
    public void registerLocationUpdates(){
        
        
        
        Criteria criteria = new Criteria();
        
        criteria.setAccuracy(Criteria.ACCURACY_COARSE); 
        criteria.setAltitudeRequired(false); 
        criteria.setCostAllowed(true); 
        criteria.setPowerRequirement(Criteria.POWER_LOW); 
         
        
        String provider  =manager.getBestProvider(criteria, true);
         
        
        manager.requestLocationUpdates(provider, 60000, 0, getLinster());
         
    }
     
     
    public void cancleLocationUpdates(){
        manager.removeUpdates(getLinster());
         
    }
    private static MyGPSLinster myGPSLinser;
     
    private MyGPSLinster getLinster(){
        if(myGPSLinser==null)
            myGPSLinser = new MyGPSLinster();
        return myGPSLinser;
    }
     
    /**
     * 获取手机的最后一次位置 
     * @return
     */
    public String getLastPosition(){
        return sp.getString("lastlocation", "");
    }
    private class MyGPSLinster implements LocationListener{
 
        
        public void onLocationChanged(Location location) {
            
            
            
            double latitude= location.getLatitude();
            double longitude = location.getLongitude();
            String locationstr = "jing du "+ longitude + " weidu  :"+latitude;
            Editor  editor =  sp.edit();
            editor.putString("lastlocation", locationstr);
            editor.commit();
        }
        
        public void onStatusChanged(String provider, int status, Bundle extras) {
            
        }
        
        public void onProviderEnabled(String provider) {
            
             
        }
        
        public void onProviderDisabled(String provider) {
            
             
        }
    }
}