diff options
| author | Mathias Agopian <mathias@google.com> | 2010-08-16 12:55:18 -0700 |
|---|---|---|
| committer | Mathias Agopian <mathias@google.com> | 2010-08-16 12:55:18 -0700 |
| commit | a7c85d92351070605b93176c1f691f4f80321ad5 (patch) | |
| tree | c5665349a7859d9a5336af5af12ee380a8ab0a2e /samples | |
| parent | 8fc778984cd0b737df102fca14be7c1815505b80 (diff) | |
| download | android_development-a7c85d92351070605b93176c1f691f4f80321ad5.tar.gz android_development-a7c85d92351070605b93176c1f691f4f80321ad5.tar.bz2 android_development-a7c85d92351070605b93176c1f691f4f80321ad5.zip | |
Take screen rotation into account
Change-Id: I354c58eb1d28552d46b8fa269e12c00eaf6cbb99
Diffstat (limited to 'samples')
| -rw-r--r-- | samples/AccelerometerPlay/src/com/example/android/accelerometerplay/AccelerometerPlayActivity.java | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/samples/AccelerometerPlay/src/com/example/android/accelerometerplay/AccelerometerPlayActivity.java b/samples/AccelerometerPlay/src/com/example/android/accelerometerplay/AccelerometerPlayActivity.java index ed0605c16..d9ba954fc 100644 --- a/samples/AccelerometerPlay/src/com/example/android/accelerometerplay/AccelerometerPlayActivity.java +++ b/samples/AccelerometerPlay/src/com/example/android/accelerometerplay/AccelerometerPlayActivity.java @@ -30,7 +30,10 @@ import android.os.Bundle; import android.os.PowerManager; import android.os.PowerManager.WakeLock; import android.util.DisplayMetrics; +import android.view.Display; +import android.view.Surface; import android.view.View; +import android.view.WindowManager; /** * This is an example of using the accelerometer to integrate the device's @@ -49,6 +52,8 @@ public class AccelerometerPlayActivity extends Activity { private SimulationView mSimulationView; private SensorManager mSensorManager; private PowerManager mPowerManager; + private WindowManager mWindowManager; + private Display mDisplay; private WakeLock mWakeLock; /** Called when the activity is first created. */ @@ -62,6 +67,10 @@ public class AccelerometerPlayActivity extends Activity { // Get an instance of the PowerManager mPowerManager = (PowerManager) getSystemService(POWER_SERVICE); + // Get an instance of the WindowManager + mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); + mDisplay = mWindowManager.getDefaultDisplay(); + // Create a bright wake lock mWakeLock = mPowerManager.newWakeLock( PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName()); @@ -392,9 +401,33 @@ public class AccelerometerPlayActivity extends Activity { * record the accelerometer data, the event's timestamp as well as * the current time. The latter is needed so we can calculate the * "present" time during rendering. + * + * In this application, we need to take into account how the + * screen is rotated with respect to the sensors (which always + * return data in a coordinate space aligned to with the screen + * in its native orientation). + * */ - mSensorX = event.values[0]; - mSensorY = event.values[1]; + + switch (mDisplay.getRotation()) { + case Surface.ROTATION_0: + mSensorX = event.values[0]; + mSensorY = event.values[1]; + break; + case Surface.ROTATION_90: + mSensorX = -event.values[1]; + mSensorY = event.values[0]; + break; + case Surface.ROTATION_180: + mSensorX = -event.values[0]; + mSensorY = -event.values[1]; + break; + case Surface.ROTATION_270: + mSensorX = event.values[1]; + mSensorY = -event.values[0]; + break; + } + mSensorTimeStamp = event.timestamp; mCpuTimeStamp = System.nanoTime(); } |
