Android Open Source - wiigee_android_test Android Device






From Project

Back to project page wiigee_android_test.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project wiigee_android_test 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

/*
 * wiigee - accelerometerbased gesture recognition
 * Copyright (C) 2007, 2008, 2009 Benjamin Poppinga
 *//  w ww.  j a  v a2  s . c  o m
 * Developed at University of Oldenburg
 * Contact: wiigee@benjaminpoppinga.de
 *
 * This file is part of wiigee.
 *
 * wiigee is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

package org.wiigee.device;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.Log;

/**
 * Device representation for Android Mobile Phones, like HTC Magic. Since
 * the API for Sensor values changed within the last Android SDKs this
 * should only compile for Android SDKs >= 1.5.
 *
 * @author Maarten 'MrSnowflake' Krijn
 * @author zl25drexel
 * @author Benjamin 'BePo' Poppinga
 *
 */
public class AndroidDevice extends Device implements SensorEventListener {
  static final String TAG = "AndroidDevice";

    private float x0, y0, z0, x1, y1, z1;
    private SensorManager sensorManager;

    public AndroidDevice(Context context) {
        super(true);
        // 'Calibrate' values
        this.x0 = 0;
        this.y0 = -SensorManager.STANDARD_GRAVITY;
        this.z0 = 0;
        this.x1 = SensorManager.STANDARD_GRAVITY;
        this.y1 = 0;
        this.z1 = SensorManager.STANDARD_GRAVITY;

        // request acceleration updates
        this.sensorManager = (SensorManager)
                context.getSystemService(Context.SENSOR_SERVICE);
        Sensor accSensor = this.sensorManager.
                getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        this.sensorManager.
                registerListener(this, accSensor,
                SensorManager.SENSOR_DELAY_GAME);
        
//        Log.i(TAG, "initialized");
    }

    public void close() {
        if(this.sensorManager!=null)
            this.sensorManager.unregisterListener(this);
    }

    public void onSensorChanged(SensorEvent sevent) {
        Sensor sensor = sevent.sensor;
        float[] values = sevent.values;

        if (this.accelerationEnabled && sensor.getType() == Sensor.TYPE_ACCELEROMETER) {

            double x, y, z;
            float xraw, yraw, zraw;
                /*
                 * calculation of acceleration vectors starts here. further
                 * information about normation exist in the public papers or
                 * the various www-sources.
                 *
                 */
                xraw = values[SensorManager.DATA_X];
                yraw = values[SensorManager.DATA_Y];
                zraw = values[SensorManager.DATA_Z];

                x = (double) (xraw - x0) / (double) (x1 - x0);
                y = (double) (yraw - y0) / (double) (y1 - y0);
                z = (double) (zraw - z0) / (double) (z1 - z0);
                
                this.fireAccelerationEvent(new double[] {x, y, z});
//                Log.i(TAG, "accel ("+x +","+y +","+z);
        }
    }

    public void onAccuracyChanged(Sensor arg0, int arg1) {
        // Nothing to do.
    }

}




Java Source Code List

asus4.wiigeeandroid.Logger.java
asus4.wiigeeandroid.MainActivity.java
org.wiigee.control.AndroidWiigee.java
org.wiigee.control.Wiigee.java
org.wiigee.device.AndroidDevice.java
org.wiigee.device.Device.java
org.wiigee.event.AccelerationEvent.java
org.wiigee.event.AccelerationListener.java
org.wiigee.event.ActionStartEvent.java
org.wiigee.event.ActionStopEvent.java
org.wiigee.event.ButtonListener.java
org.wiigee.event.ButtonPressedEvent.java
org.wiigee.event.ButtonReleasedEvent.java
org.wiigee.event.GestureEvent.java
org.wiigee.event.GestureListener.java
org.wiigee.event.MotionStartEvent.java
org.wiigee.event.MotionStopEvent.java
org.wiigee.filter.DirectionalEquivalenceFilter.java
org.wiigee.filter.Filter.java
org.wiigee.filter.HighPassFilter.java
org.wiigee.filter.IdleStateFilter.java
org.wiigee.filter.LowPassFilter.java
org.wiigee.filter.MotionDetectFilter.java
org.wiigee.logic.Classifier.java
org.wiigee.logic.GestureModel.java
org.wiigee.logic.Gesture.java
org.wiigee.logic.HMM.java
org.wiigee.logic.PreciseHMM.java
org.wiigee.logic.ProcessingUnit.java
org.wiigee.logic.Quantizer.java
org.wiigee.logic.TriggeredProcessingUnit.java
org.wiigee.util.FileIO.java
org.wiigee.util.Log.java