Android Open Source - interdroid-swan Battery 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   ww  w. j a v a  2 s .c o  m
import interdroid.swan.R;
import interdroid.swan.sensors.AbstractConfigurationActivity;
import interdroid.swan.sensors.AbstractVdbSensor;
import interdroid.vdb.content.avro.AvroContentProviderProxy;
import android.content.BroadcastReceiver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Bundle;

/**
 * A sensor for battery temperature, level and voltage.
 * 
 * @author nick <palmer@cs.vu.nl>
 * 
 */
public class BatterySensor extends AbstractVdbSensor {

  /**
   * 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.battery_preferences;
    }

  }

  /**
   * The level field.
   */
  public static final String LEVEL_FIELD = "level";
  /**
   * The voltage field.
   */
  public static final String VOLTAGE_FIELD = "voltage";
  /**
   * The temperature field.
   */
  public static final String TEMPERATURE_FIELD = "temperature";
  /**
   * The plugged field
   */
  public static final String PLUGGED_FIELD = "plugged";
  
  /**
   * The pluggedText field
   */
  public static final String STATUS_TEXT_FIELD = "status_text";

  /**
   * The schema for this sensor.
   */
  public static final String SCHEME = getSchema();

  /**
   * The provider for this sensor.
   * 
   * @author nick <palmer@cs.vu.nl>
   * 
   */
  public static class Provider extends AvroContentProviderProxy {

    /**
     * Construct the provider for this sensor.
     */
    public Provider() {
      super(SCHEME);
    }

  }

  /**
   * @return the schema for this sensor.
   */
  private static String getSchema() {
    String scheme = "{'type': 'record', 'name': 'battery', "
        + "'namespace': 'interdroid.context.sensor.battery',"
        + "\n'fields': [" + SCHEMA_TIMESTAMP_FIELDS + "\n{'name': '"
        + LEVEL_FIELD + "', 'type': 'int'}," + "\n{'name': '"
        + VOLTAGE_FIELD + "', 'type': 'int'}," + "\n{'name': '"
        + PLUGGED_FIELD + "', 'type': 'int'}," + "\n{'name': '"
        + STATUS_TEXT_FIELD + "', 'type': 'string'}," + "\n{'name': '"
        + TEMPERATURE_FIELD + "', 'type': 'int'}" + "\n]" + "}";
    return scheme.replace('\'', '"');
  }

  /**
   * The receiver for battery events.
   */
  private BroadcastReceiver batteryReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(final Context context, final Intent intent) {
      if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) {
        long now = System.currentTimeMillis();

        ContentValues values = new ContentValues();
        values.put(LEVEL_FIELD,
            intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0));
        values.put(TEMPERATURE_FIELD,
            intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0));
        values.put(VOLTAGE_FIELD,
            intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0));
        values.put(PLUGGED_FIELD,
            intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0));
        values.put(STATUS_TEXT_FIELD,
            pluggedAsText(intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0)));
        putValues(values, now);
      }
    }
    
    private String pluggedAsText(int i){
      switch (i) {
      case 0:
        return "Charger not plugged";
      case 1:
        return "AC Charger plugged";
      case 2:
        return "USB Charger plugged";
      default:
        return "Unknown";
      }
    }

  };

  @Override
  public final String[] getValuePaths() {
    return new String[] { TEMPERATURE_FIELD, LEVEL_FIELD, VOLTAGE_FIELD,
        PLUGGED_FIELD, STATUS_TEXT_FIELD };
  }

  @Override
  public void initDefaultConfiguration(final Bundle defaults) {
  }

  @Override
  public final String getScheme() {
    return SCHEME;
  }

  @Override
  public void onConnected() {
  }

  @Override
  public final void register(final String id, final String valuePath,
      final Bundle configuration) {
    if (registeredConfigurations.size() == 1) {
      registerReceiver(batteryReceiver, new IntentFilter(
          Intent.ACTION_BATTERY_CHANGED));
    }
  }

  @Override
  public final void unregister(final String id) {
    if (registeredConfigurations.size() == 0) {
      unregisterReceiver(batteryReceiver);
    }
  }

  @Override
  public final void onDestroySensor() {
    if (registeredConfigurations.size() > 0) {
      unregisterReceiver(batteryReceiver);
    }
  }

}




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