- Can't get current location using gps
- public class atm_atmogan extends MapActivity {
- private LocationManager myLocationManager;
- private LocationListener myLocationListener;
- private MapView myMapView;
- private MapController myMapController;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.atm_atmogan);
- myMapView = (MapView)findViewById(R.id.map_view);
- myMapView.setTraffic(true);
- myMapController = myMapView.getController();
- myLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
- myLocationListener = new MyLocationListener();
- myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,myLocationListener);
- //Get the current location in start-up
- double lat = myLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER).getLatitude();
- double lot = myLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER).getLongitude();
- GeoPoint initGeoPoint = new GeoPoint((int)(lat*1E6),(int)(lot*1E6));
- myMapController.animateTo(initGeoPoint);
- myMapController.setZoom(18);
- }
- private class MyLocationListener implements LocationListener{
- public void onLocationChanged(Location loc) {
- GeoPoint myGeoPoint = new GeoPoint((int)(loc.getLatitude()*1E6),(int)(loc.getLongitude()*1E6));
- myMapController.animateTo(myGeoPoint);
- myMapController.setZoom(18);
- }
- public void onProviderDisabled(String provider) {
- }
- public void onProviderEnabled(String provider) {
- }
- public void onStatusChanged(String provider,int status, Bundle extras){
- }
- }
- @Override
- protected void onPause() {
- super.onPause();
- myLocationManager.removeUpdates(myLocationListener);
- }
- @Override
- protected void onResume() {
- super.onResume();
- myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,myLocationListener);
- }
- @Override
- protected boolean isRouteDisplayed() {
- return false;
- };
- }
- 02-08 14:31:15.481: D/dalvikvm(2292): GC freed 727 objects / 60152 bytes in 148ms
- 02-08 14:31:17.012: D/dalvikvm(2292): GC freed 143 objects / 7752 bytes in 68ms
- 02-08 14:39:10.801: W/KeyCharacterMap(2292): No keyboard for id 0
- 02-08 14:39:10.801: W/KeyCharacterMap(2292): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
- 02-08 14:39:17.081: E/ActivityThread(2292): Failed to find provider info for com.google.settings
- 02-08 14:39:17.091: E/ActivityThread(2292): Failed to find provider info for com.google.settings
- 02-08 14:39:17.112: E/ActivityThread(2292): Failed to find provider info for com.google.settings
- 02-08 14:39:17.372: D/LocationManager(2292): Constructor: service = android.location.ILocationManager$Stub$Proxy@44ebe658
- 02-08 14:39:17.683: I/MapActivity(2292): Handling network change notification:CONNECTED
- 02-08 14:39:17.683: E/MapActivity(2292): Couldn't get connection factory client
- 02-08 14:39:20.012: D/dalvikvm(2292): GC freed 5768 objects / 476800 bytes in 87ms
- 02-08 14:39:20.731: W/KeyCharacterMap(2292): No keyboard for id 0
- 02-08 14:39:20.731: W/KeyCharacterMap(2292): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
- 02-08 14:39:20.791: D/LocationManager(2292): removeUpdates: listener = tim_atm.namespace.atm_atmogan$MyLocationListener@44ec2170
- 02-08 14:39:21.172: D/dalvikvm(2292): threadid=23 wakeup: interrupted
- public class MyMapClass extends MapActivity {
- MapController mapController;
- MyPositionOverlay positionOverlay;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- MapView myMapView=(MapView)findViewById(R.id.myMapView);
- myMapView.setSatellite(true);
- myMapView.setBuiltInZoomControls(true);
- mapController=myMapView.getController();
- mapController.setZoom(17);
- positionOverlay = new MyPositionOverlay();
- List<Overlay> overlays = myMapView.getOverlays();
- overlays.add(positionOverlay);
- LocationManager locationManager;
- String context=Context.LOCATION_SERVICE;
- locationManager=(LocationManager)getSystemService(context);
- Criteria criteria = new Criteria();
- criteria.setAccuracy(Criteria.ACCURACY_FINE);
- criteria.setAltitudeRequired(false);
- criteria.setBearingRequired(false);
- criteria.setCostAllowed(true);
- criteria.setPowerRequirement(Criteria.POWER_LOW);
- String provider = locationManager.getBestProvider(criteria, true);
- Location location = locationManager.getLastKnownLocation(provider);
- final LocationListener locationListener = new LocationListener() {
- public void onLocationChanged(Location location) {
- updateWithNewLocation(location);
- }
- public void onProviderDisabled(String provider){
- updateWithNewLocation(null);
- }
- public void onProviderEnabled(String provider){ }
- public void onStatusChanged(String provider, int status,
- Bundle extras){ }
- };
- updateWithNewLocation(location);
- locationManager.requestLocationUpdates(provider, 2000, 10,
- locationListener);
- }
- private void updateWithNewLocation(Location location) {
- if(location!=null) {
- // Update the map location.
- positionOverlay.setLocation(location);
- Double geoLat = location.getLatitude()*1E6;
- Double geoLng = location.getLongitude()*1E6;
- GeoPoint point = new GeoPoint(geoLat.intValue(),
- geoLng.intValue());
- mapController.animateTo(point);
- }
- }
- @Override
- protected boolean isRouteDisplayed() {
- return true;
- }
- public class MyPositionOverlay extends Overlay {
- Location location;
- private final int mRadius = 5;
- @Override
- public void draw(Canvas canvas, MapView mapView, boolean shadow) {
- Projection projection = mapView.getProjection();
- if (shadow == false) {
- // Get the current location
- Double latitude = location.getLatitude()*1E6;
- Double longitude = location.getLongitude()*1E6;
- GeoPoint geoPoint;
- geoPoint = new GeoPoint(latitude.intValue(),longitude.intValue());
- // Convert the location to screen pixels
- Point point = new Point();
- projection.toPixels(geoPoint, point);
- RectF oval = new RectF(point.x - mRadius, point.y - mRadius,
- point.x + mRadius, point.y + mRadius);
- // Setup the paint
- Paint paint = new Paint();
- paint.setARGB(250, 255, 0, 0);
- paint.setAntiAlias(true);
- paint.setFakeBoldText(true);
- Paint backPaint = new Paint();
- backPaint.setARGB(175, 50, 50, 50);
- backPaint.setAntiAlias(true);
- RectF backRect = new RectF(point.x + 2 + mRadius,
- point.y - 3*mRadius,
- point.x + 65, point.y + mRadius);
- // Draw the marker
- canvas.drawOval(oval, paint);
- canvas.drawRoundRect(backRect, 5, 5, backPaint);
- canvas.drawText("Here I Am", point.x + 2*mRadius, point.y, paint);
- }
- super.draw(canvas, mapView, shadow);
- }
- @Override
- public boolean onTap(GeoPoint point, MapView mapView) {
- return false;
- }
- public Location getLocation() {
- return location;
- }
- public void setLocation(Location location) {
- this.location = location;
- }
- public class LocationDemo extends Activity implements LocationListener {
- private static final String TAG = "LocationDemo";
- private static final String[] S = { "Out of Service", "Temporarily Unavailable", "Available" };
- private TextView output;
- private LocationManager locationManager;
- private String bestProvider;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // Get the output UI
- output = (TextView) findViewById(R.id.output);
- // Get the location manager
- locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
- // List all providers:
- List<String> providers = locationManager.getAllProviders();
- for (String provider : providers) {
- printProvider(provider);
- }
- Criteria criteria = new Criteria();
- bestProvider = locationManager.getBestProvider(criteria, false);
- output.append("nnBEST Provider:n");
- printProvider(bestProvider);
- output.append("nnLocations (starting with last known):");
- Location location = locationManager.getLastKnownLocation(bestProvider);
- printLocation(location);
- }
- /** Register for the updates when Activity is in foreground */
- @Override
- protected void onResume() {
- super.onResume();
- locationManager.requestLocationUpdates(bestProvider, 20000, 1, this);
- }
- /** Stop the updates when Activity is paused */
- @Override
- protected void onPause() {
- super.onPause();
- locationManager.removeUpdates(this);
- }
- public void onLocationChanged(Location location) {
- printLocation(location);
- }
- public void onProviderDisabled(String provider) {
- // let okProvider be bestProvider
- // re-register for updates
- output.append("nnProvider Disabled: " + provider);
- }
- public void onProviderEnabled(String provider) {
- // is provider better than bestProvider?
- // is yes, bestProvider = provider
- output.append("nnProvider Enabled: " + provider);
- }
- public void onStatusChanged(String provider, int status, Bundle extras) {
- output.append("nnProvider Status Changed: " + provider + ", Status="
- + S[status] + ", Extras=" + extras);
- }
- private void printProvider(String provider) {
- LocationProvider info = locationManager.getProvider(provider);
- output.append(info.toString() + "nn");
- }
- private void printLocation(Location location) {
- if (location == null)
- output.append("nLocation[unknown]nn");
- else
- output.append("nn" + location.toString());
- }
- }
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />