2014-07-08 105 views
2

我正在使用智能手机来控制桌面上的指针的应用程序。我在商店里看到很多这种类型的应用程序,所以我知道这不是不可能的!我正在为大学做这个,我不是在寻找完美的应用程序,但我无法确定我应该使用哪种传感器......我尝试使用旋转矢量传感器,它适用于俯仰(指针的y值)但方位角不一样(对于x轴)......我没有过滤数值。你认为我必须改变传感器还是仅仅是过滤数据的问题?有小费吗?Android版Air Mouse,哪款传感器?

编辑:在阿里的视频陀螺鼠标是真正的光滑和准确,它说这是非常简单的事,但不适合我!我旋转矩阵,得到角度变化,然后我将它映射到像素,但它非常不准确(方位角)!我会发布代码,以清楚地表明我在做什么:

//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; 
+0

加速度计怎么样? –

+0

@PozzoApps:方向不准确 –

+0

这不是一个答案,只是一个评论,我也很好奇,这就是为什么我投了你的问题=] –

回答

2

你在找什么最有可能是gyro mouse。基本上,您只需沿着每个轴以角度累积更改。代码片段也在链接的视频中给出。


UPDATE:是的,你需要的传感器融合。不幸的是,我不熟悉Android API或Android传感器,所以我只能猜想。我会尝试SensorManager.getRotationMatrix()获取旋转矩阵,然后用SensorManager.getAngleChange()确定角度的变化。然后你只需沿着每个轴累积变化。

+0

它不是只使用陀螺仪吗?他在谈论传感器融合......旋转矢量是一种复合传感器,所以它不仅仅比陀螺更好吗? –

+0

@ user3356218请检查我的更新答案。希望这可以帮助。 – Ali

+0

我在我的问题中添加了代码,但我仍然不明白陀螺仪鼠标在视频中使用了哪个传感器,因为我的旋转矢量(传感器融合)非常不准确! –