реализация широты и долготы детали в Android - PullRequest
0 голосов
/ 22 декабря 2011

Я делаю приложение, в котором мне нужно получить широту и долготу устройства, и мой код выглядит следующим образом:

mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    mlocListener = new MyLocationListener();
    mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3600, 0,  mlocListener);
    System.out.println("mlocManager"+mlocManager);
    String str = latitude + "," + longitude ;
    System.out.println("latitude"+latitude);
    System.out.println("longi:"+longitude);

}

public class MyLocationListener implements LocationListener
 {
    public void onLocationChanged(Location loc)
    {
        try 
        {
        System.out.println("............ ..............................Location changedin 11");
        latitude = loc.getLatitude();

        longitude = loc.getLongitude();
               // System.out.println("latitude"+curr_lat);

        System.out.println("longitude curr_lon");
        loc.getAccuracy();

                    }
        catch (Exception e1) {
            e1.printStackTrace();
        }

        }

    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }
    }

Но в конце я получаю широту и длину 0,0.Может ли кто-нибудь помочь мне.

1 Ответ

0 голосов
/ 22 декабря 2011

Добавьте следующие разрешения

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

Вам нужно дать время, чтобы получить информацию о местоположении, такую ​​как 10сек, 20сек и т. Д. Для этого вы можете использовать таймер.Вы можете реализовать как это.

private Location getCurrentLocation(){
// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      // Called when a new location is found by the network location provider.
        t.cancel();
        mLatitude = location.getLatitude();
        mLongitude =  location.getLongitude();
        myGeoPoint = GeoTools.makeGeoPoint(mLatitude, mLongitude);
        mapController.animateTo(myGeoPoint);

    }

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

    public void onProviderEnabled(String provider) {}

    public void onProviderDisabled(String provider) {}
  };

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
Location lastKnownLocation;
Timer t = new Timer();

    t.schedule(new TimerTask() {
                @Override
                public void run() {
                           this.cancel();
                           lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);
                           if(lastKnownLocation==null){
                                     locationProvider = LocationManager.GPS_PROVIDER;
                                     // Or use LocationManager.GPS_PROVIDER

                             lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);   
                             return lastKnownLocation;


             }

    },30000);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...