2011-06-05 3 views
0
i just need to find the current location on maps using WIFI.I used tha below code to do that. 

Мой код:Текущее местоположение на карте с помощью WIFI в Android

общественный класс LocationActivity расширяет MapActivity реализует LocationListener {

private MapView mapView; 
private LocationManager locationManager; 
private String latitude,longtitude; 

@Override 
protected boolean isRouteDisplayed() { 
    return false; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    Bundle bundle = this.getIntent().getExtras(); 
    latitude = bundle.getString("latitude"); 
    longtitude = bundle.getString("longtitude"); 
    setContentView(R.layout.locationtab); 

    mapView = (MapView) findViewById(R.id.mapview); 
    mapView.setBuiltInZoomControls(true); 
    locationIdentifier(); 

} 




private void createMyLocOverlay(Double latitude, Double longtitude) { 

    List<Overlay> mapOverlays = mapView.getOverlays(); 
    Drawable drawable = this.getResources().getDrawable(
      R.drawable.mylocation); 

    GeoPoint point = new GeoPoint((int) (latitude * 1E6), 
      (int) (longtitude * 1E6)); 
    OverlayItem overlayitem = new OverlayItem(point, null, "You are here!"); 
    MyLocationOverlay itemizedoverlay = new MyLocationOverlay(drawable, 
      this); 
    itemizedoverlay.addOverlay(overlayitem); 
    MyLocationOverlay overlayToRemove = null; 
    for (Overlay overlay : mapOverlays) { 
     if (overlay instanceof MyLocationOverlay) { 
      overlayToRemove = (MyLocationOverlay) overlay; 
     } 
    } 
    if (overlayToRemove != null) { 
     mapOverlays.remove(overlayToRemove); 
    } 
    mapOverlays.add(itemizedoverlay); 
} 

public void locationIdentifier() { 


    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    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); 

    if (location != null) { 
     createMyLocOverlay(location.getLatitude(), location.getLongitude()); 
     Toast.makeText(
       this, 
       "Latitude : " + location.getLatitude() + " : Longtitude : " 
         + location.getLongitude(), Toast.LENGTH_LONG) 
       .show(); 
    } else { 
     Toast.makeText(this, "Latitude/Longtitude not found", 
       Toast.LENGTH_LONG).show(); 
    } 
} 

@Override 
public void onLocationChanged(Location location) { 
    if (location != null) { 
     createMyLocOverlay(location.getLatitude(), location.getLongitude()); 
     Toast.makeText(
       this, 
       "LocationChanged Latitude : " + location.getLatitude() 
         + " Longtitude : " + location.getLongitude(), 
       Toast.LENGTH_LONG).show(); 
    } else { 
     Toast.makeText(this, "Location is null", Toast.LENGTH_LONG).show(); 
    } 
} 

@Override 
public void onProviderDisabled(String provider) { 
    Toast.makeText(this, "Disabled provider " + provider, Toast.LENGTH_LONG) 
      .show(); 

} 

@Override 
public void onProviderEnabled(String provider) { 
    Toast.makeText(this, "Enabled new provider " + provider, 
      Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
} 

}

Как я мог проверить его на эмуляторе ли его работать или нет.?

ответ

0

На данный момент невозможно имитировать его с помощью эмулятора, потому что он просто не поддерживает его. В качестве альтернативы вы можете поместить константу флага (например, DEBUG = false/true), а затем, если DEBUG = true, используйте постоянное местоположение, иначе используйте местоположение WIFI.

Или используйте поставщика услуг, поддерживающих IP-адрес. Что вы можете использовать в качестве альтернативы, если DEBUG = true.

Смежные вопросы