首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓传感器TYPE_LINEAR_ACCELERATION和TYPE_ROTATION_VECTOR是如何实现的?

安卓传感器TYPE_LINEAR_ACCELERATION和TYPE_ROTATION_VECTOR是如何实现的?
EN

Stack Overflow用户
提问于 2017-03-02 10:06:02
回答 2查看 597关注 0票数 1

我已经为Android使用的算法搜索了一段时间,该算法用于融合来自不同传感器的原始数据以生成虚拟传感器。

它们是如何执行的?源代码在某个地方可用吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-02 10:42:00

源代码在某个地方可用吗?

不幸的是,融合位置提供程序API并不是Android开源项目的一部分,而是作为Google Play Services的一部分实现的,Google Play Services是Google的专有软件,它的源代码是不可公开的。实际上,FusedLocationProviderApi.java接口实现是故意混淆的,例如:

代码语言:javascript
复制
public class zzd implements FusedLocationProviderApi {
    public zzd() {
    }

    public Location getLastLocation(GoogleApiClient var1) {
        zzl var2 = LocationServices.zzj(var1);

        try {
            return var2.getLastLocation();
        } catch (Exception var4) {
            return null;
        }
    }
...

它们是如何执行的?

因为源代码是不可用的,所以我们只能推测它是如何实现的。

票数 0
EN

Stack Overflow用户

发布于 2017-03-02 10:12:50

您必须获得传感器管理器的实例。

代码语言:javascript
复制
private SensorManager mSensorManager;
private Sensor mSensor;
  ...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

之后,您可以访问像这样的加速度计数据:

代码语言:javascript
复制
public void onSensorChanged(SensorEvent event){
  // In this example, alpha is calculated as t / (t + dT),
  // where t is the low-pass filter's time-constant and
  // dT is the event delivery rate.

  final float alpha = 0.8;

  // Isolate the force of gravity with the low-pass filter.
  gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
  gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
  gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];

  // Remove the gravity contribution with the high-pass filter.
  linear_acceleration[0] = event.values[0] - gravity[0];
  linear_acceleration[1] = event.values[1] - gravity[1];
  linear_acceleration[2] = event.values[2] - gravity[2];
}

有关更多信息,请阅读developer.android页面

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

https://stackoverflow.com/questions/42552358

复制
相关文章

相似问题

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