Updated Sensor Samples to newest API

Change-Id: I88c0ce08232fed34aa99c97385155220e7d9abff
This commit is contained in:
Christian Mehlmauer
2010-05-18 23:40:33 +02:00
parent ec867a8c35
commit 707eb2ffec
3 changed files with 57 additions and 66 deletions

View File

@@ -16,15 +16,13 @@
package com.example.android.apis.graphics; package com.example.android.apis.graphics;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.graphics.*; import android.graphics.*;
import android.hardware.SensorListener; import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager; import android.hardware.SensorManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.util.Config; import android.util.Config;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
@@ -34,22 +32,21 @@ public class Compass extends GraphicsActivity {
private static final String TAG = "Compass"; private static final String TAG = "Compass";
private SensorManager mSensorManager; private SensorManager mSensorManager;
private Sensor mSensor;
private SampleView mView; private SampleView mView;
private float[] mValues; private float[] mValues;
private final SensorListener mListener = new SensorListener() { private final SensorEventListener mListener = new SensorEventListener() {
public void onSensorChanged(SensorEvent event) {
public void onSensorChanged(int sensor, float[] values) { if (Config.LOGD) Log.d(TAG,
if (Config.LOGD) Log.d(TAG, "sensorChanged (" + values[0] + ", " + values[1] + ", " + values[2] + ")"); "sensorChanged (" + event.values[0] + ", " + event.values[1] + ", " + event.values[2] + ")");
mValues = values; mValues = event.values;
if (mView != null) { if (mView != null) {
mView.invalidate(); mView.invalidate();
} }
} }
public void onAccuracyChanged(int sensor, int accuracy) { public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
} }
}; };
@@ -57,6 +54,7 @@ public class Compass extends GraphicsActivity {
protected void onCreate(Bundle icicle) { protected void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
mView = new SampleView(this); mView = new SampleView(this);
setContentView(mView); setContentView(mView);
} }
@@ -66,8 +64,8 @@ public class Compass extends GraphicsActivity {
{ {
if (Config.LOGD) Log.d(TAG, "onResume"); if (Config.LOGD) Log.d(TAG, "onResume");
super.onResume(); super.onResume();
mSensorManager.registerListener(mListener,
SensorManager.SENSOR_ORIENTATION, mSensorManager.registerListener(mListener, mSensor,
SensorManager.SENSOR_DELAY_GAME); SensorManager.SENSOR_DELAY_GAME);
} }

View File

@@ -16,22 +16,21 @@
package com.example.android.apis.graphics; package com.example.android.apis.graphics;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.graphics.*; import android.graphics.*;
import android.hardware.SensorListener; import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager; import android.hardware.SensorManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.util.Config; import android.util.Config;
import android.util.Log;
import android.view.View; import android.view.View;
public class SensorTest extends GraphicsActivity { public class SensorTest extends GraphicsActivity {
private final String TAG = "SensorTest";
private SensorManager mSensorManager; private SensorManager mSensorManager;
private Sensor mSensor;
private SampleView mView; private SampleView mView;
private float[] mValues; private float[] mValues;
@@ -76,29 +75,31 @@ public class SensorTest extends GraphicsActivity {
} }
}; };
private final SensorListener mListener = new SensorListener() { private final SensorEventListener mListener = new SensorEventListener() {
private final float[] mScale = new float[] { 2, 2.5f, 0.5f }; // accel private final float[] mScale = new float[] { 2, 2.5f, 0.5f }; // accel
private float[] mPrev = new float[3]; private float[] mPrev = new float[3];
private long mLastGestureTime;
public void onSensorChanged(int sensor, float[] values) { public void onSensorChanged(SensorEvent event) {
boolean show = false; boolean show = false;
float[] diff = new float[3]; float[] diff = new float[3];
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
diff[i] = Math.round(mScale[i] * (values[i] - mPrev[i]) * 0.45f); diff[i] = Math.round(mScale[i] * (event.values[i] - mPrev[i]) * 0.45f);
if (Math.abs(diff[i]) > 0) { if (Math.abs(diff[i]) > 0) {
show = true; show = true;
} }
mPrev[i] = values[i]; mPrev[i] = event.values[i];
} }
if (show) { if (show) {
// only shows if we think the delta is big enough, in an attempt // only shows if we think the delta is big enough, in an attempt
// to detect "serious" moves left/right or up/down // to detect "serious" moves left/right or up/down
android.util.Log.e("test", "sensorChanged " + sensor + " (" + values[0] + ", " + values[1] + ", " + values[2] + ")" android.util.Log.e(TAG, "sensorChanged " + event.sensor.getName() +
+ " diff(" + diff[0] + " " + diff[1] + " " + diff[2] + ")"); " (" + event.values[0] + ", " + event.values[1] + ", " +
event.values[2] + ")" + " diff(" + diff[0] +
" " + diff[1] + " " + diff[2] + ")");
} }
long now = android.os.SystemClock.uptimeMillis(); long now = android.os.SystemClock.uptimeMillis();
@@ -129,11 +130,7 @@ public class SensorTest extends GraphicsActivity {
} }
} }
private long mLastGestureTime; public void onAccuracyChanged(Sensor sensor, int accuracy) {
public void onAccuracyChanged(int sensor, int accuracy) {
// TODO Auto-generated method stub
} }
}; };
@@ -141,28 +138,24 @@ public class SensorTest extends GraphicsActivity {
protected void onCreate(Bundle icicle) { protected void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mView = new SampleView(this); mView = new SampleView(this);
setContentView(mView); setContentView(mView);
// android.util.Log.d("skia", "create " + mSensorManager); if (Config.LOGD) android.util.Log.d(TAG, "create " + mSensorManager);
} }
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
mSensorManager.registerListener(mListener, mSensor, SensorManager.SENSOR_DELAY_FASTEST);
int mask = 0; if (Config.LOGD) android.util.Log.d(TAG, "resume " + mSensorManager);
// mask |= SensorManager.SENSOR_ORIENTATION;
mask |= SensorManager.SENSOR_ACCELEROMETER;
mSensorManager.registerListener(mListener, mask, SensorManager.SENSOR_DELAY_FASTEST);
// android.util.Log.d("skia", "resume " + mSensorManager);
} }
@Override @Override
protected void onStop() { protected void onStop() {
mSensorManager.unregisterListener(mListener); mSensorManager.unregisterListener(mListener);
super.onStop(); super.onStop();
// android.util.Log.d("skia", "stop " + mSensorManager); if (Config.LOGD) android.util.Log.d(TAG, "stop " + mSensorManager);
} }
private class SampleView extends View { private class SampleView extends View {
@@ -182,7 +175,8 @@ public class SensorTest extends GraphicsActivity {
mPath.close(); mPath.close();
} }
@Override protected void onDraw(Canvas canvas) { @Override
protected void onDraw(Canvas canvas) {
Paint paint = mPaint; Paint paint = mPaint;
canvas.drawColor(Color.WHITE); canvas.drawColor(Color.WHITE);
@@ -216,4 +210,3 @@ public class SensorTest extends GraphicsActivity {
} }
} }
} }

View File

@@ -20,9 +20,10 @@ import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager; import android.hardware.SensorManager;
import android.hardware.SensorListener;
import android.util.Log;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Color; import android.graphics.Color;
@@ -47,13 +48,10 @@ OS / Sensors
* </table> * </table>
*/ */
public class Sensors extends Activity { public class Sensors extends Activity {
/** Tag string for our debug logs */
private static final String TAG = "Sensors";
private SensorManager mSensorManager; private SensorManager mSensorManager;
private GraphView mGraphView; private GraphView mGraphView;
private class GraphView extends View implements SensorListener private class GraphView extends View implements SensorEventListener
{ {
private Bitmap mBitmap; private Bitmap mBitmap;
private Paint mPaint = new Paint(); private Paint mPaint = new Paint();
@@ -172,29 +170,29 @@ public class Sensors extends Activity {
} }
} }
public void onSensorChanged(int sensor, float[] values) { public void onSensorChanged(SensorEvent event) {
//Log.d(TAG, "sensor: " + sensor + ", x: " + values[0] + ", y: " + values[1] + ", z: " + values[2]); //Log.d(TAG, "sensor: " + sensor + ", x: " + values[0] + ", y: " + values[1] + ", z: " + values[2]);
synchronized (this) { synchronized (this) {
if (mBitmap != null) { if (mBitmap != null) {
final Canvas canvas = mCanvas; final Canvas canvas = mCanvas;
final Paint paint = mPaint; final Paint paint = mPaint;
if (sensor == SensorManager.SENSOR_ORIENTATION) { if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {
for (int i=0 ; i<3 ; i++) { for (int i=0 ; i<3 ; i++) {
mOrientationValues[i] = values[i]; mOrientationValues[i] = event.values[i];
} }
} else { } else {
float deltaX = mSpeed; float deltaX = mSpeed;
float newX = mLastX + deltaX; float newX = mLastX + deltaX;
int j = (sensor == SensorManager.SENSOR_MAGNETIC_FIELD) ? 1 : 0; int j = (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) ? 1 : 0;
for (int i=0 ; i<3 ; i++) { for (int i=0 ; i<3 ; i++) {
int k = i+j*3; int k = i+j*3;
final float v = mYOffset + values[i] * mScale[j]; final float v = mYOffset + event.values[i] * mScale[j];
paint.setColor(mColors[k]); paint.setColor(mColors[k]);
canvas.drawLine(mLastX, mLastValues[k], newX, v, paint); canvas.drawLine(mLastX, mLastValues[k], newX, v, paint);
mLastValues[k] = v; mLastValues[k] = v;
} }
if (sensor == SensorManager.SENSOR_MAGNETIC_FIELD) if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
mLastX += mSpeed; mLastX += mSpeed;
} }
invalidate(); invalidate();
@@ -202,9 +200,7 @@ public class Sensors extends Activity {
} }
} }
public void onAccuracyChanged(int sensor, int accuracy) { public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
} }
} }
@@ -227,9 +223,13 @@ public class Sensors extends Activity {
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
mSensorManager.registerListener(mGraphView, mSensorManager.registerListener(mGraphView,
SensorManager.SENSOR_ACCELEROMETER | mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_MAGNETIC_FIELD | SensorManager.SENSOR_DELAY_FASTEST);
SensorManager.SENSOR_ORIENTATION, mSensorManager.registerListener(mGraphView,
mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(mGraphView,
mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_FASTEST); SensorManager.SENSOR_DELAY_FASTEST);
} }