это - locationmanager android




как получить gps-местоположение android (4)

Вы можете создать поток, который будет работать в фоновом режиме, и каждые x минут вы получите фактическую позицию, вызвав функцию, которая это делает (обратите внимание, что вы хотите создать функцию, которая получает координаты x, y, так как вы будете использовать это при нажатии кнопки также). Для кода, который вы опубликовали:

locationManager.requestUpdates(provider, minTime, minDistance, intent);

Это означает, что ваше приложение отправит запрос в gps-модуль каждые x мин для whatshouldIputhere?

Удачи, Аркде

Я пытаюсь иметь постоянный слушатель gps, который будет отправлять свое местоположение (длинные и лат-координаты) на веб-сервер каждые x минут. Нажав кнопку, он также отправит свое местоположение на веб-сервер. Я понимаю, что для получения сигнала gps вы указываете, как часто находить позицию, но как написать программу, которая может получить местоположение gps и отправлять координаты каждые x минут (даже если в фоновом режиме, когда нет, и с помощью кнопки нажмите ?

// в щелчке

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, whatshouldIputhere?, 0, this);

а также

public void onLocationChanged(Location location) {
    if (location != null) {
        double lat = location.getLatitude();
        double lng = location.getLongitude();
    }
}

Один из методов - использовать Timer и TimerTask

Timer timer = new Timer();
timer.scheduleAtFixedRate(new SendLocationTask(), 0, 60000);

class SendLocationTask extends TimerTask{
    public abstract void run(){
        // send position info here
    }
}

У меня это работает:

private void _getLocation() {
    // Get the location manager
    LocationManager locationManager = (LocationManager) 
            getSystemService(LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    String bestProvider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(bestProvider);
    try {
        lat = location.getLatitude();
        lon = location.getLongitude();
    } catch (NullPointerException e) {
        lat = -1.0;
        lon = -1.0;
    }
}

Это просто. Он получает лучший доступный провайдер и получает свою последнюю известную позицию.
Если вы хотите это только с помощью GPS, попробуйте это .

Надеюсь, поможет!

Редакция:

попробуй это:

private void _getLocation() {
    // Get the location manager
    LocationManager locationManager = (LocationManager) 
            getSystemService(LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    String bestProvider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(bestProvider);
    LocationListener loc_listener = new LocationListener() {

        public void onLocationChanged(Location l) {}

        public void onProviderEnabled(String p) {}

        public void onProviderDisabled(String p) {}

        public void onStatusChanged(String p, int status, Bundle extras) {}
    };
    locationManager
            .requestLocationUpdates(bestProvider, 0, 0, loc_listener);
    location = locationManager.getLastKnownLocation(bestProvider);
    try {
        lat = location.getLatitude();
        lon = location.getLongitude();
    } catch (NullPointerException e) {
        lat = -1.0;
        lon = -1.0;
    }
}

Этот код получает последнее известное местоположение, а затем выполняет запрос для фактического местоположения.


этот код работает для меня (api 17)

try {
    if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
            || ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED)
    {
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

    lat = location.getLatitude();
        lon = location.getLongitude();


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




gps