如何解决如何从速度和时间不是从位置点计算行驶距离:AndroidJava
任何人都可以帮忙。我想根据速度和时间计算旅行中的总距离。当距离不低于最大距离时,我可以得到结果,但当下降到低于最大行驶距离时,最大距离不会增加低于最大距离的行驶距离。当速度降低到最大级别以下时,距离值也在降低,实际上这需要添加到最大距离中。
例如:速度 = 60KM/HR,时间 = 300SEC 然后距离 = 18KM 但是当速度降低到 40KM/HR 并且总时间为 450SEC 则总距离需要添加到 18KM + ( 40 * 150 = 6KM) = 24KM 但当速度降低到 40KM/HR 时,总行驶距离也减少到 18KM 以下。 这里 18KM 是 tripdistMax 的最大值,这个值需要加到变速(最小/最大级别)中。
希望您了解我的问题并寻找解决方案。
下面是代码。
double tripdistMax = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String tripdistance = tripdistanceCalculation();
tvTripdistance.setText(tripdistance + " KM");
}
private String tripdistanceCalculation() {
double distance = 0;
distance = Double.parseDouble(tvTripdistance.getText().toString());
String duration = time.getText().toString().trim();
String split[] = duration.split(":");
if (split.length == 3) {
String mainSpeedString = tvSpeed.getText().toString().trim();
int mainSpeed = Integer.parseInt(mainSpeedString);
int hour = Integer.parseInt(split[0]);
int minute = Integer.parseInt(split[1]);
int seconds = Integer.parseInt(split[2]);
totalSeconds = seconds + (minute * 60) + (hour * 60 * 60);
if (tripdistMax <= distance) {
tripdistMax = distance;
}
distance = (float) ((mainSpeed * totalSeconds) + tripdistMax) / 1000; //dist=SpeedxTime
return new DecimalFormat("#.#").format(distance) + "";
}
return "";
}
提前致谢。
解决方法
该代码片段中的问题是您在 onCreate 生命周期钩子中调用了一次该函数。这意味着该组件无法记住之前的任何计算,因为它只是在再次调用该函数时才被创建。
您需要一些对象才能在生命周期中存活下来,或者更好的方法来存储以前的值。然后你可以让你的函数读取以前的数据,并添加到其中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。