我有以下代码,在Most Recent location
和30 seconds
之后得到10 meters
,但它会不断接收位置更新,并在获取最新的位置更新后每30秒一次。
有没有更好/更有效的方法呢?
基本上我的要求是每隔30秒使用Current Location
10 meters distance moved
。我可以用几种方式做到这一点,我在想是否有更好的方法来解决这个问题?那么Timer类呢?
任何想法都会有很大的帮助。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new GPSLocationListener();
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
30000,
10,
locationListener);
}
以下是实现LocationListener
的类。
private class GPSLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
if (location != null) {
GeoPoint point = new GeoPoint(
(int) (location.getLatitude() * 1E6),
(int) (location.getLongitude() * 1E6));
System.out.println(location.getLatitude()+"--"+location.getLongitude());
}
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
答案 0 :(得分:0)
Techgeeky,不确定你到底想要什么。但是你所拥有的正是你所描述的,即如果你已经移动了10米,那就是每30秒获得一次nupdate。操作系统会让GPS芯片休眠30秒,一旦醒来,如果你移动10米,它会给出更新。你有什么应该完美的工作,究竟是什么问题?我编写了多个使用位置监听器的应用程序,每30秒唤醒一次是合理的,以确保获得更新。