gpt4 book ai didi

android - 如何使用传感器获取手机的角度/度数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:25:38 29 4
gpt4 key购买 nike

我正在尝试使用 TYPE_ACCELEROMETER 传感器获取手机角度。我的目标是仅在手机倾斜后获取角度值。它有效,但问题是当我 Handlebars 机正面朝上放在 table 上时,它仍然说 isLandscape = true;

private boolean isLandscape;

mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(
Sensor.TYPE_ACCELEROMETER),1000000);
private final SensorEventListener mSensorListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent mSensorEvent) {
float X_Axis = mSensorEvent.values[0];
float Y_Axis = mSensorEvent.values[1];
double angle = Math.atan2(X_Axis, Y_Axis)/(Math.PI/180);

if(!isLandscape) {
if(angle > 80) {
Orientation = 90;
isLandscape = true;
}
}
else
{

if(Math.abs(angle) < 10) {
Orientation = 0; //portrait
isLandscape = false;
}
}
}

public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};

仅在手机倾斜后获取手机角度的最佳方法是什么?我很抱歉英语不好,

谢谢。

最佳答案

我不知道我是否理解你的问题,但我认为你希望你的应用程序仅在手机纵向时计算倾斜角度,首先你需要获取 mSensorEvent.values[ 的值0] 并且在这种情况下,如果处于站立状态的手机将返回 0 ,向右倾斜将是从 1 到 9 的负值,向左倾斜将是正值。

然后您必须执行所有这些操作,以防 mSensorEvent.values[1] 值例如在 9 和 7 之间(9 是完美的标准)。以确保设备处于纵向位置。

如果您需要角度值,您可以将 mSensorEvent.values 的浮点值乘以 10。

希望对你有帮助

更新***

你可以试试这个:

    private boolean isLandscape;

@Override
public void onSensorChanged(SensorEvent mSensorEvent) {
float X_Axis = mSensorEvent.values[0];
float Y_Axis = mSensorEvent.values[1];

if((X_Axis <= 6 && X_Axis >= -6) && Y_Axis > 5){
isLandscape = false;
}
else if(X_Axis >= 6 || X_Axis <= -6){
isLandscape = true;
}

}

关于android - 如何使用传感器获取手机的角度/度数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31361328/

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