Android Open Source - interdroid-swan Movement Sensor






From Project

Back to project page interdroid-swan.

License

The source code is released under:

Copyright (c) 2008-2011 Vrije Universiteit, The Netherlands All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the follo...

If you think the Android project interdroid-swan 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 interdroid.swan.sensors.impl;
//from  w  ww.j a v  a 2s  .  c o m
import interdroid.swan.R;
import interdroid.swan.sensors.AbstractConfigurationActivity;
import interdroid.swan.sensors.AbstractMemorySensor;

import java.util.List;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;

public class MovementSensor extends AbstractMemorySensor {

  public static final String TAG = "MovementSensor";

  /**
   * The configuration activity for this sensor.
   * 
   * @author nick <palmer@cs.vu.nl>
   * 
   */
  public static class ConfigurationActivity extends
      AbstractConfigurationActivity {

    @Override
    public final int getPreferencesXML() {
      return R.xml.movement_preferences;
    }

  }

  /** Value of ACCURACY must be one of SensorManager.SENSOR_DELAY_* */
  public static final String ACCURACY = "accuracy";

  public static final String X_FIELD = "x";
  public static final String Y_FIELD = "y";
  public static final String Z_FIELD = "z";
  public static final String TOTAL_FIELD = "total";

  protected static final int HISTORY_SIZE = 80 * 160; //hz x seconds

  private Sensor accelerometer;
  private SensorManager sensorManager;
  private SensorEventListener sensorEventListener = new SensorEventListener() {

    public void onAccuracyChanged(Sensor sensor, int accuracy) {
      if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        currentConfiguration.putInt(ACCURACY, accuracy);
      }
    }

    public void onSensorChanged(SensorEvent event) {
      long now = System.currentTimeMillis();
      if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        for (int i = 0; i < 3; i++) {
          putValueTrimSize(VALUE_PATHS[i], null, now,
              (double) event.values[i], HISTORY_SIZE);
        }
        double len2 = (double) Math.sqrt(event.values[0]
            * event.values[0] + event.values[1] * event.values[1]
            + event.values[2] * event.values[2]);
        putValueTrimSize(TOTAL_FIELD, null, now, len2, HISTORY_SIZE);
      }
    }
  };

  @Override
  public String[] getValuePaths() {
    return new String[] { X_FIELD, Y_FIELD, Z_FIELD, TOTAL_FIELD };
  }

  @Override
  public void initDefaultConfiguration(Bundle DEFAULT_CONFIGURATION) {
    DEFAULT_CONFIGURATION.putInt(ACCURACY,
        SensorManager.SENSOR_DELAY_NORMAL);
  }

  @Override
  public void onConnected() {
    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    List<Sensor> sensorList = sensorManager
        .getSensorList(Sensor.TYPE_ACCELEROMETER);
    if (sensorList.size() > 0) {
      accelerometer = sensorList.get(0);
    } else {
      Log.e(TAG, "No accelerometer found on device!");
    }
  }

  @Override
  public final void register(String id, String valuePath, Bundle configuration) {
    updateAccuracy();
  }

  private void updateAccuracy() {
    sensorManager.unregisterListener(sensorEventListener);
    if (registeredConfigurations.size() > 0) {

      int highestAccuracy = mDefaultConfiguration.getInt(ACCURACY);
      for (Bundle configuration : registeredConfigurations.values()) {
        if (configuration == null) {
          continue;
        }
        if (configuration.containsKey(ACCURACY)) {
          // accuracy can be string or int
          if (configuration.getString(ACCURACY, null) == null) {
            highestAccuracy = Math.min(highestAccuracy,
                configuration.getInt(ACCURACY));
          } else {
            highestAccuracy = Math.min(highestAccuracy, Integer
                .parseInt(configuration.getString(ACCURACY)));
          }

        }
      }
      highestAccuracy = Math.max(highestAccuracy,
          SensorManager.SENSOR_DELAY_FASTEST);
      sensorManager.registerListener(sensorEventListener, accelerometer,
          highestAccuracy);
    }

  }

  @Override
  public final void unregister(String id) {
    updateAccuracy();
  }

  @Override
  public final void onDestroySensor() {
    sensorManager.unregisterListener(sensorEventListener);
  }

  @Override
  public float getCurrentMilliAmpere() {
    return accelerometer.getPower();
  }
}




Java Source Code List

interdroid.swan.ExpressionListener.java
interdroid.swan.ExpressionManager.java
interdroid.swan.SensorConfigurationException.java
interdroid.swan.SensorInfo.java
interdroid.swan.SwanException.java
interdroid.swan.TriStateExpressionListener.java
interdroid.swan.ValueExpressionListener.java
interdroid.swan.crossdevice.Converter.java
interdroid.swan.crossdevice.CrossDeviceReceiver.java
interdroid.swan.crossdevice.Pusher.java
interdroid.swan.crossdevice.Registry.java
interdroid.swan.crossdevice.SwanGCMConstants.java
interdroid.swan.crossdevice.SwanLakeActivity.java
interdroid.swan.engine.EvaluationEngineReceiver.java
interdroid.swan.engine.EvaluationEngineService.java
interdroid.swan.engine.EvaluationManager.java
interdroid.swan.engine.ExpressionViewerActivity.java
interdroid.swan.engine.QueuedExpression.java
interdroid.swan.engine.SensorSetupFailedException.java
interdroid.swan.engine.SensorViewerActivity.java
interdroid.swan.engine.TextProgressBar.java
interdroid.swan.sensors.AbstractConfigurationActivity.java
interdroid.swan.sensors.AbstractCuckooSensor.java
interdroid.swan.sensors.AbstractMemorySensor.java
interdroid.swan.sensors.AbstractSensorBase.java
interdroid.swan.sensors.AbstractVdbSensor.java
interdroid.swan.sensors.MonitorThread.java
interdroid.swan.sensors.SensorInterface.java
interdroid.swan.sensors.TimeSensor.java
interdroid.swan.sensors.impl.BatterySensor.java
interdroid.swan.sensors.impl.BluetoothSensor.java
interdroid.swan.sensors.impl.CalendarSensor.java
interdroid.swan.sensors.impl.CallSensor.java
interdroid.swan.sensors.impl.GyroscopeSensor.java
interdroid.swan.sensors.impl.IntentSensor.java
interdroid.swan.sensors.impl.LightSensor.java
interdroid.swan.sensors.impl.LocationSensor.java
interdroid.swan.sensors.impl.LogCatSensor.java
interdroid.swan.sensors.impl.MagnetometerSensor.java
interdroid.swan.sensors.impl.MovementSensor.java
interdroid.swan.sensors.impl.PolarHeartRate.java
interdroid.swan.sensors.impl.PressureSensor.java
interdroid.swan.sensors.impl.ProximitySensor.java
interdroid.swan.sensors.impl.ScreenSensor.java
interdroid.swan.sensors.impl.SignalStrengthSensor.java
interdroid.swan.sensors.impl.SmartLocationSensor.java
interdroid.swan.sensors.impl.SoundSensor.java
interdroid.swan.sensors.impl.TemperatureSensor.java
interdroid.swan.sensors.impl.TwitterSensor.java
interdroid.swan.sensors.impl.WifiSensor.java
interdroid.swan.sensors.impl.package-info.java
interdroid.swan.swansong.BinaryLogicOperator.java
interdroid.swan.swansong.ComparatorResult.java
interdroid.swan.swansong.Comparator.java
interdroid.swan.swansong.ComparisonExpression.java
interdroid.swan.swansong.ConstantValueExpression.java
interdroid.swan.swansong.ExpressionFactory.java
interdroid.swan.swansong.ExpressionParseException.java
interdroid.swan.swansong.Expression.java
interdroid.swan.swansong.HistoryReductionMode.java
interdroid.swan.swansong.LogicExpression.java
interdroid.swan.swansong.LogicOperator.java
interdroid.swan.swansong.MathOperator.java
interdroid.swan.swansong.MathValueExpression.java
interdroid.swan.swansong.ParseableEnum.java
interdroid.swan.swansong.Parseable.java
interdroid.swan.swansong.Result.java
interdroid.swan.swansong.SensorValueExpression.java
interdroid.swan.swansong.TimestampedValue.java
interdroid.swan.swansong.TriStateExpression.java
interdroid.swan.swansong.TriState.java
interdroid.swan.swansong.UnaryLogicOperator.java
interdroid.swan.swansong.ValueExpression.java
interdroid.swan.ui.EnterConstantDialog.java
interdroid.swan.ui.ExpressionBuilderActivity.java
interdroid.swan.ui.LaunchService.java
interdroid.swan.ui.MergeExpressionDialog.java
interdroid.swan.ui.NewExpressionDialog.java
interdroid.swan.ui.NewMathExpressionDialog.java
interdroid.swan.ui.SelectComparatorDialog.java
interdroid.swan.ui.SelectExpressionDialog.java
interdroid.swan.ui.SelectOperatorDialog.java
interdroid.swan.ui.SelectSensorDialog.java
interdroid.swan.ui.SelectTypedValueDialog.java
interdroid.swan.ui.package-info.java
interdroid.swan.util.SeekBarPreference.java
interdroid.swan.util.TimePreference.java