1

GS3が音楽を停止するように、Vector Rotationセンサーを使用して、ユーザーがデバイスを裏返したときのイベントを見つけようとします。

私のコード:

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 変数がどのように変化するかを確認していますが、これらの値がわかりません。デバイスをテーブルに置いてアクティビティを開始すると、x、y、z が常に 0 であるとは限りません。その後、デバイスを裏返すと、すべての値が変化し、それでも非常に近い (-1 と 1 の間の値)。

私の質問は、どうすれば良い軸を見つけることができるか、そしてターンオーバーを検出するために私の状態に入れなければならない値は何ですか?

ここに画像の説明を入力

編集: 最後に、コードは Y 軸を使用して正常に動作しますが、アクティビティで横向きが可能な場合、値を使用できません。Y 軸の値は、縦向きのみを使用する場合にのみ正確です。両方で使用するアイデアはありますか?

4

0 に答える 0