Back to project page rcdroid.
The source code is released under:
Copyright (c) 2013, Jamie Furness (jamie@jamierf.co.uk) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following...
If you think the Android project rcdroid 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 com.jamierf.rcdroid.input.sensor; //ww w. j a v a 2 s . c om import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import com.google.common.base.Optional; import com.jamierf.rcdroid.input.api.Coordinate; public class RotationSensor extends AbstractSensor<Coordinate> { private final Sensor sensor; private final Coordinate currentValue; public RotationSensor(SensorManager manager) { sensor = manager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR); if (sensor == null) throw new RuntimeException("No rotation vector sensor found"); currentValue = new Coordinate(0, 0, 0); manager.registerListener(new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { final float x = event.values[0]; final float y = event.values[1]; final float z = event.values[2]; synchronized (RotationSensor.this) { // TODO: Set the value currentValue.set(x, y, z); accuracy = event.accuracy; setValueChanged(event.timestamp); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }, sensor, sensor.getMinDelay()); } @Override public synchronized Optional<Coordinate> getValue() { if (this.isNoAccuracy()) return Optional.absent(); return Optional.of(currentValue); } }