package com.powenko.Tutorial_MAP_GPS; import java.util.List; import java.util.Locale; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import android.content.Context; import android.location.Address; import android.location.Criteria; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.widget.TextView; public class Tutorial_MAP_GPSActivity extends MapActivity { private LocationManager mLocationManager01; private String strLocationPrivider = ""; private Location mLocation01=null; private TextView mTextView01; private GeoPoint currentGeoPoint; private int intZoomLevel = 20; @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); mTextView01 = (TextView)findViewById(R.id.myTextView1); mLocationManager01 = (LocationManager)getSystemService(Context.LOCATION_SERVICE); mLocation01 = getLocationPrivider(mLocationManager01); if(mLocation01!=null) { processLocationUpdated(mLocation01); } else { mTextView01.setText(""); } mLocationManager01.requestLocationUpdates(strLocationPrivider, 2000, 10, mLocationListener01); } public final LocationListener mLocationListener01 = new LocationListener() { @Override public void onLocationChanged(Location location){ processLocationUpdated(location); } @Override public void onProviderDisabled(String provider){ } @Override public void onProviderEnabled(String provider){ } @Override public void onStatusChanged(String provider, int status, Bundle extras){ } }; public String getAddressbyGeoPoint(GeoPoint gp) { String strReturn = ""; try { if (gp != null) { Geocoder gc = new Geocoder(Tutorial_MAP_GPSActivity.this, Locale.getDefault()); double geoLatitude = (int)gp.getLatitudeE6()/1E6; double geoLongitude = (int)gp.getLongitudeE6()/1E6; List<Address> lstAddress = gc.getFromLocation(geoLatitude, geoLongitude, 1); StringBuilder sb = new StringBuilder(); if (lstAddress.size() > 0) { Address adsLocation = lstAddress.get(0); for (int i = 0; i < adsLocation.getMaxAddressLineIndex(); i++) { sb.append(adsLocation.getAddressLine(i)).append("\n"); } sb.append(adsLocation.getLocality()).append("\n"); sb.append(adsLocation.getPostalCode()).append("\n"); sb.append(adsLocation.getCountryName()); } strReturn = sb.toString(); } } catch(Exception e) { e.printStackTrace(); } return strReturn; } public Location getLocationPrivider(LocationManager lm) { Location retLocation = null; try { Criteria mCriteria01 = new Criteria(); mCriteria01.setAccuracy(Criteria.ACCURACY_FINE); mCriteria01.setAltitudeRequired(false); mCriteria01.setBearingRequired(false); mCriteria01.setCostAllowed(true); mCriteria01.setPowerRequirement(Criteria.POWER_LOW); strLocationPrivider = lm.getBestProvider(mCriteria01, true); retLocation = lm.getLastKnownLocation(strLocationPrivider); } catch(Exception e) { mTextView01.setText(e.toString()); e.printStackTrace(); } return retLocation; } private GeoPoint getGeoByLocation(Location location) { GeoPoint gp = null; try { if (location != null) { double geoLatitude = location.getLatitude()*1E6; double geoLongitude = location.getLongitude()*1E6; gp = new GeoPoint((int) geoLatitude, (int) geoLongitude); } } catch(Exception e) { e.printStackTrace(); } return gp; } private void processLocationUpdated(Location location) { currentGeoPoint = getGeoByLocation(location); mTextView01.setText ( String.valueOf((int)currentGeoPoint.getLongitudeE6()/1E6)+"\n"+ String.valueOf((int)currentGeoPoint.getLatitudeE6()/1E6)+"\n"+ getAddressbyGeoPoint(currentGeoPoint) ); } @Override protected boolean isRouteDisplayed() { return false; } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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/myTextView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.powenko.Tutorial_MAP_GPS" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="4" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Tutorial_MAP_GPSActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <uses-library android:name="com.google.android.maps"/> </application> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <uses-permission android:name="android.permission.INTERNET"></uses-permission> </manifest>
sample code:
Tutorial_MAP_GPS