首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加Google距离(DataPoint超出范围)

添加Google距离(DataPoint超出范围)
EN

Stack Overflow用户
提问于 2017-11-28 13:32:26
回答 1查看 1.4K关注 0票数 4

我的代码

代码语言:javascript
复制
val startTime = 1510241100000 // 2017-11-09T15:25:00+00:00
val endTime = 1510241180000   // 2017-11-09T15:26:20+00:00
val distance = 12000.0f

val distanceDataSource = DataSource.Builder()
    .setAppPackageName(packageName)
    .setDataType(DataType.AGGREGATE_DISTANCE_DELTA)
    .setType(DataSource.TYPE_RAW)
    .build()
val distanceDataSet = DataSet.create(distanceDataSource)
val distancePoint = distanceDataSet.createDataPoint()
    .setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS)
distancePoint.getValue(Field.FIELD_DISTANCE).setFloat(distance)
    distanceDataSet.add(distancePoint) // here is the crash

如果java.lang.IllegalArgumentException: DataPoint和endTime之间的距离小于10分钟,则与startTime和endTime之间的距离为10分钟。

有人知道我的代码有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-01 01:43:43

TL;DR:代码是可以的,但是您正在尝试添加一个DataPoint --在API的眼里)--假装:您不能超过100米/秒

API中有一些内部验证,检查输入数据的限制,如果数据不符合,则抛出异常。

一些显示这些限制的反编译代码(特别是您对com.google.distance.delta感兴趣):

代码语言:javascript
复制
private zzbtw() {
    HashMap var1;
    (var1 = new HashMap()).put("latitude", new zzbty(-90.0D, 90.0D, (zzbtx)null));
    var1.put("longitude", new zzbty(-180.0D, 180.0D, (zzbtx)null));
    var1.put("accuracy", new zzbty(0.0D, 10000.0D, (zzbtx)null));
    var1.put("bpm", new zzbty(0.0D, 1000.0D, (zzbtx)null));
    var1.put("altitude", new zzbty(-100000.0D, 100000.0D, (zzbtx)null));
    var1.put("percentage", new zzbty(0.0D, 100.0D, (zzbtx)null));
    var1.put("confidence", new zzbty(0.0D, 100.0D, (zzbtx)null));
    var1.put("duration", new zzbty(0.0D, 9.223372036854776E18D, (zzbtx)null));
    var1.put("height", new zzbty(0.0D, 3.0D, (zzbtx)null));
    var1.put("weight", new zzbty(0.0D, 1000.0D, (zzbtx)null));
    var1.put("speed", new zzbty(0.0D, 11000.0D, (zzbtx)null));
    this.zzhbn = Collections.unmodifiableMap(var1);
    HashMap var2;
    (var2 = new HashMap()).put("com.google.step_count.delta", zzc("steps", new zzbty(0.0D, 1.0E-8D, (zzbtx)null)));
    var2.put("com.google.calories.consumed", zzc("calories", new zzbty(0.0D, 1.0E-6D, (zzbtx)null)));
    var2.put("com.google.calories.expended", zzc("calories", new zzbty(0.0D, 5.555555555555555E-10D, (zzbtx)null)));
    var2.put("com.google.distance.delta", zzc("distance", new zzbty(0.0D, 1.0E-7D, (zzbtx)null)));
    this.zzhbm = Collections.unmodifiableMap(var2);
}

当时间从您的时间单位转换为纳秒(请参阅DataPoint.setTimeInterval)时,您将得到1e-7 (从毫秒开始),并且

你的数据:

  • 时代三角洲: 80s -> 80000000000
  • 距离三角洲:12000吨
  • 速度:12000 1.5e/800000000ns -> 0.00000015mts/ns -> 1.5e-7

长话短说:尝试8000并看到它的工作,尝试8001并且看到它失败。

不幸的是,我找不到有关这方面的任何文档,必须一步一步地调试才能达到此目的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47532849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档