视差运动加速度计传感器

时间:2016-02-15 14:46:03

标签: android sensor

我正在尝试使用传感器类型加速度计为视图带来运动视差效果,因为它支持大多数Android设备。

我的onSensorChanged()方法中包含以下代码:

 float[] g = new float[3];
        g = sensorEvent.values.clone();
        float norm_Of_g = (float) Math.sqrt(g[0] * g[0] + g[1] * g[1] + g[2] * g[2]);
        // Normalize the accelerometer vector
        g[0] = g[0] / norm_Of_g;
        g[1] = g[1] / norm_Of_g;
        g[2] = g[2] / norm_Of_g;
        if (startingAngle == 999) {
            startingAngle = (float) (Math.acos(g[0]) * 180 / Math.PI);
            currentAngle = (float) (Math.acos(g[0]) * 180 / Math.PI);
            lowerLimitAngle = currentAngle - kRotationAngleLimit;
            upperLimitAngle = currentAngle + kRotationAngleLimit;
            initialScrollX = scrollView.getScrollX();
            pixelsPerDegree = ((simpleDraweeView.getDrawable().getIntrinsicWidth()/ (2 * kRotationAngleLimit)));

        }

        currentAngle = (float) (Math.acos(g[0]) * 180 / Math.PI);
        if (currentAngle >= lowerLimitAngle && currentAngle <= upperLimitAngle) {
            xOffset = (startingAngle - currentAngle) * pixelsPerDegree + initialScrollX;
        }
//
        scrollView.setScrollX((int) xOffset);

当我使用TYPE_ROTATION_VECTOR时,这非常有效。

在使用TYPE_ACCELEROMETER时,我会得到一个波动的读数。因此卷轴不稳定。

请帮我解决这个问题。

How to measure the tilt of the phone in XY plane using accelerometer in Android

0 个答案:

没有答案