[英]Accelerometer android tiltfunction
我测试了加速度计,并尝试制作一个程序,根据用户倾斜手机的位置显示文本。 我有一个文本,当用户向右/向左和向上/向下倾斜手机时会显示。
我是 android 新手,所以如果您认为这个问题很愚蠢,请不要投反对票! 告诉我我在这个问题上做错了什么,这样我下次可以做得更好!
下面的代码工作得很好,我只得到正确和顶部..我不知道为什么..
执行此操作的代码:
@Override
public void onSensorChanged(SensorEvent event) {
// get the change of the x,y,z values of the accelerometer
deltaX = Math.abs(lastX - event.values[0]);
deltaY = Math.abs(lastY - event.values[1]);
deltaZ = Math.abs(lastZ - event.values[2]);
if (deltaX > 2){
HideText();
findViewById(R.id.txtRight).setVisibility(View.VISIBLE);
}
if (deltaY > 2)
{
HideText();
findViewById(R.id.txtUp).setVisibility(View.VISIBLE);
}
if (deltaX < -2)
{
HideText();
findViewById(R.id.txtLeft).setVisibility(View.VISIBLE);
}
if (deltaY < -2) {
HideText();
findViewById(R.id.txtUp).setVisibility(View.VISIBLE);
}
/*else if ((deltaX > vibrateThreshold) || (deltaY > vibrateThreshold) || (deltaZ > vibrateThreshold)){
v.vibrate(100);
HideText();
Toast.makeText(getApplicationContext(), "Stop shaking me!!!",
Toast.LENGTH_LONG).show();
}*/
}
如果用户摇晃手机,我尝试使用的注释掉的代码..但会保存以备后用:)
代码看起来不错。 您的问题来自Math.abs()
- 它取差值的绝对值,这意味着它始终为正值,并且deltaX
和deltaY
永远不会<0。 删除Math.abs()
应该没问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.