【发布时间】:2015-05-17 04:08:43
【问题描述】:
我的情况是,用户整天都带着平板电脑,它的 gps 或位置可以一直关闭以节省电池,然后想使用我的应用程序发布需要他们的东西打开位置,然后在发布后我想获取设备的 latitude 和 longitude。当我得到 location 的 null 时,使用 LocationManager。任何帮助将不胜感激。
我正在使用下面的代码来获取位置:
LocationManager lm = (LocationManager)ctx.getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
正如我检查过的那样,似乎我必须放置一个监听器来更新设备位置,所以当我获得最后一个已知位置时它不会为空,但是如果设备的位置关闭,我该怎么做在使用应用程序之前?我想获取用户使用应用程序发布的位置。
EDIT:我已将代码更改为以下,但 loc 始终为 null 并且 loc2 始终返回位置。这是为什么呢?
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
Location loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location loc2 = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
这是监听器:
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
public void onProviderEnabled(String provider) {
}
public void onProviderDisabled(String provider) {
}
};
【问题讨论】:
标签: android gps locationmanager