package cn.android.aa;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.hardware.SensorListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
public class aa extends Activity {
private SensorManager sensorManager;
private SimpleView simpleView;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//获取系统给我们提供的传感器
sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);
simpleView = new SimpleView(this, sensorManager);
setContentView(simpleView);
}
//重新回到Activity界面时开始监听
@Override protected void onResume() {
super.onResume();
sensorManager.registerListener(simpleView, SensorManager.SENSOR_ORIENTATION,SensorManager.SENSOR_DELAY_FASTEST);
}
//Activity停止时注销监听
@Override protected void onStop() {
super.onStop();
sensorManager.unregisterListener(simpleView); }
}
class SimpleView extends View implements SensorListener{
SensorManager sensorManager;
private Paint mPaint = new Paint();
private Path mPath = new Path();
private float[] mValues;
public SimpleView(Context context,SensorManager sensorManager) {
super(context);
this.sensorManager=sensorManager;
mPath.moveTo(0, -50);
mPath.lineTo(-20, 60);
mPath.lineTo(0, 50);
mPath.lineTo(20, 60);
mPath.close();
}
@Override public void onAccuracyChanged(int sensor, int accuracy) {
}
@Override public void onSensorChanged(int sensor, float[] values) {
mValues = values;
invalidate();
}
@Override public void onDraw(Canvas canvas){
Paint paint = mPaint;
canvas.drawColor(Color.WHITE);
paint.setAntiAlias(true);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.FILL);
int w = canvas.getWidth();
int h = canvas.getHeight();
int cx = w / 2;
int cy = h / 2;
canvas.translate(cx, cy);
if (mValues != null) {
canvas.rotate(-mValues[0]+180.0f);
} canvas.drawPath(mPath, mPaint);
}
@Override protected void onAttachedToWindow() {
super.onAttachedToWindow(); }
@Override protected void onDetachedFromWindow() {
super.onDetachedFromWindow(); }
}