gpt4 book ai didi

android - 哪个传感器用于旋转安卓手机?

转载 作者:太空狗 更新时间:2023-10-29 16:09:22 33 4
gpt4 key购买 nike

假设您指着电视。您的手机紧握在手中。现在,转动您的手腕。

我需要使用哪个传感器来检测这种运动?

陀螺仪?方向?加速度计?

最佳答案

传感器 TYPE_MAGNETIC_FIELDTYPE_ACCELEROMETER 可以很好地检测到这一点(因为 TYPE_ORIENTATION 现已弃用)。

你需要:

几个矩阵:

private float[] mValuesMagnet      = new float[3];
private float[] mValuesAccel = new float[3];
private float[] mValuesOrientation = new float[3];

private float[] mRotationMatrix = new float[9];

一个监听器,用于捕获传感器发送的值(这将是 SensorManager.registerListener() 的一个参数,您必须调用它来设置您的传感器):

private final SensorEventListener mEventListener = new SensorEventListener() {
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}

public void onSensorChanged(SensorEvent event) {
// Handle the events for which we registered
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
System.arraycopy(event.values, 0, mValuesAccel, 0, 3);
break;

case Sensor.TYPE_MAGNETIC_FIELD:
System.arraycopy(event.values, 0, mValuesMagnet, 0, 3);
break;
}
};

您还需要计算方位角、俯仰角和横滚角:

    SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel, mValuesMagnet);
SensorManager.getOrientation(mRotationMatrix, mValuesOrientation);

mValuesOrientation 然后填充:

  • mValuesOrientation[0]:方位角,绕Z轴旋转。
  • mValuesOrientation[1]:俯仰,绕X轴旋转。
  • mValuesOrientation[2]:滚动,绕Y轴旋转。

检查 documentation of getOrientation()了解轴是如何定义的。您可能需要使用 SensorManager.remapCoordinateSystem() 重新定义这些轴。

关于android - 哪个传感器用于旋转安卓手机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6846743/

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