【问题标题】:Determing up regardless of device orientation无论设备方向如何确定
【发布时间】:2011-04-17 16:40:24
【问题描述】:

我正在 Android 上开发 AR 应用程序,并且希望无论设备滚动方向如何,都可以获得水平和垂直值,就像水平仪一样。一个例子是用户以纵向模式拿着他们的设备并旋转他们的手机,我希望手机上的地平线与自然地平线相匹配。我玩过传感器管理器返回的滚动值,但它似乎考虑了俯仰(即设备现在处于横向模式,应该是俯仰影响滚动。)

另外,在阅读音高时,我希望地平线上下移动,而不考虑滚动。目前,当设备滚动到 90 度时,任何俯仰变化都会在水平方向而不是垂直方向移动。

任何指针?

提前致谢。

保罗

【问题讨论】:

    标签: android math tilt-sensor


    【解决方案1】:

    是的,我认为你最好的选择是使用加速度计来确定地面的方向。

    使用类似的东西....

        mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
        accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    

    在你的 onCreate 方法中,然后放这个

        mSensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
    

    在你的简历中 这是处理更新

    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            float xAcceleration = event.values[0];
            float yAcceleration = event.values[1];
            float zAcceleration = event.values[2];
    

    然后,只需使用这些加速度值来确定地面的方向。 :-) 我发现这种方式更加流畅,希望对您有所帮助。 :-)

    有关更多信息,请查看以下内容以获取更多信息: http://developer.android.com/reference/android/hardware/SensorEvent.html#values

    【讨论】:

    • 在实施并查看这些值之后,这似乎是正确的方法。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多