我正在使用演示应用程序来使用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";
}
}
}
}
感谢。
答案 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是否返回不同的值,或者每次都返回相同的值。
如果您的代码有任何问题,您应该知道代码在任何行上做了什么,返回了哪些方法和函数...还要告知人们,以便他们更容易找到解决方案。