我尝试使用矢量旋转传感器来查找用户翻转设备时的事件,如 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 轴值才是正确的。有什么想法可以同时使用吗?