出于某种原因,我制作了一个小型 gps 应用程序 onLocationChanged 不刷新,它只在应用程序启动时运行一次。
这是我的代码:
public BackgroundLocationService() {
super("myintentservice");
locManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Criteria crt = new Criteria();
crt.setAccuracy(Criteria.ACCURACY_FINE);
String bestProvider = locManager.getBestProvider(crt, true);
boolean gps_enabled;
boolean network_enabled;
boolean best_enabled;
gps_enabled = locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
network_enabled = locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
best_enabled = locManager.isProviderEnabled(bestProvider);
if (best_enabled) {
locManager.requestLocationUpdates(bestProvider, 15000, 20, locListener);
Log.i(TAG, "Best enabled: " + bestProvider);
} else {
Log.i("Location Provider: ", "best not enabled: " + bestProvider);
if (gps_enabled) {
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);
Log.i(TAG, "gps enabled!");
}
if (network_enabled) {
locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locListener);
Log.i(TAG, "network enabled!");
}
}
}
class MyLocationListener implements LocationListener {
public void onLocationChanged(Location location) {
if (location != null) {
//locManager.removeUpdates(locListener);
longitude = Double.toString(location.getLongitude());
latitude = Double.toString(location.getLatitude());
Log.i(TAG,"Location has CHANGED!");
}
}
public void onProviderDisabled(String arg) {}
public void onProviderEnabled(String arg) {}
public void onStatusChanged(String provider, int status, Bundle extras) {}
}
“位置已更改!”消息仅在每次应用启动时显示一次。 我在办公室,但我可以从我的位置移动至少 5-10 米,并且所有提供者都已启用,所以它一定没问题,不是吗?
有什么想法吗?
最佳答案
当您注册位置监听器时,您请求更新的最短时间为 15 秒,最短距离为 20 米。由于您在办公室内,您不太可能获得足够准确的 GPS 定位来实际检测 5-10 米的移动。你试过在外面调试吗?同样,如果您启用了模拟位置,请将模拟坐标发送到模拟器,以确保您的应用在位置更新时按预期运行。
关于android - onLocationChanged 只调用一次,不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14504027/