Back to project page BleSensorTag.
The source code is released under:
MIT License
If you think the Android project BleSensorTag listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package sample.ble.sensortag.fusion.engine; //from ww w.j ava 2 s . c om import java.util.Timer; public abstract class SensorFusionHelper { private static final int TIMER_RATE = 30; private Timer fuseTimer = null; private SensorFusionEngine fusionEngine = null; private boolean isRunning = false; public void start() { fuseTimer = new Timer(); fusionEngine = new SensorFusionEngine(); } public void stop() { if (fuseTimer != null) { fuseTimer.cancel(); fuseTimer = null; } if (fusionEngine != null) { fusionEngine.cancel(); fusionEngine = null; } } private synchronized void startSensorFusion() { if (isRunning) return; fuseTimer.scheduleAtFixedRate(fusionEngine, 0, TIMER_RATE); isRunning = true; } public void onAccDataUpdate(float[] acc) { if (fusionEngine == null) return; if (fusionEngine.scheduledExecutionTime() == 0) startSensorFusion(); fusionEngine.onAccDataUpdate(acc); onOrientationChanged(fusionEngine.getFusedOrientation()); } public void onMagDataUpdate(float[] magnet) { if (fusionEngine == null) return; if (fusionEngine.scheduledExecutionTime() == 0) startSensorFusion(); fusionEngine.onMagDataUpdate(magnet); onOrientationChanged(fusionEngine.getFusedOrientation()); } public void onGyroDataUpdate(float[] gyro) { if (fusionEngine == null) return; if (fusionEngine.scheduledExecutionTime() == 0) startSensorFusion(); fusionEngine.onGyroDataUpdate(gyro); onOrientationChanged(fusionEngine.getFusedOrientation()); } public abstract void onOrientationChanged(float[] orientation); }