我正在尝试检测旋转,而不是屏幕方向更改。
我在getRotationMatrix()上只得到了一个假。
我找到了解决方案here,但它对我不起作用。
@Override
public void onSensorChanged(SensorEvent event) {
// This method will be called when the accelerometer values are changing.
if (event == null || event.values.length == 0) throw new IllegalArgumentException();
else {
// Handle the events for which we registered
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
Log.i(TAG, "detected Accelerometer");
mValuesAccel = event.values;
break;
case Sensor.TYPE_MAGNETIC_FIELD:
Log.i(TAG, "detected Magneticfield");
mValuesMagnet = event.values;
break;
}
Log.i(TAG, ""+ SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel, mValuesMagnet));
SensorManager.getOrientation(mRotationMatrix, mValuesOrientation);
mRotationListener.onChange(mValuesOrientation);
}
}
答案 0 :(得分:2)
检查您的设备是否有指南针。
如果没有指南针,则mValuesMagnet
始终为空,因此getRotationMatrix
将返回false。