Я разрабатываю приложение, в котором мне нужно местоположение пользователя, использующего GPS. Я получаю нулевое значение в объекте местоположения вместо координат. Но при использовании NETWORK_PROVIDER
я получаю результат. Я хочу получить тот же результат с помощью GPS.Не удается получить местоположение с помощью GPS_PROVIDER
Вот мой код:
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import static com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback,LocationListener {
private GoogleMap mMap;
boolean isGPSEnabled = false;
Location location;
double latitude;
double longitude;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
if(status == ConnectionResult.SUCCESS) {
System.out.println("enable");
System.out.println(status);
}
// mMap.setMyLocationEnabled(true);
try {
LocationManager locationManager = (LocationManager)this.getSystemService(this.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.POWER_HIGH);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setSpeedRequired(false);
criteria.setCostAllowed(true);
isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
// LocationProvider BestProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER);
if (isGPSEnabled) {
System.out.println("test5");
location =locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000,1, this);
System.out.println(locationManager);
if (locationManager != null) {
System.out.println(location);
//requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
System.out.println("latitude:"+latitude);
}
}
}
}
catch(Exception e) {
System.out.println("Fail");
e.printStackTrace();
}
}
Я назначил значение, подобное location = locationManager.getLastKnownLocation (LocationManager.GPS_PROVIDER); – Ashu
все еще не работает @Doug Stevenson – Ashu
Это потому, что getLastKnownLocation все равно может вернуть значение null (согласно javadoc). –