我想在一小段时间内每秒接收位置更新,所以我编写了以下代码:
public void registerListener() {
if (ActivityCompat.checkSelfPermission(c, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(c, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
} else {
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10, locationListener);
}
}
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
longitude = location.getLongitude();
latitude = location.getLatitude();
Log.v(TAG, ""+longitude + " " +latitude);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onProviderDisabled(String provider) {}
};
我从其他地方调用registerListener()
。问题是,我的位置更新只被调用一次,而且我只得到该日志一次。此外,日志仅在调用 registerListener
之后大约 5-10 秒出现。
速度缓慢的原因是什么?位置为何没有更新?
谢谢
鲁奇
最佳答案
您正在请求 GPS 位置。第一次获得卫星锁定需要几秒钟的时间。如果您无法接收信号锁定(在某些建筑物的室内,地下太远,对手机造成物理损坏,例如天线松动(在早期三星中常见)),则可能永远不会发生。
至于不再收到,除非移动至少10米,否则不会再次收到。将其更改为 0 并看到它每秒出现一次。
关于java - 获取位置安卓?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36231444/