Как узнать текущее местоположение широты и долготы мобильного устройства Android? - PullRequest
2 голосов
/ 06 января 2012

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

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

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

  LocationListener mlocListener = new MyLocationListener();
  mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 11, 11, mlocListener);


   public class MyLocationListener implements LocationListener
{

  @Override
  public void onLocationChanged(Location loc)
  {

    loc.getLatitude();
    loc.getLongitude();

   Log.v("11111","Latitude :"+loc.getLatitude());
   Log.v("22222","Longitude :"+ loc.getLongitude());

    }

}

Из приведенного выше кода я не получаю текущую широту и долготу местоположения в реальном устройстве Android.

Как я могу получить текущую широту и долготу местоположения реального устройства?

пожалуйста, любое тело, помогите мне

Ответы [ 7 ]

4 голосов
/ 06 января 2012

GPS_PROVIDER не работает в связанном месте. Поэтому, если gps_provider включен, но вы получаете нулевое местоположение, вы можете заменить провайдера с gps на NETWORK_PROVIDER.

2 голосов
/ 06 января 2012

Прасад попробуйте этот код .. с помощью этого я успешно получаю lat long

        private Location location = null;
        private LocationManager locationManager = null;
    locationManager = (LocationManager) context.getSystemService                              (Context.LOCATION_SERVICE);

    Criteria locationCritera = new Criteria();
    locationCritera.setAccuracy(Criteria.ACCURACY_FINE);
    locationCritera.setAltitudeRequired(false);
    locationCritera.setBearingRequired(false);
    locationCritera.setCostAllowed(true);
    locationCritera.setPowerRequirement(Criteria.NO_REQUIREMENT);

    String providerName = locationManager.getBestProvider(locationCritera,
            true);
    location = locationManager.getLastKnownLocation(providerName);
    locationListener = new MyLocationListener();

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
            0, locationListener);

    currentLocation = context.getSharedPreferences(PREFS_NAME, 0);
    editor = currentLocation.edit();
}
public String getCurrentLatitude() {
    try {
        if (!currentLocation.getString("currentLatitude", "")
                .equalsIgnoreCase(""))
            return currentLocation.getString("currentLatitude", "");
        else if (location.getLatitude() != 0.0)
            return Double.toString(location.getLatitude());
        else
            return "0.0";
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "0.0";
}

public String getCurrentLongitude() {
    try {


        if (!currentLocation.getString("currentLongitude", "")
                .equalsIgnoreCase(""))
            return currentLocation.getString("currentLongitude", "");
        else if (location.getLongitude() != 0.0)
            return Double.toString(location.getLongitude());
        else
            return "0.0";
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "0.0";
}
1 голос
/ 06 января 2012

На реальном устройстве вам придется набраться терпения и ждать исправления со спутников. Это может занять несколько минут, даже при четком обзоре неба.

Для тестирования за пределами, вам было бы лучше иметь в приложении простое текстовое поле, инициализировать его чем-то вроде «Нет GPS-фиксирования», а затем при отправке отправлять строку, состоящую из координат широты / долготы. изменения.

1 голос
/ 06 января 2012

переопределите эти методы в вашем MyLocationListener.так что вы можете отслеживать свой статус GPS.проверьте и посмотрите, можете ли вы понять, в чем проблема

public void onProviderDisabled(String provider)

        {

            Toast.makeText( getApplicationContext(),"Gps Disabled",

                    Toast.LENGTH_SHORT ).show();

        }

        public void onProviderEnabled(String provider)

        {

            Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();

        }

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

        {

        }
1 голос
/ 06 января 2012

вы пытаетесь на эмуляторе или устройстве. если вы пытаетесь использовать устройство, ваше устройство должно находиться рядом с окном или на открытом месте.

0 голосов
/ 21 декабря 2015

Существует два типа провайдеров местоположения, GPS Location Provider Поставщик сетевых расположений

package com.shir60bhushan.gpsLocation;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.widget.TextView;

import android.util.Log;

public class MainActivity extends Activity implements LocationListener{
protected LocationManager locationManager;
protected LocationListener locationListener;
protected Context context;
TextView txtLat;
String lat;
String provider;
protected String latitude,longitude; 
protected boolean gps_enabled,network_enabled;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtLat = (TextView) findViewById(R.id.textview1);

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
@Override
public void onLocationChanged(Location location) {
txtLat = (TextView) findViewById(R.id.textview1);
txtLat.setText("Latitude:" + location.getLatitude() + ", Longitude:" + location.getLongitude());
}

@Override
public void onProviderDisabled(String provider) {
Log.d("Latitude","disable");
}

@Override
public void onProviderEnabled(String provider) {
Log.d("Latitude","enable");
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d("Latitude","status");
}
}

Эта ссылка может помочь вам для получения дополнительной информации http://androidtutorials60.blogspot.in/2013/09/gps-current-location-of-device.html

0 голосов
/ 02 декабря 2014

Может быть, это более понятно. Позже я изменю условное на более эффективное, если это возможно

    double longitude = 0;
    double latitude = 0;

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    if (lm.getLastKnownLocation(LocationManager.GPS_PROVIDER) != null) {
        Location location = lm
                .getLastKnownLocation(LocationManager.GPS_PROVIDER);
        longitude = location.getLongitude();
        latitude = location.getLatitude();
    } else {
        Location location = lm
                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        longitude = location.getLongitude();
        latitude = location.getLatitude();
    }
...