【发布时间】:2016-03-18 12:51:12
【问题描述】:
我按照本教程 http://developer.android.com/training/location/retrieve-current.html 检索我的设备的位置,但它不起作用。
当我这样做时:
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
“mLastLocation”为空,为什么?
编辑
我试图在 Niru 的回答中这样做:
public Location setLocation()
{
Location location;
final int MIN_TIME_BW_UPDATES = 300;
final int MIN_DISTANCE_CHANGE_FOR_UPDATES = 50;
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
String bestProvider = locationManager.getBestProvider(criteria, true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {}
}
location = locationManager.getLastKnownLocation(bestProvider);
localStorage.putFloat("latitude", (float) location.getLatitude());
localStorage.putFloat("longitude", (float) location.getLongitude());
localStorage.commit();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, (LocationListener) this);
return location;
}
@Override
public void onLocationChanged(Location location)
{
localStorage.putFloat("latitude", (float) location.getLatitude());
localStorage.putFloat("longitude", (float) location.getLongitude());
localStorage.commit();
}
但是“位置”是空的,为什么?
【问题讨论】:
-
Android 6.0 上的 Nexus 6p 和 Android 6.0.1 上的 Nexus 5 也有同样的问题,但它在 5.1.1 上的 Nexus 4 上运行良好,所以可能是平台问题...哪个版本你用的是安卓吗?
标签: java android google-api location