本文实例讲述了Android编程之方向传感器用法。分享给大家供大家参考,具体如下:
public class SensorHandActivity extends GraphicsActivity {
// 传感器管理对象
private SensorManager mSensorManager;
// 传感器类
private Sensor mSensor;
// 自定义绘制指针View
private MyCompassView mView;
private float[] mValues;
// 传感监听
private final SensorEventListener mSensorListener = new SensorEventListener() {
public void onSensorChanged(SensorEvent event) {
mValues = event.values;
if (mView != null) {
mView.invalidate();
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
mView = new MyCompassView(this);
setContentView(mView);
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(mSensorListener, mSensor,
SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onStop() {
// 在onStop方法中取消注册监听
mSensorManager.unregisterListener(mSensorListener);
super.onStop();
}
private class MyCompassView extends View {
// 定义画笔Paint
private Paint mPaint;
// 定义绘制指针的路径Path
private Path mPath;
public MyCompassView(Context context) {
super(context);
initPaintAndPath();
}
private void initPaintAndPath() {
// 初始化画笔
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(Color.BLACK);
mPaint.setStyle(Paint.Style.FILL);
// 初始化绘制路径
mPath = new Path();
mPath.moveTo(0, -50);// 移动到指点点
mPath.lineTo(-20, 60);// 用线条连接到指定点
mPath.lineTo(0, 50);
mPath.lineTo(20, 60);
mPath.close();// 关闭路径
}
@Override
protected void onDraw(Canvas canvas) {
// 设置画面背景
canvas.drawColor(Color.WHITE);
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]);
}
canvas.drawPath(mPath, mPaint);
}
}
}
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》、《Android资源操作技巧汇总》、《Android文件操作技巧汇总》、《Android开发入门与进阶教程》、《Android编程之activity操作技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。



