我希望获得当前的磁性方向,而不考虑当前屏幕方向(横屏或竖屏)。
我找到了this的例子,但它不是独立于方向的,对吧? this也没有帮助我。 我还阅读了http://android-developers.blogspot.de/2010/09/one-screen-turn-deserves-another.html。
这是我目前采用的过时方法(简短):
但是最后一部分肯定是错误的!在这种情况下,我如何正确使用较新的方法
我正在为具有360°屏幕旋转且API级别为11+的设备开发。
我知道这些问题经常被问到,但我无法将它们的答案简单地转移到我的问题上。
我找到了this的例子,但它不是独立于方向的,对吧? this也没有帮助我。 我还阅读了http://android-developers.blogspot.de/2010/09/one-screen-turn-deserves-another.html。
这是我目前采用的过时方法(简短):
mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
private SensorEventListener sensorEventListener = new SensorEventListener() {
public void onSensorChanged(SensorEvent event) {
/* Get measured value */
float current_measured_bearing = (float) event.values[0];
/* Compensate device orientation */
switch (((WindowManager) getSystemService(WINDOW_SERVICE))
.getDefaultDisplay().getRotation()) {
case Surface.ROTATION_90:
current_measured_bearing = current_measured_bearing + 90f;
break;
case Surface.ROTATION_180:
current_measured_bearing = current_measured_bearing - 180f;
break;
case Surface.ROTATION_270:
current_measured_bearing = current_measured_bearing - 90f;
break;
}
但是最后一部分肯定是错误的!在这种情况下,我如何正确使用较新的方法
getRotationMatrix()
?(方向无关)或者我只需要根据旋转矩阵使用event.values[]
数组的其他值?还是我需要“重新映射坐标”?所以那个是实现这一目标的正确方式吗?我正在为具有360°屏幕旋转且API级别为11+的设备开发。
我知道这些问题经常被问到,但我无法将它们的答案简单地转移到我的问题上。