微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从速度和时间不是从位置点计算行驶距离:AndroidJava

如何解决如何从速度和时间不是从位置点计算行驶距离: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 举报,一经查实,本站将立刻删除。