1

我尝试使用矢量旋转传感器来查找用户翻转设备时的事件,如 GS3 停止音乐。

我的代码:

private SensorManager mSensorManager;
private final SensorEventListener mSensorListener = new SensorEventListener() {

    public void onSensorChanged(SensorEvent se) {
      float x = se.values[0];
      float y = se.values[1];
      float z = se.values[2];
      System.out.println("X Vector : " + x + " / Y Vector : " + y + " / Z Vector : " + z);
      if(//condition){
          //method1();
      }

    }
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR), SensorManager.SENSOR_DELAY_NORMAL);

}

我使用 System.out.println 来查看 x、y 和 z 变量在我翻身期间如何变化,但我不明白这些值。当我将设备放在桌子上并启动 Activity 时,x、y 和 z 并不总是为 0。然后当我将它翻过来时,所有值都发生了变化,并且仍然非常接近(值在 -1 和 1 之间)。

我的问题是,我怎样才能找到好的轴,我必须在我的条件下输入什么值才能检测到翻转?

在此处输入图像描述

编辑:最后,代码使用 Y 轴可以正常工作,但如果活动可以横向放置,我不能使用这些值。仅当仅使用纵向时,Y 轴值才是正确的。有什么想法可以同时使用吗?

4

0 回答 0