Android Open Source - rcdroid Acceleration Sensor






From Project

Back to project page rcdroid.

License

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.

Java Source Code

package com.jamierf.rcdroid.input.sensor;
//from  www  .  j av  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 AccelerationSensor extends AbstractSensor<Coordinate> {

    private final Sensor sensor;

    private Coordinate lastValue;
    private Coordinate changeValue;

    public AccelerationSensor(SensorManager manager) {
        sensor = manager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
        if (sensor == null)
            throw new RuntimeException("No accelerometer found");

        changeValue = 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 (AccelerationSensor.this) {
                    if (lastValue == null)
                        lastValue = new Coordinate(x, y, z); // First value received, initialise last to current
                    else
                        lastValue.add(changeValue); // Update the last

                    // Set the change to the current minus the last
                    changeValue.set(x - lastValue.getX(), y - lastValue.getY(), z - lastValue.getZ());
                    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(changeValue);
    }
}




Java Source Code List

com.jamierf.rcdroid.CarActivity.java
com.jamierf.rcdroid.CarService.java
com.jamierf.rcdroid.config.CarConfig.java
com.jamierf.rcdroid.config.ServoConfig.java
com.jamierf.rcdroid.config.WebUIConfig.java
com.jamierf.rcdroid.http.Packet.java
com.jamierf.rcdroid.http.WebController.java
com.jamierf.rcdroid.http.handler.AssetResourceHandler.java
com.jamierf.rcdroid.http.handler.ControlProtocolHandler.java
com.jamierf.rcdroid.http.handler.JsonPOJOHandler.java
com.jamierf.rcdroid.http.listener.ClientListener.java
com.jamierf.rcdroid.http.listener.PacketListener.java
com.jamierf.rcdroid.input.SensorController.java
com.jamierf.rcdroid.input.api.BatteryStatus.java
com.jamierf.rcdroid.input.api.Coordinate.java
com.jamierf.rcdroid.input.sensor.AbstractSensor.java
com.jamierf.rcdroid.input.sensor.AccelerationSensor.java
com.jamierf.rcdroid.input.sensor.BatterySensor.java
com.jamierf.rcdroid.input.sensor.LocationSensor.java
com.jamierf.rcdroid.input.sensor.RotationSensor.java
com.jamierf.rcdroid.input.sensor.listener.SensorListener.java
com.jamierf.rcdroid.logic.CarEngine.java
com.jamierf.rcdroid.logic.packets.AbstractServoHandler.java
com.jamierf.rcdroid.logic.packets.PlayAlarmRequestHandler.java
com.jamierf.rcdroid.logic.packets.SetRotationRequestHandler.java
com.jamierf.rcdroid.logic.packets.SetSpeedRequestHandler.java
com.jamierf.rcdroid.logic.sensors.AccelerationSensorHandler.java
com.jamierf.rcdroid.logic.sensors.BatterySensorHandler.java
com.jamierf.rcdroid.logic.sensors.LocationSensorHandler.java
com.jamierf.rcdroid.logic.sensors.RotationSensorHandler.java