【问题标题】:Android gravity sensor values incorrect in orientation changeAndroid重力传感器值在方向更改中不正确
【发布时间】:2014-04-02 16:03:56
【问题描述】:

我正在尝试编写一个动态壁纸,其中物体从上到下掉落。问题是,在平板电脑(我使用的是 nexus 7 和 Galaxy Note)上,当屏幕方向发生变化时,我的对象不再掉落,但它们会朝错误的方向移动(如果将设备向右转动,它们会掉落对,如果我把它向左转,它们就会掉到左边,依此类推..)。

我正在使用重力传感器

mGravitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);

然后我沿 X 和 Y 轴计算重力的平方根来移动物体。

怎么可能让物体总是掉下来? 提前致谢!

我添加了一张图片来更好地解释这种行为。

【问题讨论】:

    标签: android android-sensors live-wallpaper gravity


    【解决方案1】:

    我找到了一个简单的解决方案,在我的情况下效果很好:

    我已经编写了这个方法来正确映射值:

        private void mapSensors(float[] input, float[] output) {
            switch (((WindowManager) getApplicationContext().getSystemService(
                    Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation()) {
            case 0:
                output[0] = input[0];
                output[1] = input[1];
                break;
            case 1:
                output[0] = -input[1];
                output[1] = input[0];
                break;
            case 2:
                output[0] = -input[0];
                output[1] = -input[1];
                break;
            case 3:
                output[0] = input[1];
                output[1] = -input[0];
                break;
            }
        }
    

    并且方法是这样调用的:

        @Override
        public void onSensorChanged(SensorEvent event) {
            mapSensors(event.values, gravity);
        }
    

    它将传感器 (event.values) 中的值映射到我的浮点数组 (gravity)。

    希望这可能对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多