geLocations () всегда возвращает ноль - PullRequest
0 голосов
/ 02 мая 2011

Я получаю данные из GPS или по сети. Проблема в том, что я проверил его на htc desire hd, и он отлично работал, но теперь я начал тестировать на других устройствах в местах расположения галактики Samsung.

Вот мой код для получения местоположения

  locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    currentLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    if( currentLocation == null){
    currentLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    }

Заранее спасибо

Ответы [ 2 ]

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

Вам нужно будет зарегистрировать слушателя для изменения местоположения.Добавьте что-то вроде следующего:

 LocationListener locationListener = new LocationListener() {
            public void onLocationChanged(Location location) {
                if (location != null) {
                    doSomethingWithLocation();
                }
            }

            public void onProviderDisabled(String provider) {
            }

            public void onProviderEnabled(String provider) {
            }

            public void onStatusChanged(String provider, int status, Bundle extras) {
            }
        };
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);

Убедитесь, что вы добавили правильное время ожидания при запросе обновлений местоположения.С нулем вместо 1000 у системы не будет достаточно времени, чтобы получить новое местоположение.

Вызов getLastKnownLocation () после запуска приведенного выше кода должен устранить вашу проблему с нулем.

0 голосов
/ 07 мая 2011

Есть ли у вас примеры API для работы GPS? Я предполагаю, что некоторые телефоны будут давать приложению последнее известное местоположение, только если приложение уже настроило прослушиватель местоположения и ожидало прибытия первого местоположения. Ваш код не сделает этого.

public class YourActivity extends Activity implements LocationListener {
    private LocationManager lm;
    @Override public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

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

        startLocating();
    }
    private void startLocating(){
        lm.requestLocationUpdates("gps", 0, 10, this);  
    }
    @Override
    public void onLocationChanged(Location arg0) {
        lm.removeUpdates(this);
        /*
         * put your code here
         */
    }
    @Override public void onProviderDisabled(String arg0) {}
    @Override public void onProviderEnabled(String provider) {}
    @Override public void onStatusChanged(String provider, int status, Bundle extras) {}

}
...