如何通过加速度计确定方向?

时间:2012-08-13 00:17:12

标签: android accelerometer

我正在使用Android处理器,我的应用程序几乎已经完成。但是,Android版处理功能无法适应我想要实现的手机方向。它读取加速度计值,我已经能够通过这个简单的算法粗略地确定方向:

  if (y > 7)
  {
    o = UPRIGHT;
  }
  else if (y < -7)
  {
    o = UPSIDEDOWN;
  }      
  else if (x > 7)
  {
    o = TURNLEFT;
  }
  else
  {
    o = TURNRIGHT;
  }   

它没有完美无缺,所以我想知道是否有更好的解决方案。 有没有办法针对当前手机UI方向推荐Android?是否有比7更稳定的值(我选择了哪种方式)?

1 个答案:

答案 0 :(得分:2)

通过监视方向的以下配置更改,例如,基于AndroidManifest.xml,假设该活动被调用myActivity,那么以下就足够了:

<activity android:name=".myActivity" 
    android:configChanges="orientation" 
    android:label="MyActivity" />

myActivity类开始,用以下方法处理:

@Override
public void onConfigurationChanged(Configuration newConfig){
    super.onConfigurationChanged(newConfig);
    switch(newConfig.orientation){
    case Configuration.ORIENTATION_UNDEFINED:
        Log.v(TAG, "[onConfigurationChanged] - Undefined");
        break;
    case Configuration.ORIENTATION_SQUARE:
        Log.v(TAG, "[onConfigurationChanged] - Square");
        break;
    case Configuration.ORIENTATION_PORTRAIT:
        Log.v(TAG, "[onConfigurationChanged] - Portrait");
        break;
    case Configuration.ORIENTATION_LANDSCAPE:
        Log.v(TAG, "[onConfigurationChanged] - Landscape");
        break;
    }
}