Android Open Source - interdroid-swan Time 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;
/*  w ww .  j  a  v a2s  .com*/
import interdroid.swan.R;
import interdroid.swan.swansong.Comparator;
import interdroid.swan.swansong.Result;
import interdroid.swan.swansong.TriState;

import java.util.Calendar;

import android.os.Bundle;

public class TimeSensor {

  public static final String CURRENT_MS_FIELD = "current";
  public static final String DAY_OF_WEEK_FIELD = "day_of_week";
  public static final String HOUR_OF_DAY_FIELD = "hour_of_day";

  public static final String TAG = "TimeSensor";

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

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

  }

  public String[] getValuePaths() {
    return new String[] { CURRENT_MS_FIELD, DAY_OF_WEEK_FIELD,
        HOUR_OF_DAY_FIELD };
  }

  private static boolean compare(Comparator comparator, long a, long b) {
    switch (comparator) {
    case EQUALS:
      return a == b;
    case NOT_EQUALS:
      return a != b;
    case GREATER_THAN:
      return a > b;
    case GREATER_THAN_OR_EQUALS:
      return a >= b;
    case LESS_THAN:
      return a < b;
    case LESS_THAN_OR_EQUALS:
      return a <= b;
    default:
      return true;
    }
  }

  @SuppressWarnings("rawtypes")
  public static Result determineValue(long now, String valuePath,
      Bundle configuration, Comparator comparator, Comparable right) {
    if (CURRENT_MS_FIELD.equals(valuePath)) {
      long asMillis = (Long) right;
      return new Result(now > asMillis ? Long.MAX_VALUE : asMillis,
          compare(comparator, now, asMillis) ? TriState.TRUE
              : TriState.FALSE);

    } else if (HOUR_OF_DAY_FIELD.equals(valuePath)) {
      Calendar calendar = Calendar.getInstance();
      calendar.setTimeInMillis(now);
      long nowHourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
      long rightHourOfDay = (Long) right;
      if (nowHourOfDay < rightHourOfDay) {
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, (int) rightHourOfDay);
      } else if (nowHourOfDay == rightHourOfDay) {
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.roll(Calendar.HOUR_OF_DAY, true);
      } else if (nowHourOfDay > rightHourOfDay) {
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, (int) rightHourOfDay);
        calendar.roll(Calendar.DAY_OF_MONTH, true);
      }
      Result result = new Result(now, compare(comparator, nowHourOfDay,
          rightHourOfDay) ? TriState.TRUE : TriState.FALSE);
      result.setDeferUntil(calendar.getTimeInMillis());
      result.setDeferUntilGuaranteed(true);
      return result;
    } else if (DAY_OF_WEEK_FIELD.equals(valuePath)) {
      Calendar calendar = Calendar.getInstance();
      calendar.setTimeInMillis(now);
      long nowDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
      long rightDayOfWeek = (Long) right;
      if (nowDayOfWeek < rightDayOfWeek) {
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.DAY_OF_WEEK, (int) rightDayOfWeek);
      } else if (nowDayOfWeek == rightDayOfWeek) {
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.roll(Calendar.DAY_OF_WEEK, true);
      } else if (nowDayOfWeek > rightDayOfWeek) {
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.DAY_OF_WEEK, (int) rightDayOfWeek);
        calendar.roll(Calendar.WEEK_OF_YEAR, true);
      }
      Result result = new Result(now, compare(comparator, nowDayOfWeek,
          rightDayOfWeek) ? TriState.TRUE : TriState.FALSE);
      result.setDeferUntil(calendar.getTimeInMillis());
      result.setDeferUntilGuaranteed(true);
      return result;
    }

    return new Result(now, TriState.UNDEFINED);
  }
}




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