簡體   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