小编ice*_*ell的帖子

android中onSensorChanged的频率是多少?

注册时频率始终最高.但问题是:同步与否?

如果陀螺仪传感器最多可以提供200HZ,那么我的手机中的accel传感器最多提供50HZ,那么onSensorChanged功能提供4次陀螺仪数据然后加速数据1次?

我刚刚发现如果我要求陀螺仪数据50Hz和加速数据20赫兹,那么陀螺仪数据总是会被2乘2相同.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~第1部分:

public void initListeners(){
    mSensorManager.registerListener(this,
        mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
        SensorManager.SENSOR_DELAY_FASTEST);

    mSensorManager.registerListener(this,
        mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE),
        SensorManager.SENSOR_DELAY_FASTEST);

    mSensorManager.registerListener(this,
        mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
        SensorManager.SENSOR_DELAY_FASTEST);
}
Run Code Online (Sandbox Code Playgroud)

第2部分:

public void onSensorChanged(SensorEvent event){

    switch(event.sensor.getType()) {
    case Sensor.TYPE_ACCELEROMETER:
        // copy new accelerometer data into accel array and calculate orientation
        System.arraycopy(event.values, 0, accel, 0, 3);
        calculateAccMagOrientation();
        ...
        }
        break;

    case Sensor.TYPE_GYROSCOPE:
        // process gyro data
        gyroFunction(event);
        break;

    case Sensor.TYPE_MAGNETIC_FIELD:
        // copy new magnetometer data into magnet array
        System.arraycopy(event.values, 0, magnet, 0, 3);
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

android motion

1
推荐指数
1
解决办法
2675
查看次数

标签 统计

android ×1

motion ×1