这是我的代码:
@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的值,并将其发布到云中。所以基本上,方向应该每秒发布一次。
我想不出如何让它每隔一段时间就能工作。
发布于 2019-08-26 00:09:38
将所需数据存储在变量中,创建一个任务以使用计时器函数以固定间隔运行更新函数,
new Timer().scheduleAtFixedRate(TimerTask task, long delay, long period)
https://stackoverflow.com/questions/57647394
复制相似问题