从Google Fit API Android获取当前活动

时间:2015-09-03 10:45:39

标签: android google-fit google-fit-sdk

我正在使用演示应用程序来使用Google Fit获取当前活动示例。我可以正确地获得速度和距离。但它并没有回归" in_vehicle"或者"骑自行车"虽然我处于同一状态,但我的状态非常频繁。找到相同的附加截图。我的速度为59.40KM / H(36.91 M / h),当时没有返回" in_vehicle"活动状态。

请为此提供解决方案/反馈。

代码:

@Override
 public void onDataPoint(DataPoint dataPoint) {
     for (Field field : dataPoint.getDataType().getFields()) {
        Value val = dataPoint.getValue(field);
           if(field.getName().trim().toLowerCase().equals("activity"))
                    {
                        if(FitnessActivities.getName(Integer.parseInt(val.toString())).equals("biking"))
                        {
                            strState = "Cycling";
                        }
                        else if(FitnessActivities.getName(Integer.parseInt(val.toString())).equals("in_vehicle"))
                        {
                            strState = "Automotive";
                        }
                        else if(FitnessActivities.getName(Integer.parseInt(val.toString())).equals("walking"))
                        {
                            strState = "Walking";
                        }
                        else
                        {
                            strState = "Not Moving";
                        }
                    }
            }
}

感谢。

IMAGE

2 个答案:

答案 0 :(得分:1)

正如你所说,你的速度正确。您可以将自定义代码写在下面。

if (strState.equals("Automotive") && speed == 0.00)
{
   strState = "Not Moving";
}
else if (strState.equals("Not Moving") && speed > 5)
{
   strState = "Automotive";
}
else
{
   strState = "strState";
}

这可能不是正确的,但它会给你附近的状态结果。

答案 1 :(得分:-1)

我不熟悉google fit api,所以我能给你的唯一建议是仔细检查你的代码。是
Integer.parseInt(val.toString())
返回正确的int并且可以
FitnessActivities.getName()
平等"骑自行车","行走"," in_vehicle"等

我可以从这里看到:https://developers.google.com/fit/rest/v1/reference/activity-types

骑自行车,车辆和步行是0,1和7。 例如,检查FitnessActivities.getName(0)返回的内容,同时检查val是否返回不同的值,或者每次都返回相同的值。

如果您的代码有任何问题,您应该知道代码在任何行上做了什么,返回了哪些方法和函数...还要告知人们,以便他们更容易找到解决方案。