Back to project page flingbox.
The source code is released under:
GNU General Public License
If you think the Android project flingbox listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * Flingbox - An OpenSource physics sandbox for Google's Android * Copyright (C) 2009 Jon Ander Pealba & Endika Gutirrez *//from w w w . jav a 2 s . co m * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package edu.eside.flingbox.physics.gravity; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import edu.eside.flingbox.math.Vector2D; /** * Gravity Source defines a gravity vector. * */ public class GravitySource extends Vector2D implements SensorEventListener { /** Empirical value for a gravity multiply factor */ private static final float FACTOR = 80f; public static final float GRAVITY_SUN = 275.0f; public static final float GRAVITY_MERCURY = 3.7f; public static final float GRAVITY_VENUS = 8.87f; public static final float GRAVITY_EARTH = 9.80665f; public static final float GRAVITY_MARS = 3.71f; public static final float GRAVITY_JUPITER = 23.12f; public static final float GRAVITY_SATURN = 8.96f; public static final float GRAVITY_NEPTUNE = 11.0f; public static final float GRAVITY_PLUTO = 0.6f; public static final float GRAVITY_MOON = 1.6f; public static final float GRAVITY_DEATH_STAR = 3.5303614E-7f; public static GravitySource getAccelerometerBasedGravity(Context c) { // Get Manager from context SensorManager sensorManager = (SensorManager) c.getSystemService(Context.SENSOR_SERVICE); // Request Accelerometer Sensor accelSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); GravitySource gravity = new GravitySource(); // Set accelerometer event callback sensorManager.registerListener(gravity, accelSensor, SensorManager.SENSOR_DELAY_FASTEST); return gravity; } public static GravitySource getStaticGravity(Vector2D v) { return new GravitySource(v); } public static GravitySource getStaticGravity(float i, float j) { return new GravitySource(i, j); } private GravitySource() { super(); } private GravitySource(Vector2D v) { super(v.mul(FACTOR)); } private GravitySource(float i, float j) { super(i * FACTOR, j * FACTOR); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override public void onSensorChanged(SensorEvent event) { this.i = -event.values[SensorManager.DATA_X] * FACTOR; this.j = -event.values[SensorManager.DATA_Y] * FACTOR; } }