如何根据设备切换Accelerometer Axis?

时间:2013-05-18 06:53:11

标签: java android accelerometer axis

我的Android应用程序使用Y轴加速度计来控制游戏中的角色。

这在大多数手机上运行良好,但是在我的Galaxy Tab 2 10.1上,轴似乎是颠倒的,我必须手动改变它的工作输入。

我想写一个简单的条件语句,它会根据设备类型进行交换,但是我不确定最佳实践是什么。我相信在我提出这个问题之前,有人会遇到这个问题。

如何确定设备是桌子还是移动设备才能更改加速度计轴?

2 个答案:

答案 0 :(得分:3)

我认为这与设备的默认方向有关,它往往是手机的肖像或平板电脑的风景。这里有一个问题:How to check device natural (default) orientation on Android (i.e. get landscape for e.g., Motorola Charm or Flipout),根据我的经验,我会说this is the best answer。需要明白的一点是,无论显示器在做什么(横向,纵向等),传感器使用的x-y-z轴都不会改变。

答案 1 :(得分:0)

我发现执行此操作的最佳方法是检查设备上的屏幕大小,并将布尔值条件设置为要使用哪个轴的设备。经过测试,效果很好。

  

//检查屏幕布局以确定设备是否为平板电脑。

public boolean isTablet(Context context) {
    boolean xlarge = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == 4);
    boolean large = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE);
    return (xlarge || large);
}
  

// Changle Accelx或基于以上的Accely输入(我正在使用   OpenGLES 1.1)

if (isTablet(glGame)) {
    world.update(deltaTime, game.getInput().getAccelX());
}
if (!isTablet(glGame)) {
    world.update(deltaTime, game.getInput().getAccelY());
}