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;
/ * f r o m w w w . j a v a 2 s . c o 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