加速度计android倾斜功能



我正在测试加速计,并尝试编写一个程序,根据用户倾斜手机的位置显示文本。我有一个文本,将显示当用户倾斜手机右/左和上/下。

我是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(),应该没问题。

最新更新