Android Open Source - interdroid-swan Log Cat 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 . ja v a2 s  .com
import interdroid.swan.R;
import interdroid.swan.sensors.AbstractConfigurationActivity;
import interdroid.swan.sensors.AbstractMemorySensor;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

import android.os.Bundle;
import android.util.Log;

public class LogCatSensor extends AbstractMemorySensor {

  private static final String TAG = "LogCat Sensor";

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

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

  }

  public static final String LOG_FIELD = "log";

  public static final String LOGCAT_PARAMETERS = "logcat_parameters";

  public static final String DEFAULT_LOGCAT_PARAMETERS = "*:I";

  protected static final int HISTORY_SIZE = 20;

  private Map<String, LogcatPoller> activeThreads = new HashMap<String, LogcatPoller>();

  @Override
  public String[] getValuePaths() {
    return new String[] { LOG_FIELD };
  }

  @Override
  public void initDefaultConfiguration(Bundle DEFAULT_CONFIGURATION) {
    DEFAULT_CONFIGURATION.putString(LOGCAT_PARAMETERS,
        DEFAULT_LOGCAT_PARAMETERS);
  }

  @Override
  public void onConnected() {
  }

  @Override
  public final void register(String id, String valuePath, Bundle configuration) {
    Log.d(TAG, "Logcat got registration for: " + id + ", conf: "
        + configuration.getString(LOGCAT_PARAMETERS));
    LogcatPoller logcatPoller = new LogcatPoller(id, valuePath,
        configuration);
    activeThreads.put(id, logcatPoller);
    logcatPoller.start();
  }

  @Override
  public final void unregister(String id) {
    activeThreads.remove(id).terminate();
  }

  class LogcatPoller extends Thread {

    private String id;
    private Bundle configuration;
    private String valuePath;
    private Process process;

    LogcatPoller(String id, String valuePath, Bundle configuration) {
      this.id = id;
      this.configuration = configuration;
      this.valuePath = valuePath;
    }

    public void terminate() {
      process.destroy();
    }

    public void run() {
      new Thread() {
        public void run() {
          String parameters = configuration
              .getString(LOGCAT_PARAMETERS);
          if (parameters == null) {
            parameters = mDefaultConfiguration
                .getString(LOGCAT_PARAMETERS);
          }
          try {
            process = Runtime
                .getRuntime()
                .exec(new String[] { "/system/bin/sh", "-c",
                    "/system/bin/logcat -s " + parameters });
            BufferedReader reader = new BufferedReader(
                new InputStreamReader(process.getInputStream()));
            String line = null;
            while ((line = reader.readLine()) != null) {
              System.out.println("line: " + line);
              long now = System.currentTimeMillis();
              putValueTrimSize(valuePath, id, now, line,
                  HISTORY_SIZE);
            }
            reader.close();
          } catch (IOException e) {
            e.printStackTrace();
          }
        }
      }.start();

    }

  }

  @Override
  public void onDestroySensor() {
    for (LogcatPoller logcatPoller : activeThreads.values()) {
      logcatPoller.terminate();
    }
  };

}




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