首页 > 解决方案 > 如何定期从 onSesorChanged() 传递值

问题描述

这是我的代码:

@Override
public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {

        SensorManager.getRotationMatrixFromVector(rotationMatrix, event.values);

        azimuth = (int) ((Math.toDegrees(SensorManager.getOrientation(rotationMatrix, orientation)[0]) + 360) % 360);
        txt_azimuth.setText("Azimuth : " + Integer.toString(azimuth) + "° " + n);

        if (azimuth >= 337 && azimuth <= 360 || azimuth >= 0 && azimuth <= 22) {
            n = "N"; // 0 deg

        } else if (azimuth > 22 && azimuth < 68) {
            n = "NE"; //45 deg

        } else if (azimuth >= 68 && azimuth <= 112) {
            n = "E"; // 90deg

        } else if (azimuth > 112 && azimuth < 157) {
            n = "SE"; //135deg

        } else if (azimuth >= 157 && azimuth <= 203) {
            n = "S"; //180deg

        } else if (azimuth > 203 && azimuth < 248) {
            n = "SW"; //225deg

        } else if (azimuth >= 248 && azimuth <= 293) {
            n = "W"; //270deg

        } else if (azimuth > 293 && azimuth < 337) {
            n = "NW";//315deg

        }

            try {

                ParticleCloudSDK.getCloud().publishEvent("function name", n, ParticleEventVisibility.PUBLIC, 60);


            } catch (ParticleCloudException e) {
                e.printStackTrace();
           }

       }
  }

onSensorChanged()当手机移动时,方法每秒被调用多次(可能是数千次)。我可以在应用程序屏幕上看到 n 方向的值。那部分正在工作。但我想做的是让方法publish.event()每秒被调用一次,以获取当时 n 的值并将其发布到云端。所以基本上,方向应该每秒发布一次。
我无法弄清楚如何让它每隔一段时间工作。

标签: android

解决方案


将所需数据存储在变量中,创建任务以使用计时器功能以固定间隔运行更新功能,

new Timer().scheduleAtFixedRate(TimerTask task, long delay, long period)

推荐阅读