gpt4 book ai didi

Android加速度计和Android版本

转载 作者:行者123 更新时间:2023-11-29 18:14:47 27 4
gpt4 key购买 nike

自 Android 3.0 起,必须重新映射 android.hardware.SensorManager.getRotationMatrix 方法结果才能像以前的 Android 版本一样工作。

我使用下一个代码:

android.hardware.SensorManager.getRotationMatrix(newm, null, mAccelerometerValues, mMagneticValues);
if( sdk >= 11){ //Honeycomb
android.hardware.SensorManager.remapCoordinateSystem(newm,
android.hardware.SensorManager.AXIS_MINUS_Y,
android.hardware.SensorManager.AXIS_X,
newm);
}

现在,在 Android Ice Cream Sandwich (4.0) 上,SensorManager 就像在 Android 2.X 上一样工作。我的问题是:

加速度计只能在平板电脑上旋转?加速度计仅在 Android 3.X 上旋转?是否有任何示例说明如何在任何 Android 版本中读取加速度计?

最佳答案

经过一些调查,我找到了解决方案:

平板电脑的默认方向为 LANDSCAPE,因此当方向为 LANDSCAPE 时屏幕旋转为 0 或 180,而智能手机为 PORTRAIT。我使用下一个代码来区分平板电脑和智能手机:

Display display = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int orientation = getScreenOrientation(display);
int rotation = display.getRotation();

remapCoordinates = (orientation == Configuration.ORIENTATION_LANDSCAPE && rotation == Surface.ROTATION_0) ||
(orientation == Configuration.ORIENTATION_LANDSCAPE && rotation == Surface.ROTATION_180) ||
(orientation == Configuration.ORIENTATION_PORTRAIT && rotation == Surface.ROTATION_90) ||
(orientation == Configuration.ORIENTATION_PORTRAIT && rotation == Surface.ROTATION_270);

其中 getScreenOrientation 方法是:

public static int getScreenOrientation(Display display){


int orientation;

if(display.getWidth()==display.getHeight()){
orientation = Configuration.ORIENTATION_SQUARE;
}else{ //if widht is less than height than it is portrait
if(display.getWidth() < display.getHeight()){
orientation = Configuration.ORIENTATION_PORTRAIT;
}else{ // if it is not any of the above it will defineitly be landscape
orientation = Configuration.ORIENTATION_LANDSCAPE;
}
}
return orientation;
}

现在,仅当默认方向为横向时,我才像以前一样重新映射坐标:

if( remapCoordinates){ 
android.hardware.SensorManager.remapCoordinateSystem(newm,
android.hardware.SensorManager.AXIS_MINUS_Y,
android.hardware.SensorManager.AXIS_X,
newm);
}

最好的问候。

关于Android加速度计和Android版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8816521/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com