我尝试使用矢量旋转传感器在用户翻转设备时查找事件,以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 ax代码工作正常,但如果活动上可以使用横向,则无法使用这些值。仅当仅使用纵向方向时,Y ax值才会更正。有想法同时使用吗?