2016-03-24 9 views
0

У меня проблема с моим Android-приложением. Я хочу получать уведомления о местоположении и написал следующий код:Android LocationManager всегда возвращает ту же старую позицию

OnCreate:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 

    requestPermission(); 
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 0, this); 
     // Define the criteria how to select the location provider -> use 
     // default 
     Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

     if (location != null) { 
      onLocationChanged(location); 
     } 
    } 

} 

onLocationChanged:

@Override 
public void onLocationChanged(Location location) { 

    if (mMap != null) { 
     setMoveToLocation(location, mMap.getCameraPosition().zoom); 
    } 

} 

И в setMoveToLocation

private void setMoveToLocation(Location location, float zoom) { 
    // Add a marker at given location and move the camera 
    int lat = (int) (location.getLatitude()); 
    int lng = (int) (location.getLongitude()); 
    Log.i("Location", "Lat: " + lat + ", Long: " + lng + " Time: " + location.getTime()); 
    LatLng pos = new LatLng(lat, lng); 
    mMap.addMarker(new MarkerOptions().position(pos).title("Your position")); 
    Log.i("Zoom", "Zoom: " + zoom); 
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(pos, zoom)); 
} 

Смотрите вывод: Log output

Это всегда одно и то же неправильное положение, я не нахожусь в 51,7! GPS определенно отключен, я получаю соответствующее уведомление и другие приложения, такие как Карты Google или Здесь работают правильно. Я использую Huawei Honor 7 с Android 6.0.

Любые идеи?

Спасибо заранее, Plebo

ответ

1

Вы бросаете широту и долготу Int:

int lat = (int) (location.getLatitude()); 
int lng = (int) (location.getLongitude()); 

и так широты и долготы двойной они отлиты 51 и 7 соответственно

+0

О человек , Большое спасибо!! Я действительно чересчур глупый: D – Plebo

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