Mega Code Archive

 
Categories / Android / Hardware
 

Gps Helper

//package djrain.lib; import android.content.Context; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.location.LocationProvider; import android.os.Bundle; import android.util.Log; public class GpsHelper implements LocationListener {   private static final String tag = "LocationHelper";   private String bestProvider;   private LocationManager locationManager;   private OnLocationChangeListener listener;   private Location location;   private String gpsProvider;   static long MINTIME = 3000;   static float MINDISTANCE = 0f;   static float SPEED_UNIT = 1f;   static public interface OnLocationChangeListener   {     public void onLocationChanged(Location location);   }   void setOnLocationChangeListener(OnLocationChangeListener listener)   {     this.listener = listener;   }   public Location getLocation()   {     return location;   }   public GpsHelper(Context context)   {     locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);     findBestProvider();   }   public void findBestProvider()   {     // if(bestProvider != null &&     // locationManager.isProviderEnabled(bestProvider)){     // }     Criteria criteria = new Criteria();     bestProvider = locationManager.getBestProvider(criteria, false);     location = locationManager.getLastKnownLocation(bestProvider);     Log.e("Lilo", "find best provider:" + bestProvider);     printProvider(bestProvider);     // if(bestProvider == null)     {       gpsProvider = LocationManager.GPS_PROVIDER;       bestProvider = gpsProvider;     }   }   protected void onResume()   {     locationManager.requestLocationUpdates(bestProvider, MINTIME, MINDISTANCE, this);   }   protected void onPause()   {     locationManager.removeUpdates(this);   }      public void onLocationChanged(Location location)   {     if (location == null)       return;     printLocation(location);     this.location = location;     if (listener != null)     {       listener.onLocationChanged(location);     }   }   public void onProviderDisabled(String provider)   {     Log.e(tag, "onProviderDisabled:  " + provider);   }   public void onProviderEnabled(String provider)   {     Log.e(tag, "onProviderEnabled:  " + provider);   }   public void onStatusChanged(String provider, int status, Bundle extras)   {     Log.e(tag, "onStatusChanged:  " + provider + "," + status);   }   private void printLocation(Location location)   {     if (location == null)     {       Log.e(tag, "Location[unknown]");     }     else     {       Log.e(tag, "" + location.getSpeed());       Log.e(tag, "" + location.getLongitude());       Log.e(tag, "" + location.getLatitude());     }   }   private void printProvider(String provider)   {     LocationProvider info = locationManager.getProvider(provider);     StringBuilder builder = new StringBuilder();     builder.append("LocationProvider[").append("name=").append(info.getName()).append(",enabled=").append(locationManager.isProviderEnabled(provider)).append(",getAccuracy=")         .append(info.getAccuracy()).append(",getPowerRequirement=").append(info.getPowerRequirement()).append(",hasMonetaryCost=").append(info.hasMonetaryCost()).append(",requiresCell=")         .append(info.requiresCell()).append(",requiresNetwork=").append(info.requiresNetwork()).append(",requiresSatellite=").append(info.requiresSatellite()).append(",supportsAltitude=")         .append(info.supportsAltitude()).append(",supportsBearing=").append(info.supportsBearing()).append(",supportsSpeed=").append(info.supportsSpeed()).append("]");     Log.e(tag, builder.toString());   } }