我正在开发一个使用智能手机控制桌面上指针的应用程序。我在商店里看到了很多这种类型的应用程序,所以我知道这并非不可能!我正在为大学做这个,我不是在寻找完美的应用程序,但我不知道我应该使用哪个传感器...我尝试使用旋转矢量传感器,它对于俯仰(指针的 y 值)很有用但方位角(x 轴)不一样...我没有过滤值。您认为我必须更换传感器还是只是过滤数据的问题?有小费吗?
编辑:阿里视频中的陀螺仪鼠标非常流畅和准确,并且说它很简单,但不适合我!我采用旋转矩阵,获取角度变化,然后将其映射到像素,但它非常不准确(方位角)!我将发布代码以清楚地显示我在做什么:
//get values from Rotation Vector sensor
SensorManager.getRotationMatrixFromVector(rotationMatrix, sensorValues);
SensorManager.getAngleChange(orientationValues, rotationMatrix, prevMatrix);
prevMatrix = rotationMatrix;
azimuth += orientationValues[0];
pitch += orientationValues[1];
//getAngleChange returns radians so I multiply by 100
float dX = (azimuth - lastX)*100.f;
float dY = (pitch - lastY)*100.f;
pixel.x += dX;
pixel.y += dY;
// store values
lastX = azimuth;
lastY = pitch;
prevMatrix = rotationMatrix;
最佳答案
您正在寻找的很可能是 gyro mouse 。基本上,您只需累积沿每个轴的角度变化。链接视频中还给出了代码 fragment 。
更新:是的,您需要传感器融合。不幸的是,我不熟悉 Android API 或 Android 传感器,所以我只能猜测。我会尝试SensorManager.getRotationMatrix()
得到旋转矩阵,然后用 SensorManager.getAngleChange()
确定角度的变化。然后,您只需沿每个轴累积变化即可。
关于android - Android 空中鼠标,哪个传感器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24637131/