Mega Code Archive

 
Categories / Android / Hardware
 

Location service and LocationManager

package app.Test; import java.util.List; import android.app.Activity; 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.widget.TextView; public class appTest extends Activity implements LocationListener {   private static final String[] A = { "n/a", "fine", "coarse" };   private static final String[] P = { "n/a", "low", "medium", "high" };   private static final String[] S = { "out of service","temporarily unavailable", "available" };   private LocationManager mgr;   private TextView output;   private String best;   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     mgr = (LocationManager) getSystemService(LOCATION_SERVICE);     output = (TextView) findViewById(R.id.output);     log("Location providers:");     List<String> providers = mgr.getAllProviders();     for (String provider : providers) {       dumpProvider(provider);     }     Criteria criteria = new Criteria();     best = mgr.getBestProvider(criteria, true);     log("\nBest provider is: " + best);     Location location = mgr.getLastKnownLocation(best);     dumpLocation(location);   }   @Override   protected void onResume() {     super.onResume();     mgr.requestLocationUpdates(best, 15000, 1, this);   }   @Override   protected void onPause() {     super.onPause();     mgr.removeUpdates(this);   }   public void onLocationChanged(Location location) {     dumpLocation(location);   }   public void onProviderDisabled(String provider) {     log("\nProvider disabled: " + provider);   }   public void onProviderEnabled(String provider) {     log("\nProvider enabled: " + provider);   }   public void onStatusChanged(String provider, int status, Bundle extras) {     log("\nProvider status changed: " + provider + ", status=" + S[status]         + ", extras=" + extras);   }   private void log(String string) {     output.append(string + "\n");   }   private void dumpProvider(String provider) {     LocationProvider info = mgr.getProvider(provider);     StringBuilder builder = new StringBuilder();     builder.append("LocationProvider[").append("name=")         .append(info.getName()).append(",enabled=")         .append(mgr.isProviderEnabled(provider))         .append(",getAccuracy=").append(A[info.getAccuracy()])         .append(",getPowerRequirement=")         .append(P[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(builder.toString());   }   private void dumpLocation(Location location) {     if (location == null)       log("\nLocation[unknown]");     else       log("\n" + location.toString());   } } //main.xml <?xml version="1.0" encoding="utf-8"?> <ScrollView    xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent">    <TextView       android:id="@+id/output"       android:layout_width="fill_parent"       android:layout_height="wrap_content" /> </ScrollView>