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 軸の値は、縦向きのみを使用する場合にのみ正確です。両方で使用するアイデアはありますか?