【问题标题】:How to slow down android sensor events如何减慢android传感器事件
【发布时间】:2015-04-09 16:31:47
【问题描述】:

我正在尝试检测 Android 设备的运动并从该设备获取线性加速度值。我正在使用 SensorEvent 的时间戳并将其与上次更新时间进行比较,以确定是否记录传感器值。但它没有任何效果。为什么它不起作用?

@Override
public void onSensorChanged(SensorEvent event) {
    if(event.sensor.getType() == Sensor.TYPE_LINEAR_ACCELERATION) {

            int value = (int) event.values[0];
            if(actualTime - lastUpdate > 5000) {
                Log.d(TAG, "" + value);
                lastUpdate = actualTime;
            }

【问题讨论】:

    标签: android events sensors


    【解决方案1】:

    如果要更改访问传感器的频率,可以在 registerListener 中指定频率,如官方文档中所述。

    @Override
    protected void onResume() {
        super.onResume();
        mSensorManager.registerListener(this, mLight,SensorManager.SENSOR_DELAY_NORMAL);
    }
    

    在此示例中,调用 registerListener() 方法时指定了默认数据延迟 (SENSOR_DELAY_NORMAL)。数据延迟(或采样率)控制通过 onSensorChanged() 回调方法将传感器事件发送到您的应用程序的时间间隔。默认数据延迟适用于监控典型的屏幕方向变化,并使用 200,000 微秒的延迟。您可以指定其他数据延迟,例如 SENSOR_DELAY_GAME(20,000 微秒延迟)、SENSOR_DELAY_UI(60,000 微秒延迟)或 SENSOR_DELAY_FASTEST(0 微秒延迟)。从 Android 3.0(API 级别 11)开始,您还可以将延迟指定为绝对值(以微秒为单位)。

    绝对可以放慢速度:)

    【讨论】:

    • +1 是第一个提到时间以微秒为单位的人(我假设为毫秒)。但是,我无法将速度减慢到第二级。
    【解决方案2】:

    很难从您的代码中判断您的逻辑是否正确,但可能的原因是Sensor 时间戳以纳秒为单位。

    查看文档:http://developer.android.com/reference/android/hardware/SensorEvent.html#timestamp

    因此,假设您正确设置了事件时间戳,为了忽略自上次事件后不到 5 秒触发的事件,您需要使用值 5000000000

    @Override
    public void onSensorChanged(SensorEvent event) {
        if(event.sensor.getType() == Sensor.TYPE_LINEAR_ACCELERATION) {
    
                long actualTime = event.timestamp; //get the event's timestamp
                int value = (int) event.values[0];
                if(actualTime - lastUpdate > 5000000000) {
                    Log.d(TAG, "" + value);
                    lastUpdate = actualTime;
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      • 1970-01-01
      • 2020-09-04
      相关资源
      最近更新 更多