我的应用程序是一个增强现实应用程序,我在相机的surfaceview中绘制图标。根据指南针的结果绘制的图标。应用程序被锁定在横向模式。在我的设备中,默认方向为纵向模式,一切正常。
最近我在 Galaxy Nexus 10 中测试了该应用程序,发现图标在我分别向右和向左移动设备时向上和向下移动。当我左右移动设备时会发生相反的情况。出了什么问题。我的猜测是,nexus 具有横向默认方向,问题来自 remapCoordinateSystem()。我在 remapCoordinateSystem 之前添加了下一个代码,但什么也没发生。
int defaultRotation = getRotation();
switch(defaultRotation){
case Configuration.ORIENTATION_LANDSCAPE:
SensorManager.remapCoordinateSystem(temp, SensorManager.AXIS_X,
SensorManager.AXIS_MINUS_Z, rotation);
break;
case Configuration.ORIENTATION_PORTRAIT:
SensorManager.remapCoordinateSystem(temp, SensorManager.AXIS_Y,
SensorManager.AXIS_MINUS_Z, rotation);
break;
}
private int getRotation() {
WindowManager lWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
Configuration cfg = getResources().getConfiguration();
int lRotation = lWindowManager.getDefaultDisplay().getRotation();
if( (((lRotation == Surface.ROTATION_0) ||(lRotation == Surface.ROTATION_180)) &&
(cfg.orientation == Configuration.ORIENTATION_LANDSCAPE)) ||
(((lRotation == Surface.ROTATION_90) ||(lRotation == Surface.ROTATION_270)) &&
(cfg.orientation == Configuration.ORIENTATION_PORTRAIT))){
return Configuration.ORIENTATION_LANDSCAPE;
}
return Configuration.ORIENTATION_PORTRAIT;
}