Android Open Source - interdroid-swan Monitor Thread






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;
/*from w w w .  j  a va 2  s.co m*/
import java.util.Map;

import android.content.ContentValues;

public class MonitorThread extends Thread {

  private AbstractCuckooSensor sensor;
  private String valuePath;
  private Map<String, Object> configuration;
  volatile boolean shouldStop = false;

  public MonitorThread(AbstractCuckooSensor sensor, final String valuePath,
      final Map<String, Object> configuration) {
    this.sensor = sensor;
    this.valuePath = valuePath;
    this.configuration = configuration;
  }

  public void run() {
    Map<String, Object> previous = null;
    while (!shouldStop) {
      Map<String, Object> values = sensor.getPoller().poll(valuePath,
          configuration);
      if (changed(previous, values)) {
        System.out.println("change! " + previous + " -> " + values);
        previous = values;
        sensor.putValues(toContentValues(values),
            System.currentTimeMillis());
      }
      try {
        sleep(sensor.getPoller().getInterval(configuration, false));
      } catch (InterruptedException e) {
        // ignore, we will exit the loop anyways
      }
    }
  }

  private boolean changed(Map<String, Object> old, Map<String, Object> current) {
    if (current == null) {
      // new values are not valid
      return false;
    } else if (old == null) {
      // old values were invalid
      return true;
    } else {
      for (String key : old.keySet()) {
        if (!old.get(key).equals(current.get(key))) {
          // yes, we found a change
          return true;
        }
      }
    }
    return false;
  }

  private ContentValues toContentValues(Map<String, Object> map) {
    ContentValues values = new ContentValues();
    for (String key : map.keySet()) {
      Object value = map.get(key);
      if (value instanceof Boolean) {
        values.put(key, (Boolean) value);
      } else if (value instanceof Byte) {
        values.put(key, (Byte) value);
      } else if (value instanceof byte[]) {
        values.put(key, (byte[]) value);
      } else if (value instanceof Double) {
        values.put(key, (Double) value);
      } else if (value instanceof Float) {
        values.put(key, (Float) value);
      } else if (value instanceof Integer) {
        values.put(key, (Integer) value);
      } else if (value instanceof Long) {
        values.put(key, (Long) value);
      } else if (value instanceof Short) {
        values.put(key, (Short) value);
      } else if (value instanceof String) {
        values.put(key, (String) value);
      } else {
        throw new RuntimeException(
            "Impossible to convert type in map to contentvalues: "
                + value);
      }
    }
    return values;
  }

}




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