无法从 LocationManager 获取 Lat Long
Unable to get Lat Long from LocationManager
我正在尝试使用 LocationManager 获取登录用户的纬度和经度。我能够获得权限屏幕,并在允许后我想在文本视图上看到纬度和经度。
但是,我无法在文本视图中看到任何内容。
protected void getLocation() {
Log.v(TAG, "GetLocation");
int LOCATION_REFRESH_TIME = 1000;
int LOCATION_REFRESH_DISTANCE = 5;
if (!(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
Log.v("WEAVER_", "Has permission");
mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_REFRESH_TIME,
LOCATION_REFRESH_DISTANCE, mLocationListener);
} else {
Log.v("WEAVER_", "Does not have permission");
}
}
现在,我正在调用 mLocationListener,但没有得到任何结果,也没有任何错误。
OnLocationChanged() 方法未被调用。
private final LocationListener mLocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.v("WEAVER_", "Location Change");
double latitude = location.getLatitude();
textView.setText(String.valueOf(latitude) + "latitude");
textView.setText(String.valueOf(updates) + " updates");
}
这里,textView 没有显示任何内容,日志也没有更新位置更改事件。
日志结果为:
08-21 14:35:29.336 3390-3390/daveytree.geo2 V/WEAVER_: GetLocation
08-21 14:35:29.337 3390-3390/daveytree.geo2 V/WEAVER_: Has permission
08-21 14:35:29.362 3390-3526/daveytree.geo2 D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
是否有任何其他事件可以捕获此事件。请帮忙
由此 SO question, you can try to change the GPS_PROVIDER
to NETWORK_PROVIDER
. Because GPS_PROVIDER
使用卫星确定位置,根据情况,此提供商可能需要一段时间才能 return 定位。
有关更多信息,您还可以查看此相关的 SO 问题:
Unable to get location with gps location provider on android device
Can't Get GPS Current Location's Latitude and Longtitude Android
How do I get the current GPS location programmatically in Android?
我正在尝试使用 LocationManager 获取登录用户的纬度和经度。我能够获得权限屏幕,并在允许后我想在文本视图上看到纬度和经度。 但是,我无法在文本视图中看到任何内容。
protected void getLocation() {
Log.v(TAG, "GetLocation");
int LOCATION_REFRESH_TIME = 1000;
int LOCATION_REFRESH_DISTANCE = 5;
if (!(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
Log.v("WEAVER_", "Has permission");
mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_REFRESH_TIME,
LOCATION_REFRESH_DISTANCE, mLocationListener);
} else {
Log.v("WEAVER_", "Does not have permission");
}
}
现在,我正在调用 mLocationListener,但没有得到任何结果,也没有任何错误。 OnLocationChanged() 方法未被调用。
private final LocationListener mLocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.v("WEAVER_", "Location Change");
double latitude = location.getLatitude();
textView.setText(String.valueOf(latitude) + "latitude");
textView.setText(String.valueOf(updates) + " updates");
}
这里,textView 没有显示任何内容,日志也没有更新位置更改事件。
日志结果为:
08-21 14:35:29.336 3390-3390/daveytree.geo2 V/WEAVER_: GetLocation
08-21 14:35:29.337 3390-3390/daveytree.geo2 V/WEAVER_: Has permission
08-21 14:35:29.362 3390-3526/daveytree.geo2 D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
是否有任何其他事件可以捕获此事件。请帮忙
由此 SO question, you can try to change the GPS_PROVIDER
to NETWORK_PROVIDER
. Because GPS_PROVIDER
使用卫星确定位置,根据情况,此提供商可能需要一段时间才能 return 定位。
有关更多信息,您还可以查看此相关的 SO 问题:
Unable to get location with gps location provider on android device
Can't Get GPS Current Location's Latitude and Longtitude Android
How do I get the current GPS location programmatically in Android?