SDK Simples 之 Accelerometer Play

Accelerometer Play是一个加速度计的Demo,具体位置为<sdk>/samples/android-<version>/,工程运行的效果如图:
SDK Simples 之 Accelerometer Play_第1张图片
图1 运行效果图

将源码导入到Eclipse中 ,目录结构为:

图2 目录结构

AndroidManifest.xml 
    所有添加的Android的四大组件,都需要在该文件中进行注册,该文件中还涉及到apk的一些权限等,由于该工程只有一个Activity,该文件比较简单。

图3 AndroidManifest.xml
AccelerometerPlayActivity
    整个工程的布局文件(main.xml)非常简单,实际加载的是自定义的SimulationView,所以整个程序最核心的内容,其实就是这个自定义的view。类图如下:
SDK Simples 之 Accelerometer Play_第2张图片
图4 AccelerometerPlayActivity类图
SensorEventListener接口
该接口的用途是:当传感器的值发生变化时,接口从 SensorManager发出的通知。它定义了两个方法:
 public void onSensorChanged(SensorEvent event);
 public void onAccuracyChanged(Sensor sensor, int accuracy);    
一个是当传感器的值发生变化时调用的方法,一个是当传感器的精度发生变化时调用的方法。

Particle类

图5 Particle类图
    每一个小球就记录当前位置和上一次的位置,可以到达的位置,以及加速度。为了接近真实环境,每个小球都有自己的摩擦系数。这个摩擦系数在构造函数中模拟产生。这个类中有两个重要的方法:
public void computePhysics(float sx, float sy, float dT, float dTC)
public void resolveCollisionWithBounds()
第一方法是通过物理定理(大概是 F= ma,其中F是摩擦力f和重力G的合力,计算出小球水平和垂直的位置 )计算出小球的当前位置,可以到达的位置,上一次的位置。
第二个方法是限定小球的滚动范围,保证小球在屏幕范围内滚动。

ParticleSystem类

图6  ParticleSystem类图
    小球 Particle的集合类,常量 NUM_PARTICLES 定义了小球的数量,其中有一个重要的方法:
public void update(float sx, float sy, long now) 通过迭代的方式来更新小球的位置。

SimulationView类
该类是一个自定义的控件,继承了android.view.View ,实现了 SensorEventListener接口,其中有几个重要的方法:
 public void startSimulation();
该方法用来注册一个SensorManager,注册后可以获取重力加速度,同时设置 SensorEventListener, 传感器的值发生变化时调用注册的listener中的方法。
 public void stopSimulation()
解除注册的 SensorManager,当推出当前Activity时,调用该方法,否则会抛出异常。
protected void onDraw(Canvas canvas)
这个方法是重写了View中的方法,自定义控件都要重写这个方法,在这个方法中,通过计算出的小球的位置,将小球,及背景及时的画在屏幕上。





你可能感兴趣的:(类,传感器,Google,sdk,play,ACCELEROMETER)