在Android中使用加速度传感器可以帮助我们识别手机的姿态及运动状态。
使用加速度传感器与其他传感器的方法大致相同,通过调用系统API就可以实现。分为以下几步:
1.获取SensorManager
2.使用SensorManager获取加速度传感器
3.创建自定义的传感器监听函数,并注册
4.相对应的,在合适位置实现注销监听器的调用

简单的代码如下:

public class MainActivity extends Activity {    private static final String TAG = "SensorTest";    private SensorManager mSensorManager;    private Sensor mAccelerometer;    private TestSensorListener mSensorListener;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initViews();        // 初始化传感器        mSensorListener = new TestSensorListener();        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);        mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);    }    @Override    protected void onResume() {        super.onResume();        // 注册传感器监听函数        mSensorManager.registerListener(mSensorListener, mAccelerometer, SensorManager.SENSOR_DELAY_UI);    }    @Override    protected void onPause() {        super.onPause();        // 注销监听函数        mSensorManager.unregisterListener(mSensorListener);    }    private void initViews() {        mSensorInfoA = (TextView) findViewById(R.id.sensor_info_a);    }    class TestSensorListener implements SensorEventListener {        @Override        public void onSensorChanged(SensorEvent event) {            // 读取加速度传感器数值,values数组0,1,2分别对应x,y,z轴的加速度            Log.i(TAG, "onSensorChanged: " + event.values[0] + ", " + event.values[1] + ", " + event.values[2]);        }        @Override        public void onAccuracyChanged(Sensor sensor, int accuracy) {            Log.i(TAG, "onAccuracyChanged");        }    }}

其中三个轴的方向如图所示:

由于手机会固定受到地球重力加速度,因此传感器的读数是受此影响后的数值。
假如我们的手机是垂直摆放,机头朝上。那么x,z轴均无加速度,y轴上会固定受到地球重力加速度的影响。
此时,由于y轴向上为正方向,因此重力加速度为负值,y轴的加速度就为:

ay=a(g)=a+9.81
因此竖直静止时,三轴的加速度近似于:
(ax,ay,az)=(0,9.81,0)
反之在垂直摆放,机头朝下(倒立摆放)时。y轴方向是向下的,因此这时地球加速度为 +9.81。这种情况下y轴的加速度:
ay=ag=a9.81
静止时有近似值:
(ax,ay,az)=(0,9.81,0)

更多相关文章

  1. Android加速度传感器 -- 抬手亮屏
  2. Android计步器开发
  3. Android——摇一摇
  4. Android传感器的介绍
  5. Android(安卓)利用方向传感器实现 指南针
  6. Android中传感器的一些功能
  7. android传感器模拟 SensorSimulator
  8. Android传感器介绍及指南针的实现
  9. Android指南针app的实现原理总结

随机推荐

  1. video for linux 编程的资料
  2. Android之——史上最简单自定义开关按钮
  3. Android Matirx的简介
  4. Android(安卓)中文API (32) —— TimePicke
  5. Android多进程模式
  6. Android中SQLite应用详解(sql访问数据库)
  7. Android待机的suspend_sys_sync_queue分
  8. Android的ScrollView和HorizontalScrollV
  9. Android中EventBus事件总线发送网络请求
  10. android 的线程模型和AsyncTask