我是android开发的新手。我正在创建一个简单的应用程序,只要更改传感器,该应用程序就会移动位图。我正在使用传感器TYPE_ACCELEROMETER
但是问题是位图移动得太快,即使传感器略有变化,位图也会在一处晃动。我想要的只是延迟onSensorChange返回值
所以请帮我
这是我的SensorManager代码

public Can(Context context) {
        // TODO Auto-generated constructor stub
        super(context);
        ourHolder = getHolder();
        PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "hi");
        sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        if (sm.getSensorList(Sensor.TYPE_ACCELEROMETER).size() != 0) {
            Sensor s = sm.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
            sm.registerListener(this, s, SensorManager.SENSOR_DELAY_GAME);
        }
        ball = BitmapFactory
                .decodeResource(getResources(), R.drawable.ball);
        test = BitmapFactory.decodeResource(getResources(),
                R.drawable.ic_launcher);
        ClockStart = (float) System.currentTimeMillis();
        ballwidth = ball.getWidth();
        ballheight = ball.getHeight();
    }


这是onSensorChange的作用

    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub
        try {
            Thread.sleep(16);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        sensorY = event.values[0];
        sensorX = event.values[1];
    }


任何帮助将不胜感激

最佳答案

那绝对不是你想做的。实际上,这会引起重大问题。如果绘图过于频繁,您想要做的就是跳过对onSensorChanged的调用。如果您对微小的晃动有反应,则仅在变化大于一定量时才设置sensorY和sensorX。

顺便说一下,加速度计很吵。即使放置在平坦,稳定的表面上,它也会略微跳动。您需要期待这种情况的发生。

关于android - 如何在Android中延迟onSensorChange,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22496489/

10-12 05:13