我正在使用谷歌Nexus 4并尝试编写一个控制鼠标光标在PC上的应用程序。更有说服力的是,当我将手机向右移动时,鼠标光标也应该向右移动。
我现在正在x轴上工作,并按照the document中this answer的说明进行操作。
但我无法得到我想要的结果。当我将手机向右移动时,光标向右移动,然后向左移动。这是我的代码的一部分:
@Override
public void onSensorChanged(SensorEvent event)
{
// sampling acceleration
do
{
acceleration_x[1] = acceleration_x[1] + (int) event.values[0];
count_x++;
} while ( count_x < 64);
acceleration_x[1] = acceleration_x[1] >> 6;
count_x = 0;
//Mechanical Filtering
if( (acceleration_x[1] <= 3) && (acceleration_x[1] >= -3) )
acceleration_x[1] = 0;
// first integration
velocity_x[1] = velocity_x[0] + acceleration_x[0] +
((acceleration_x[1] - acceleration_x[0]) >> 1);
// second integration
position_x[1] = position_x[0] + velocity_x[0] +
((velocity_x[1] - velocity_x[0]) >> 1);
acceleration_x[0] = acceleration_x[1];
velocity_x[0] = velocity_x[1];
sendData.sendPacket(position_x[1], 0); // sending data(x,y) to PC
movement_end_check(event);
position_x[0] = position_x[1];
}
整合公式和movement_end_check方法取自文档。
那么,你能帮我解决这个问题吗?
答案 0 :(得分:0)
你永远不会在你的速度/加速度列表中增加位置。它始终写入1.这不是它的工作原理 - 想一想,如果总是写1是答案,为什么有一个数组?