Как я могу получить текущее местоположение GPS? - PullRequest
5 голосов
/ 07 августа 2010

Я собираюсь создать в Android приложение, которое будет работать в качестве карты синхронизации для сотрудников в дороге.

В начале работы пользователь нажимает кнопку, которая будет записывать GPSместоположение и текущее время (таким образом проверяя, что он находится там, где он должен быть в данное время), и снова в конце работы он записывает время и местоположение GPS.за исключением того, что я не могу найти способ получения данных о текущем местоположении.Ближайшее, что я могу найти, это onLocationChanged, что означает, что я не могу получить стационарное считывание GPS.Я знаю, что это должно быть возможно, но не могу найти рабочий пример того, как это будет достигнуто.

Ответы [ 3 ]

3 голосов
/ 07 августа 2010

После небольшого исследования я пришёл к следующему:

public class UseGps extends Activity
{
    Button gps_button;
    TextView gps_text;
    LocationManager mlocManager;

    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        gps_button = (Button) findViewById(R.id.GPSButton);
        gps_text = (TextView) findViewById(R.id.GPSText);

        gps_button.setOnClickListener(new OnClickListener() {
            public void onClick(View viewParam) {
                gps_text.append("\n\nSearching for current location. Please hold...");
                gps_button.setEnabled(false);
                mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
                LocationListener mlocListener = new MyLocationListener();
                mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
            }
        });
    }

    /* Class My Location Listener */
    public class MyLocationListener implements LocationListener
    {
        @Override
        public void onLocationChanged(Location loc)
        {
            double lon = loc.getLatitude();
            double lat = loc.getLongitude();
            gps_text.append("\nLongitude: "+lon+" - Latitude: "+lat);
            UseGps.this.mlocManager.removeUpdates(this);
            gps_button.setEnabled(true);
        }

        @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
        }
    }
}

Это устанавливает действие с кнопкой и просмотром текста. Установите слушателя на кнопку, которая запускает менеджер местоположений.

Я установил класс MyLocationListener, который реализует LocationListener, а затем переопределяю метод onLocationChanged(), в основном сообщая ему, что первое полученное местоположение добавляется в текстовое представление, а затем удаляет местоположение менеджер.

Спасибо тем, кто помог, и я надеюсь, что это пригодится кому-то еще.

1 голос
/ 07 августа 2010

Вы должны попытаться android.location.LocationManager.getLastKnownLocation

И проверьте время возвращения Места с помощью Location.getTime(utc time).

0 голосов
/ 07 августа 2010

Запрос обновлений местоположения и создание LocationListener (см. LocationManager.requestLocationUpdates). Вы будете регулярно получать обновления с информацией о точности.

Пока вы не получите свое первое обновление, вы можете (как отправлено) использовать LocationManager.getLastLocation() и проверить его метку времени и точность.

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

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