Android Open Source - interdroid-swan Signal Strength 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  w  w.j  av a2 s.co m
import interdroid.swan.R;
import interdroid.swan.sensors.AbstractConfigurationActivity;
import interdroid.swan.sensors.AbstractVdbSensor;
import interdroid.vdb.content.avro.AvroContentProviderProxy;
import android.content.ContentValues;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.util.Log;

public class SignalStrengthSensor extends AbstractVdbSensor {

  private static final String TAG = "SignalStrengthSensor";

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

  }

  /**
   * The gsm signal strength field.
   */
  public static final String GSM_SIGNAL_STRENGTH_FIELD = "gsm_signal_strength";

  /**
   * Is this a gsm or cdma reading?
   */
  public static final String IS_GSM_FIELD = "is_gsm";

  /**
   * The gsm bit error rate field.
   */
  public static final String GSM_BIT_ERROR_RATE_FIELD = "gsm_bit_error_rate";

  /**
   * The cdma dbm field.
   */
  public static final String CDMA_DBM_FIELD = "cdma_dbm";

  /**
   * The cdma EC/IO value in dB*10
   */
  public static final String CDMA_ECIO_FIELD = "cdma_ecio";

  /**
   * The evdo dbm field.
   */
  public static final String EVDO_DBM_FIELD = "evdo_dbm";

  /**
   * The evdo EC/IO value in dB*10
   */
  public static final String EVDO_ECIO_FIELD = "evdo_ecio";

  /**
   * The evdo signal to noise field.
   */
  public static final String EVDO_SNR_FIELD = "evdo_snr";

  /**
   * 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': 'signal', "
        + "'namespace': 'interdroid.context.sensor.signal',"
        + "\n'fields': ["
        + SCHEMA_TIMESTAMP_FIELDS
        + "\n{'name': '"
        + IS_GSM_FIELD
        + "', 'type': 'boolean'},"
        + "\n{'name': '"
        + GSM_SIGNAL_STRENGTH_FIELD
        + "', 'type': 'int'},"
        + "\n{'name': '"
        + GSM_BIT_ERROR_RATE_FIELD
        + "', 'type': 'int'},"
        + "\n{'name': '"
        + CDMA_DBM_FIELD
        + "', 'type': 'int'},"
        + "\n{'name': '"
        + CDMA_ECIO_FIELD
        + "', 'type': 'int'},"
        + "\n{'name': '"
        + EVDO_DBM_FIELD
        + "', 'type': 'int'},"
        + "\n{'name': '"
        + EVDO_ECIO_FIELD
        + "', 'type': 'int'},"
        + "\n{'name': '"
        + EVDO_SNR_FIELD
        + "', 'type': 'int'}" + "\n]" + "}";
    return scheme.replace('\'', '"');
  }

  /**
   * The telephony manager.
   */
  private TelephonyManager telephonyManager;

  /**
   * The phone state listener we use.
   */
  private PhoneStateListener phoneStateListener = new PhoneStateListener() {

    @Override
    public void onSignalStrengthsChanged(SignalStrength signalStrength) {
      long now = System.currentTimeMillis();

      ContentValues values = new ContentValues();

      if (signalStrength.isGsm()) {
        Log.d(TAG,
            "GSM Signal Strength: "
                + signalStrength.getGsmSignalStrength() + ", "
                + signalStrength.getGsmBitErrorRate());
      } else {
        Log.d(TAG,
            "CDMA Signal Strength: " + signalStrength.getCdmaDbm()
                + ", " + signalStrength.getCdmaEcio());
      }

      values.put(IS_GSM_FIELD, signalStrength.isGsm());
      values.put(GSM_SIGNAL_STRENGTH_FIELD,
          signalStrength.getGsmSignalStrength());
      values.put(GSM_BIT_ERROR_RATE_FIELD,
          signalStrength.getGsmBitErrorRate());
      values.put(CDMA_DBM_FIELD, signalStrength.getCdmaDbm());
      values.put(CDMA_ECIO_FIELD, signalStrength.getCdmaEcio());
      values.put(EVDO_DBM_FIELD, signalStrength.getEvdoDbm());
      values.put(EVDO_ECIO_FIELD, signalStrength.getEvdoEcio());
      values.put(EVDO_SNR_FIELD, signalStrength.getEvdoSnr());

      putValues(values, now);
    }
  };

  @Override
  public final String[] getValuePaths() {
    return new String[] { IS_GSM_FIELD, GSM_SIGNAL_STRENGTH_FIELD,
        GSM_BIT_ERROR_RATE_FIELD, CDMA_DBM_FIELD, CDMA_ECIO_FIELD,
        EVDO_DBM_FIELD, EVDO_ECIO_FIELD, EVDO_SNR_FIELD };
  }

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

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

  @Override
  public final void onConnected() {
  }

  @Override
  public final void register(final String id, final String valuePath,
      final Bundle configuration) {
    if (registeredConfigurations.size() == 1) {
      telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
      telephonyManager.listen(phoneStateListener,
          PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
    }
  }

  @Override
  public final void unregister(final String id) {
    if (registeredConfigurations.size() == 0) {
      telephonyManager.listen(phoneStateListener,
          PhoneStateListener.LISTEN_NONE);
    }
  }

  @Override
  public final void onDestroySensor() {
    // Nothing to do
  }

}




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