Невозможно получить широту и долготу от Android - PullRequest
0 голосов
/ 12 июля 2011

getLastKnownLocation всегда возвращает нулевое значение.Я включил Geo Fix и GPS на эмуляторе.Тем не менее, при запуске этого на эмуляторе на панели уведомлений нет сигнала gps.Могу ли я знать, есть ли ошибка в моем коде?Благодарю.

public void onCreate(Bundle savedInstanceState) {
    LocationManager location = null;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.near_layout);

    location = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.NO_REQUIREMENT);
    criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
    String bestProvider = location.getBestProvider(criteria, true);

    LocationListener ll = new mylocationlistener();


    Location loc = location.getLastKnownLocation(bestProvider);
    if(loc != null)
    {
        double latitude = loc.getLatitude();
        double longitude = loc.getLongitude();
        Toast.makeText(nearPlace.this,  " nice" + latitude, Toast.LENGTH_LONG).show();
    }else{
        Toast.makeText(nearPlace.this,  "Location not available. GPS is not enabled.", Toast.LENGTH_LONG).show();
    }
    location.requestLocationUpdates(bestProvider, 0, 0, ll);
 }

 private class mylocationlistener implements LocationListener {

     @Override
     public void onLocationChanged(Location location) {
            Toast.makeText(nearPlace.this,  " nice" + location.getLatitude(), Toast.LENGTH_LONG).show();
            nearPlaceDownloaderTask getNearPlace = new nearPlaceDownloaderTask();
            getNearPlace.execute(ANDROID_WEB_LINK + "gt.php?la=" + location.getLatitude() + "&lo=" + location.getLongitude());

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

 }

Ответы [ 2 ]

0 голосов
/ 12 июля 2011

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

criteria.setAccuracy(Criteria.NO_REQUIREMENT);

Android предпочтет использовать сетевое местоположение по GPS, потому что вас не заботит точность. Если указать точность около 20 метров, он, вероятно, автоматически вызовет GPS.

Чтобы вручную вызывать обновления местоположения GPS, переопределите bestProvider:

bestProvider = LocationManager.GPS_PROVIDER;

Вы действительно можете упростить это до двух строк кода:

LocationManager locationManager =
            (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, interval,
            precision, listener);

Не забудьте отменить регистрацию слушателя:

locationManager.removeUpdates(listener);
0 голосов
/ 12 июля 2011

Вы также можете проверить это Геофикс не работает

Также убедитесь, что в эмуляторе разрешено устанавливать макеты. Взгляните также на ответ Паулса, поэтому я спрашивал в комментариях, какой провайдер был возвращен

...