
Android
Javaimport Android.location.Location;import Android.location.LocationListener;import Android.location.LocationManager;import Androidx.appcompat.app.AppCompatActivity;import Androidx.location,options.Google.FusedLocationProviderOptions;import Java.util.HashMap;import Java.util.Map;public class MAInActivity extends AppCompatActivity implements LocationListener { private static final int MAX_TRACKER_TIMES = 5; private static final int TRACKER_INTERVAL = 1000; private static final float TRACKER_THRESHOLD = 5.0f; private float lastLatitude = -1.0f; private float lastLongitude = -1.0f; private int trackerCount = 0; private boolean isTracking = false; private int lastUpdate = 0;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setcontentView(R.layout.activity_mAIn); }

Java
@Override public void onLocationChanged(Location location) { if (location != null) { lastLatitude = location.getLatitude(); lastLongitude = location.getLongitude(); if (isTracking) { updateTracker(); } else { startTracking(); } } } @Override public void onLocationChangeError(Location location) { // Handle location error }
@Override public void onLocationLost() { // Handle location loss }
@Override public void startTracking() { LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { FusedLocationProviderOptions options = new FusedLocationProviderOptions.Builder() .workaround("Yourworkaroundstring") .build(); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, TRACKER_INTERVAL, options, this); isTracking = true; trackerCount = 0; lastUpdate = System.currentTimeMillis(); } }
@Override public void updateTracker() { if (location != null) { updateTracker(location); } }
private void updateTracker(Location location) { if (location != null) { if (location.latitude != lastLatitude || location.longitude != lastLongitude) { trackerCount++; if (trackerCount > MAX_TRACKER_TIMES) { trackerCount = 0; isTracking = false; lastUpdate = 0; runOnUiThread(new Runnable() { @Override public void run() { System.out.println("Location tracking stopped."); } }); } else { if ((location.latitude != lastLatitude) || (location.longitude != lastLongitude)) { trackerCount++; lastUpdate = System.currentTimeMillis(); } } } } }}
以上代码使用了Android的Location服务获取当前位置的逻辑,同时也添加了跟踪功能。在每次获取到新的地理位置后,会更新一个跟踪器的变量,如果连续获取了几次新的地理位置,则会停止跟踪。这个功能可以用来显示当前地图上所处的位置,并且可以保存跟踪历史记录。同时,在代码中也使用了计时器来判断是否需要重新获取当前地理位置。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号