【问题标题】:How to delay onSensorChange in Android如何在 Android 中延迟 onSensorChange
【发布时间】:2014-03-19 04:50:24
【问题描述】:

我是安卓开发新手。我正在创建一个简单的应用程序,只要传感器发生变化,它就会移动位图。我正在使用传感器 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];
    }

任何帮助将不胜感激

【问题讨论】:

    标签: android bitmap accelerometer sensors


    【解决方案1】:

    这绝对不是你想做的。事实上,它会引起很大的问题。如果你画得太频繁,你想做的就是跳过一些对 onSensorChanged 的​​调用。如果您对太小的震动做出反应,您要做的只是在变化大于一定量时设置 sensorY 和 sensorX。

    顺便说一下,加速度计很吵。即使放在平坦稳定的表面上,它也会跳跃一下。你需要预料到这种情况会发生。

    【讨论】:

    • 那么我应该使用哪种传感器类型
    • 哦,加速度计是正确的传感器类型。只是你需要在其中投入更多的智慧。它为您提供原始传感器值,您需要对其进行过滤以排除噪音并决定更新视图的频率。
    • 但是我该怎么做对不起我对这一切都是新手
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2023-03-13
    相关资源
    最近更新 更多