我的应用程序应该在用户走动时实时显示距离和位置,但我的输出有错误.距离没有立即开始,但是当它开始时它会增加很多,直到它减慢一点.根据我见过的一个例子,红色标记和蓝点应该在一起,但它们在我的应用程序中是分开的.他们两个都说我当前的位置对吗?红色标记和蓝点在短时间内跳跃,我没有移动,远离我的真实位置.我认为这也会导致距离的不准确.
请参阅我的输出了解更多详情
java代码
public class MainActivity extends FragmentActivity implements LocationListener{
protected LocationManager locationManager;
private GoogleMap googleMap;
Button btnStartMove,btnPause,btnResume,btnStop;
static double n=0;
Long s1,r1;
double dis=0.0;
Thread t1;
EditText userNumberInput;
boolean bool=false;
int count=0;
double speed = 1.6;
double lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4;
double dist = 0;
TextView distanceText;
float[] result;
private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES =1; // in Meters
private static final long MINIMUM_TIME_BETWEEN_UPDATES = 3000; //in milliseconds
boolean startDistance = false;
boolean firstTime = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); …Run Code Online (Sandbox Code Playgroud) 我想计算用户走路的距离,无论在使用GPS的活动(例如跑步)期间有多少.即使GPS不准确,我想要一个可以计算准确距离的功能.
在下面的代码中,当我注释掉我的onLocationChanged代码时,我的应用程序没有崩溃.但是两个TextView和Toast没有显示当前位置.当我包含我的onLocationChanged代码时,手机上的应用程序会在一段时间后崩溃.我无法弄清楚错误.
有人能告诉我,我使用的方式Location.distanceBetween是否正确?我觉得有些不对劲但不知道是什么.
更新的Java代码
public class MainActivity extends Activity{
protected LocationManager locationManager;
EditText userNumberInput;
EditText userTextInput;
TextView distanceText;
TextView latitude;
TextView longitude;
double lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4;
long dist;
float[] result;
private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 0; // in Meters
private static final long MINIMUM_TIME_BETWEEN_UPDATES = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
distanceText=(TextView)findViewById(R.id.Distance);
latitude=(TextView)findViewById(R.id.currentLat);
longitude=(TextView)findViewById(R.id.currentLon);
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MINIMUM_TIME_BETWEEN_UPDATES,MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, myLocationListener);
Log.d("GPS Enabled", "GPS Enabled");
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String provider …Run Code Online (Sandbox Code Playgroud)