zoukankan      html  css  js  c++  java
  • Android开发之重力传感器

    重力传感器与方向传感器的开发步骤类似,只要理清了期中的x,y,z的值之后就可以根据他们的变化来进行编程了,首先来看一副图

    5a48dd2dnaf40a3a018ef&690.jpg

     

    假设当地的重力加速度值为g

    当手机正面朝上的时候,z的值为q,反面朝上的时候,z的值为-g

    当手机右侧面朝上的时候,x的值为g,右侧面朝上的时候,x的值为-g

    当手机上侧面朝上的时候,y的值为g,右侧面朝上的时候,y的值为-g

        了解了重力传感器中X,Y,Z的含义之后下面我们就开始学习如何使用

    首先我们创建一个传感器管理器和一个传感器监听器,管理器用来管理传感器以及创建各种各样的传感器,监听器用来监视传感器的变化并且进行相应的操作

    private SensorManager sensorManager;

    private MySensorEventListener mySensorEventListener;

    mySensorEventListener= new MySensorEventListener();//这个监听器当然是我们自己定义的,在重力感     应器感应到手机位置有变化的时候,我们可以采取相应的操作,这里紧紧是将x,y,z的值打印出来

    private final class MySensorEventListener implements  SensorEventListener{

     

    @Override

    //可以得到传感器实时测量出来的变化值

    public void onSensorChanged(SensorEvent event) {

    //重力传感器

    if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){

    float x = event.values[SensorManager.DATA_X];

    float y = event.values[SensorManager.DATA_Y];

    float z = event.values[SensorManager.DATA_Z];

    //tv_accelerometer是界面上的一个TextView标签,不再赘述

    tv_orientation.setText("Orientation:"+x+","+y+","+z);

    }

    }

     

    我们在onResume方法中创建重力传感器,并向系统注册监听器

    protected void onResume() {

        Sensor sensor_accelerometer=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

        sensorManager.registerListener(mySensorEventListener,sensor_accelerometer,   SensorManager.SENSOR_DELAY_UI);

     

    super.onResume();

    }

    最后我们在onPause()中注销所有传感器的监听,释放重力感应器资源!

    protected void onPause() {

    /注销所有传感器的监听

    sensorManager.unregisterListener(mySensorEventListener);

    super.onPause();

    }

    到此,有关重力传感器的介绍完毕!

  • 相关阅读:
    Python UDP Server Client
    Django点滴(五)建模
    机房收费系统中的数据库操作
    一个普通的工科应届生
    Zebra命令模式分析(二)[补]
    php 备份mysql数据库(joomla数据库可直接使用,其他数据库稍作修改即可)
    dalvik直接跑hello world并用jdb调试
    动态规划小结(1)最大子段和
    struts返回对象json格式数据
    有关public接口和友元类的讨论
  • 原文地址:https://www.cnblogs.com/xiaoxiaojia/p/5485452.html
Copyright © 2011-2022 走看看