android - Android 空中鼠标,哪个传感器?

标签 android android-sensors gyroscope

我正在开发一个使用智能手机控制桌面上指针的应用程序。我在商店里看到了很多这种类型的应用程序,所以我知道这并非不可能!我正在为大学做这个,我不是在寻找完美的应用程序,但我不知道我应该使用哪个传感器...我尝试使用旋转矢量传感器,它对于俯仰(指针的 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/

相关文章:

android - 在不更改 Activity 类的情况下将回调传递给 startActivityForResult

android - Spotify 的 Android SDK 无法可靠地播放时长较短的歌曲

iphone - 如何相对于用户握持设备的方式绕 Y 轴旋转?

arduino - 从 MPU-9250 获取航向/方向

javascript - 标准化设备方向数据

android - 默认 SharedPreferences 不保存值

java - 如何播放从 RingtonePreference 中选择的铃声

android - 如何检测手持设备的手用户

android - 在Android上关闭屏幕时以编程方式关闭屏幕

android - Galaxy s3 有温度传感器吗?