这就是我获得纬度和延长的方式。
Criteria criteria = new Criteria();
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
String provider = locationManager.NETWORK_PROVIDER;
Location location = locationManager.getLastKnownLocation(provider);
if(location==null)
{
//do nothing
}else
{
double longitude = location.getLongitude();
double latitude = location.getLatitude();
saveCoordinates(location); // there goes another method
}
此处的权限列表在我的设备上,一切正常,但是在其他设备(如平板电脑)上,这不会返回任何坐标。据我了解,它询问GPS和网络坐标,此代码不会返回任何内容。但是,当他们使用其他应用程序(例如Google Maps)时,它们的位置已正确确定。
那么,我还能如何获得坐标?
您必须要求一个新的位置。在您的其他语句中添加以下内容
LocationListener ll = new mylocationlistener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
和您的功能外部。
private class mylocationlistener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
if (location != null) {
Log.d("LOCATION CHANGED", location.getLatitude() + "");
Log.d("LOCATION CHANGED", location.getLongitude() + "");
Toast.makeText(MainActivity.this,
location.getLatitude() + "" + location.getLongitude(),
Toast.LENGTH_LONG).show();
}
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
注意: -
另外,您也可以随时将implements LocationListener
添加到您的活动中。然后,您也将获得以上4个功能。向他们添加相同的代码。