繁体   English   中英

加速度计android倾斜功能

[英]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() - 它取差值的绝对值,这意味着它始终为正值,并且deltaXdeltaY永远不会<0。 删除Math.abs()应该没问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM