... 아니면 내가 잘못하고 있습니다. 내가 원했던 것은 내가 집안을 걷는 모든 1 미터의 토스트를 보여주는 것입니다. 아래 코드는 잘못된 결과를 제공합니다. 휴대 전화에 앱을 설치하는 순간 이동하지 않고도 토스트를 얻을 수 있습니다!Android : 측정 된 거리 사이의 거리가 잘못되었습니다
public class MainActivity extends Activity {
private LocationListener mLocationListener;
private String mLocationProvider;
private LocationManager mLocationManager;
private Location mCurrentLocation;
private int mCounter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mLocationListener = new MyLocationListener();
Criteria criterion = new Criteria();
criterion.setAccuracy(Criteria.ACCURACY_FINE);
criterion.setCostAllowed(true);
criterion.setPowerRequirement(Criteria.POWER_HIGH);
mLocationProvider = mLocationManager.getBestProvider(criterion, true);
}
@Override
protected void onResume() {
super.onResume();
mCurrentLocation = mLocationManager.getLastKnownLocation(mLocationProvider);
mLocationManager.requestLocationUpdates(mLocationProvider, 5000, 1, mLocationListener);
}
@Override
protected void onPause() {
super.onPause();
mLocationManager.removeUpdates(mLocationListener);
}
private class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location newlocation) {
float distance = mCurrentLocation.distanceTo(newlocation);
if (distance >= 1) {
mCounter++;
Toast.makeText(MainActivity.this, String.format("Message #%d: you walked one more meter", mCounter), Toast.LENGTH_SHORT).show();
mCurrentLocation = newlocation;
}
}
}
}
앱을 설치 한 순간 거리 변수는 3.036으로 설정되었습니다. 사용하는 제공 업체가 gps가 아닌 네트워크 인 이유는 무엇입니까? – user2765861
예, 네트워크 공급자가 불안정한 결과를 나타냅니다. 귀하의 위치는 지속적으로 변화합니다. – Naddy
외부에 GPS를 사용하여 오도 된 결과를 받았지만 여전히 정확할 수도 있습니다. – user2765861